openssh指南 - cunshen
1:传统的unix所提供的telnet,ftp,rlogin等标准服务有着诸多的安全隐患:没有有效的认证机制、网络连接中所有的传输数据(包括账号口令!)均为明文、容易导致各种形式spoof 数据等。近期更是发现了各种版本的unix 系统的telnet,ftp都存在溢出问题,使攻击者通过这些服务得到超级用户的权限.
为了验证这一点,可以作个试验,我们从一台主机192.168.1.1上telnet登录到另外一台主机192.168.1.2。同时我们在这个网段的一台主机上起一个包分析软件ngrep来看看能抓到什么东西.
捕获的包纪录见文末的附1:
从捕获的纪录中我们看到在这个很短的包纪录中就成功的抓到了登录的账号:go,以及口令:abcde!, 同时可以注意到解获得所有的数据包均为明文传输!
2:为什么要使用ssh,优点
一个好的替代方式就是使用ssh,ssh使用成熟的public/private key机制对网络中数据包进行加密,使处于两端的数据通信能够在一个加密通道中进行,从而从根本上解决了网络明文数据传输的问题,同样是上面的例子,我们这次使用ssh从192.168.1.1.登录192.168.1.2,再次捕获数据包看看:
Yiming.zz.ha.cn# ngrep host 192.168.1.1
interface: hme0 (192.168.1.0/255.255.255.224)
filter: ip and ( host 192.168.1.1 )
T 192.168.2.1:22 -> 192.168.1.1:44706 [AP]
…,….”{hB.E.?B..8bmA[.e餗……..5.L0..%..).jLo..#D?S………).(…..
.A.CO-1Q…-…….}…?d…=.;..;o..h……\’?…KA…n/]..].8…oORH?]?
>.?……#.m^..b>O..6頑…餝.C….-.Pm}.9..r\’.靋..#?_i.=..k.?B..0..3….
?.h.T\x|u{{…q?..HH5.OqN.y躔…?K…!c,.5.2(f.<9.?..L.+.扈…L).T=..U.U
.X.C…j
可以看到,不同与上面的明文传输,截获的数据包都是经过加密的
除了加密通道中的数据外,使用ssh还可以得到一些额外的好处,比如:
端口转发
数据压缩
源代码开放等。
3:ssh的工作原理
SSH(www.ssh.com)最初源于芬兰的程序员Tatu,是完全免费的 (版本1.2.12之前),此后诞生了诸多版本的ssh,加上了各种限制,包括版权和加密算法等,同时用于商业版本的开始收费.因此很多人都转而使用OpenSSH(www.openssh.org)。OpenSSH是SSH的替代软件,它是完全免费的,而且没有任何版权和加密算法的限制,从而得到了日益广泛的应用.
目前openssh版本已到2.9,同时提供对ssh1,ssh2的支持.
我们已经知道ssh能对网络中传输的数据进行加密,那么在具体实现的时候客户端连接服务器端的认证是如何实现的呢?ssh提供了几种认证方式,下面我们按在实现时的认证顺序来逐一介绍:
第一种认证方式:如果系统提供了基于r的认证方式,同时在openssh中许可了这种认证方式,则用户允许登录认证.需要注意的是这种认证方式在openssh中出于安全考虑默认是不允许的。
第二种认证方式:如果系统提供了基于r的认证方式,同时客户端主机的host key在服务器端的/etc/ssh_known_hosts中或是在对应用户家目录下$HOME/.ssh/known_hosts文件内,则用户允许继续认证过程.
第三种认证方式:是基于rsa的认证,我们知道rsa是基于公钥的加密方式的,这种方式加密和解密是依靠独立的密钥的,每个用户都产生自己唯一的钥匙对,公钥分发出去,私钥自己保存,对欲加密的数据使用公钥加密,需要解密时则使用对应的私钥对已加密数据进行解密。这种算法实现安全保障的最重要的一点就是公钥和私钥之间没有关联,根据公钥不可能推导出私钥。为了使用rsa认证,用户需要将自己的公钥放在服务器端自己家目录下,保存为$HOME/.ssh/authorized_keys,同时只有服务器中authorized_keys中列出的用户才能进行认证。
采用这种认证方式时,当用户发出登录请求,客户端的ssh程序会告诉服务器端自己打算使用哪个钥匙对,然后服务器端在自己的authorized_keys中检查是否存在该用户的公钥,如果不存在,则拒绝该用户,如果存在,则发给该用户使用该用户公钥加密过的随机数字,我们上面讲到过,只用使用对应的私钥才能对公钥加密数据进行解密。只用该用户正确解密,认证过程才能继续进行。 系统中的每个用户都可以利用ssh-keygen生成自己的钥匙对,并保存在自己家目录下的.ssh下,公钥保存为identity,私钥保存为identity.pub。上面讲到过,为了实现rsa认证,用户需要把自己的公钥(identity.pub)拷贝到服务器端家目录下,并改名为authorized_keys。这样的话用户登录服务器时,不需要输入口令即可以成功登录。
最后:如果上述条件均不满足,则openssh进入基于普通的passwd认证方式,此时网络上传输所有的数据都是加密的。
4:安装
为了成功的安装openssh,需要预先安装zlib及openssl,相关的软件可以在以下网址下载,
Zlib:
http://www.freesoftware.com/pub/infozip/zlib/
OpenSSL
http://www.openssl.org/
上述软件都安装ok了以后,就可以进行openssh的安装了,具体到安装是比较简单的,我们假设准备将这个软件包安装到opt目录下。
解开gz包,
gzip -d openssh-1.2.2.tar.gz | tar xf –
cd openssh-1.2.2;
./configure –prefix=/opt/openssh –without-rsh
再依次执行make,make install编译就结束了。
在编译时,还有些常用的选项,如:–with-tcp-wrappers,这个选项是为了集成tcp_wrapper使用的,这样编译的话,管理员可以定义允许连接sshd的ip地址段。
编译结束后,在/opt/openssh目录下会生成etc,bin,sbin,man,libexec几个目录,其中sbin,bin,etc为最常用的目录,这三个目录下比较重要的文件分别有sbin下的sshd,它就是ssh的守护进程,提供ssh服务。其次还有bin下的ssh,它为ssh客户端程序,用来执行ssh连接请求。ssh-keygen,用来生成用户的密钥匙对及主机的host key。etc下有sshd及ssh的配置文件,以及host key文件。
5:命令使用方法
SSH的命令比较容易,我们这里就不提了,有兴趣的朋友可以自己MAN一下就可以了。
附1:
Yiming.zz.ha.cn# ngrep host 192.168.1.1
interface: hme0 (192.168.1.0/255.255.255.224)
filter: ip and ( host 192.168.1.1 )
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
.?.?.?this is Yiming private box…………login:
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
…
#
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
.?
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
g
#
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
g
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
o
#
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
o
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
..
#
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
..
##
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
Password:
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
a
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
b
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
c
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
d
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
e
##
T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]
..
#
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
..
##
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
##
T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]
Last login: Sun Aug 26 09:32:08 from 192.168.1.1……..This is yi
ming\’s private BOX….ANY question, pls mail yiming@security.zz.ha.cn.
…You have new mail…$