当前位置:文档之家› OpenSSH配置

OpenSSH配置

1.1 什么是SSH ?传统的网络服务程序,如FTP、Pop和Telnet在传输机制和实现原理上是没有考虑安全机制的,其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,别有用心的人通过窃听等网络攻击手段非常容易地就可以截获这些数据、用户帐号和用户口令。

而且,这些网络服务程序的简单安全验证方式也有其弱点,那就是很容易受到“中间人“(man-in-the-middle)这种攻击方式的攻击。

所谓“中间人“的攻击方式,就是“中间人“冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。

服务器和你之间的数据传送被“中间人“一转手做了手脚之后,就会出现很严重的问题。

SSH是英文Secure Shell的简写形式。

通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人“这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。

SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的“通道“。

最初的SSH是由芬兰的一家公司开发的。

但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。

OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。

用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。

OpenSSH 2.x 同时支持SSH 1.x和2.x。

1.2 SSH协议的内容SSH协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现SSH的安全保密机制。

传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。

通常情况下,这些传输层协议都建立在面向连接的TCP 数据流之上。

用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。

连接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。

当安全的传输层连接建立之后,客户端将发送一个服务请求。

当用户认证层连接建立之后将发送第二个服务请求。

这就允许新定义的协议可以和以前的协议共存。

连接协议提供可用作多种目的通道,为设置安全交互Shell会话和传输任意的TCP/IP端口和X11连接提供标准方法。

1.3 SSH的安全验证从客户端来看,SSH提供两种级别的安全验证。

第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。

但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。

可能会有别的服务器在冒充真正的服务器,也就是受到“中间人“这种攻击方式的攻击。

第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。

如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。

服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。

如果两个密匙一致,服务器就用公有密匙加密“质询“(challenge)并把它发送给客户端软件。

客户端软件收到“质询“之后就可以用你的私人密匙解密再把它发送给服务器。

与第一种级别相比,第二种级别不需要在网络上传送用户口令。

但是整个登录的过程可能慢一些。

1.4 SSH的应用首先,SSH最常见的应用就是,用它来取代传统的Telnet、FTP等网络应用程序,通过SSH登录到远方机器执行你想进行的工作与命令。

在不安全的网路通讯环境中,它提供了很强的验证(authentication)机制与非常安全的通讯环境。

实际上,SSH开发者的原意是设计它来取代原UNIX系统上的rcp、rlogin、rsh等指令程序的;但经过适当包装后,发现它在功能上完全可以取代传统的Telnet、FTP等应用程序。

传统BSD 风格的r 系列指令(如rcp,rsh,rlogin)往往都被视为不安全的,很容易就被各种网络攻击手段所破解,几乎所有找得到有关UNIX安全的书或文件,都会一而再、再而三地警告系统管理者,留心r系列指令的设定,甚至要求系统管理者将r系列指令通通关闭。

而用来替代r系列指令的SSH,则在安全方面做了极大的强化,不但对通讯内容可以进行极为安全的加密保护,同时也强化了对身份验证的安全机制,它应用了在密码学(Cryptography)中已发展出来的数种安全加密机制,如Symmetric Key Cryptography,Asymmetric Key Cryptography,One-way Hash Function,Random- number Generation等,来加强对于身份验证与通讯内容的安全保护。

通讯时资料的加密有IDEA,three- key triple DES,DES,RC4-128,TSS,Blowfish 等数种多种安全加密算法可供选择,加密的key则是通过RSA 进行交换的。

资料的加密可以对抗IP spoofing,RSA 这种非对称性的加密机制则可用来对抗DNS spoofing与IP routing spoofing,同时RSA也可以进行对主机身份的验证。

其次,通过使用用SSH可以在本地主机和远程服务器之间设置“加密通道“,并且这样设置的“加密通道“可以跟常见的Pop应用程序、X应用程序、Linuxconf应用程序相结合,提供安全保障。

SSH的“加密通道“是通过“端口转发“来实现的。

你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道“。

然后只要连接到本地端口。

所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。

当然只有远程服务器上运行SSH服务器软件的时候“加密通道“才能工作。

2.1 openssh的安装和启动tony@tonybox:~$ sudo aptitude updatetony@tonybox:~$ sudo aptitude install openssh-serverReading package lists... DoneBuilding dependency tree... DoneReading extended state informationInitializing package states... DoneReading task descriptions... DoneBuilding tag database... DoneThe following NEW packages will be automatically installed: libedit2 openssh-clientThe following NEW packages will be installed:libedit2 openssh-client openssh-server0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded.Need to get 55.4kB/879kB of archives. After unpacking 2130kB will be used.Do you want to continue? [Y/n/?]y...Setting up openssh-server (4.3p2-5) ...Creating SSb RSA key; this may take some time ...Creating SSb DSA key; this may take some time ...Restarting OpenBSD Secure Shell server: sshd.//创建服务器RSA/DSA密钥对tony@tonybox:~$安装完毕后默认生成以下配制文件:tony@tonybox:~$ ls /etc/ssh -ltotal 160-rw-r--r-- 1 root root 132839 2006-10-07 23:10 moduli //ssh 服务器的Diffie-Hellman密钥文件-rw-r--r-- 1 root root 1423 2006-10-07 23:10 ssh_config //ssh 客户端配置文件-rw-r--r-- 1 root root 1874 2006-10-20 17:45 sshd_config //ssh 服务器配置文件-rw------- 1 root root 668 2006-10-20 17:46 ssh_host_dsa_key //ssh 服务器dsa算法私钥-rw-r--r-- 1 root root 602 2006-10-20 17:46 ssh_host_dsa_key.pub //ssh服务器dsa算法公钥-rw------- 1 root root 1679 2006-10-20 17:46 ssh_host_rsa_key //ssh服务器rsa算法私钥-rw-r--r-- 1 root root 394 2006-10-20 17:46 ssh_host_rsa_key.pub //ssh服务器rsa算法公钥tony@tonybox:~$如果没有特别要求使用默认设置即可满足使用要求.启动ssh服务$ sudo /etc/init.d/ssh start停止ssh服务$ sudo /etc/init.d/ssh stop重启ssh服务$ sudo /etc/init.d/ssh restart使用ssh首次连接一个远程ssh服务器时,会出现类似下边的信息。

这是因为ssh不能识别这台主机,键入yes将会把这台服务器的信息写入/.ssh/known_hosts文件,下次连入这台远程服务器时就不会出现这类信息。

tony@tonybox:~$ ssh root@192.168.102.50The authenticity of host '192.168.102.50 (192.168.102.50)' can't be established.RSA key fingerprint is c6:d4:e7:23:03:ce:15:2c:08:ec:39:7e:52:29:a5:a6.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.102.50' (RSA) to the list of known hosts.root@192.168.102.50's password:******Last login: Thu Oct 26 10:38:41 2006Linux vmdebian 2.6.16-2-486 #1 Fri Aug 18 18:39:04 UTC 2006 i686The programs included with the Debian GNU/Linux system are free software;the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.vmdebian:~#2.2 默认配置默认sshd_config文件# Package generated configuration file# See the sshd(8) manpage for details# What ports, IPs and protocols we listen forPort 22#默认使用22端口# Use these options to restrict which interfaces/protocols sshd will bind to#ListenAddress ::#ListenAddress 0.0.0.0Protocol 2#使用ssb协议# HostKeys for protocol version 2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_key#主机密钥存储在此#Privilege Separation is turned on for security UsePrivilegeSeparation yes#需要sshd用户启动ssh服务# Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600ServerKeyBits 768服务器在启动时生成这个密钥。

相关主题