面对网络安全SSH安装防御详解
【IT168 专稿】SSH为英文Secure Shell的简写形式,大家所熟悉的Telnet服务是非常脆弱的,经常收到来自网络的攻击,那是因为它以明文的方式在网络间传输用户名及口令,这样就为那些非法的窃取提供了非常优良的条件。SSH服务可通过对传输的所有数据进行加密和压缩,不仅提高了客户端与服务器间连接的安全性,同时还加快了数据的传输速度。SSH提供的功能很多,既可以代替Telnet,还可以为FTP、PoP以及PPP等应用层协议提供一个安全的"通道",还能够防止DNS欺骗和IP欺骗等。
SSH的安装
SSH软件包一般由服务器端和客户端两部分组成。无论Windows还是Unix/Linux都是将这两部分分开打包的。不同之处在于,在Windows系统中,服务器端只能安装在NT、2000以上的环境中,而客户端是没有这样的限制的,支持所有的Windows操作系统。若您将SSH2以上的版本用于商业用途的话,是收费的(下载地址:http://www.ssh.com/downloads/或ftp://ftp.ssh.com/pub/ssh)。而也有免费的SSH1,有兴趣体验的朋友可以下载安装体会其功能和特点。下载了正确的安装文件后,接下来我们将以SSH2为例介绍如何在Windows和Unix/Linux系统中安装。
1、在Windows系统环境中安装:
Windos系统的安装非常简单,只要点击“Next”即可,只要下载了正确的安装文件,一般都没有问题。可供选择的服务器端有:SSHWinServer.exe和Van Dyke提供的Vshell等,Vshell的下载地址为:http://www.vandyke.com/download/index.html。
2、在Unix/Linux下的安装步骤:
首先以超级用户(root)身份登录:
# gzip –cd ssh-3.2.9.1.tar.gz |tar xvf –
# cd ssh-3.2.9.1
# ./configure
# make
# make install
这样就将服务器和客户端的软件包一起安装完成了,有关的程序都放置在/usr/local/bin下,包括ssh、sftp、sshd2、ssh-keygen等。
配置SSH
1、服务器端产生用户的加密密钥和对外公开使用的公钥。在Unix/Linux环境下,产生密钥的方法如下:
local# ssh-keygen
Generating 1024-bit dsa key pair
1 oOo.oOo.o
Key generated.
1024-bit dsa, teng@ns, Fri Oct 20 2000 17:27:05
Passphrase :************ /*在此输入你的密码,以后访问这台服务器时需要用到。
Again :************ /*
Private key saved to /home1/teng/.ssh2/id_dsa_1024_a
Public key saved to /home1/teng/.ssh2/id_dsa_1024_a.pub
此处会要求用户输入认证字符串,也就是password(密码),这个密码比较长,一般要求在20个字符以内。再次输入确认正确之后,SSH系统则生成一对密钥和公钥。将公钥复制到本地,用来将客户端与服务器之间发送的数据信息进行解密。也可以不复制,那么在用户第一次登录时,服务器会将SSH的公钥自动推送到客户机,使客户端能够对服务器传输的信息进行解密。
2、客户端软件可以产生用户的加密密钥和公钥。客户端产生自己的密钥和公钥的方法与服务器端产生密钥的方法相同。
3、需要说明的是,在Windows环境中, SSH的客户端软件都采用自己生成的方法,具体情况各不相同,但是所有的支持SSH的客户端都必须生成。以SSH 3.2.9为例说明如下: 图1
![]() |
SSH客户端主界面
打开菜单:Edit→Settings→Globe settings→User Authentication→keys(图2)
![]() |
SSH设置窗口
→Generate New...(图3),
![]() |
Key属性选择
按照提示操作,SSH客户端软件会自动产生新的公钥对和密钥。
用户选择的Key长度值越大,生成Key密钥的时间也相应越长。最终完成后,将客户机生成的公钥复制到服务端的主机上用户的目录中(在Unix/Linux下应为/home/usrname/.ssh2目录中)。不同版本对文件名的要求各不相同,用户应参考安装说明进行配置。
4、启动SSH服务比较简单,在Windows环境中可以运行程序组中的Start SSH2 Server。
在Unix/Linux环境下,服务器程序一般存放在/usr/local/sbin目录下,手动输入“# /usr/local/bin/sshd2”即可启动,也可以将“# /usr/local/bin/sshd2”加入到rc.local文件中,这样每次启动的时候SSHD就可以一起启动了。
5、当完成以上的设置步骤后,使用SSH相对就比较简单,尤其是使用Windows系统的用户,在此不再复述,需要使用的朋友可以到相关的网站(http://www.chinaitlab.com/www/news/article_show.asp?id=6296)查看。
加固SSH安全
为了使我们的数据和信息更加安全,那么我们要经常查看日志文件,通过日志可以看到是否有人想要破解SSH服务的登录密码。如果有,我们就需要屏蔽这样的攻击。当然,没有发现攻击的话,也可以通过配置来增强SSH的安全性,主要是通过对SSHD_Config文件的设置,具体措施如下:
1、更改端口:在Nuix/Linux下,找到SSHD_Config文件,一般是在/etc/ssh/目录下,用vi打开进行编辑。找到Port,去掉它前面的注释,然后将默认的22端口改成你想要使用的端口,重新启动SSH或系统后就可以生效了。
2、限制登录会话时间:同样打开SSHD_Config文件,找到“LoginGraceTime 120”,将默认的120(秒)改成你想设置的时间,达到规定时间时,SSH将结束此次登录会话,设置为“0”则不对登录时间进行限制,建议设置为60-120之间。
3、限制同时发生的未验证的并发量:找到“MaxStartups 10”,默认值为10,这里可以根据客户数量的实际情况更改,建议设置为5左右的值,这样可以避免过多的未经验证的登录。
4、禁止登录的时候使用空密码,找到“PermitEmptyPasswords”将其修改为“PermitEmptyPasswords no”。
5、找到“PermitRootlogin”将其修改为“PermitRootlogin no”, 禁止ROOT用户直接登录。
6、还通过防火墙的配置来提高SSH服务的安全性,其原理是通过检查auth.log,如果某一个ip登录失败达到或者超过5次,系统就判定认为是非法的登录。不同的防火墙,配置不尽相同,大家可以参考防火墙的手册进行相关的配置。
后记:虽然我们通过SSH的应用以及很多安全方面的配置,增强了信息传输和提供服务的安全性,但是最重要的还是让使用者能够不断地培养更高地安全意识!矛与盾的较量还将继续,技术的进步同样也是用无止境的,希望大家都能与时俱进,应用新的安全技术,保障集体或个人的信息安全!
