OpenSSH
ssh:Secure SHell,
telnet(安全缺陷)→ssh v1(安全缺陷)→ssh v2
ssh工作在TCP/IP的第五层,属于应用层协议,所以这个服务可以跨平台使,形同http服务一样。
ssh服务分为服务器端的sshd和客户端的ssh。
windows ssh client:
Xmanger→Xshell ,较流行
Securecrt
putty
sshclient
OpenSSH的用户认证:
基于口令的认证:username/passwd
基于密钥的认证:username
基于口令的认证:
在客户端第一次向服务器发起请求时:
1、客户端向服务器端发起请求。
2、服务器端会发送一个主机公钥(还有服务器的特征信息)到客户端。
客户端接受主机公钥后,就表明认可此服务器。
3、客户端生成一个一次性密钥到服务器端。
4、服务器端下面就通过对称密钥的方式索要密码。
注:客户端与服务器端连接后,
在客户端的家目录下面会生成".ssh"的隐藏文件夹,
其中包含know_hosts文本文件,记录了所有连接过的主机的IP和RSA公钥信息。
基于密钥的认证:
客户端登陆之前的私钥需要自己保留,而公钥也不能公开,而是发送到服务器端要登陆用户的
家目录下的".ssh"目录下
客户端用自己的私钥解解密,这时所有的认证都是基于密钥进行的,不需要密码
/etc/ssh/目录下:
sshd_config:服务器端配置文件
ssh_config :客户端配置文件
ssh v1 :由于有漏洞,用的不多
ssh_host_key, ssh_host_key.pub(主机私钥、主机公钥)
ssh v2 :流行的
ssh_host_dsa_key dsa私钥(为保证兼容性而提供的)
ssh_host_dsa_key.pub dsa公钥
ssh_host_rsa_key rsa私钥(rsa安全性和功能强于dsa)
ssh_host_rsa_key.pub rsa公钥
配置文件/etc/ssh/sshd_config:
使用"#"注释掉的行属于默认配置,如需要更改,则可以去掉注释"#",然后更改配置值。
查看配置手册:man sshd_config
#LoginGraceTime 2m :登录宽限时间,在等待输入密码的时间,不能太长。 #PermitRootLogin yes :默认允许root用户登录 #StrictModes yes :启用严格模型。 #MaxAuthTries 6 :密码的最多尝试次数 #MaxSessions 10 :对来自同一客户端最多允许打开多少会话 #RSAAuthentication yes :启用基于密钥的认证 #PubkeyAuthentication yes :启用基于公钥的认证 #AuthorizedKeysFile .ssh/authorized_keys :认证文件的存放位置 #AuthorizedKeysCommand none :认证时的命令 #AuthorizedKeysCommandRunAs nobody #RhostsRSAAuthentication no :基于主机的认证,不安全,所以关闭。 PasswordAuthentication yes :基于密码的认证 ChallengeResponseAuthentication no :挑战式单向认证,不安全,关闭 X11Forwarding yes :在客户端可以执行服务器端的窗口程序 #PrintMotd yes :登录时要显示的内容。类似于issue #PrintLastLog yes :显示上次登录的地方、时间,不安全,建议关闭。 #TCPKeepAlive yes :使用TCP的长连接。 #UseDNS yes :在连接时进一步判断对方的主机名和ip地址是否一致。如果不能够解析,会一致卡在此处。建议关闭。 #Banner none :显示文件的信息,例如Banner /etc/issue
配置文件修改改动的地方:
1、监听端口一定改为非22端口;同时可以honeypot的蜜罐程序监听在22号端口进行跟踪。
2、启用基于密钥认证的功能;
3、禁止使用version 1;
4、禁止主机认证机制;默认即为禁止;
5、禁止DNS反解;
6、禁止显示LastLogin;
7、显示banner以提示用户;但在banner中勿显示敏感信息;
ssh命令的使用:
ssh HOST: 如果没有指定用户名,以登录到当前主机上的用户名为用户登录远程主机;
ssh username@HOST
ssh -l username HOST
ssh username@HOST ‘COMMAND‘ 在远程主机上执行一个命令,并把结果取回本地。
-p port
原文:http://caduke.blog.51cto.com/3365689/1379273