Pages

Saturday, 21 December 2013

SSH认证方式总结

SSH主要包括密码、公钥、GSSAPI等认证方式。
0×01. PasswordAuthentication 密码认证
传统的密码口令认证。配置如下:
PasswordAuthentication yes
0×02. PubkeyAuthentication 公钥认证
非对称密钥进行身份认证。公钥认证经常被用来进行Linux主机管理,可以不用输入密码进行登录。而在拿到主机权限却无法破解用户密码的情况下,也可以用此方法登录目标服务器。内网渗透中信息搜集时,也可以进行敏感私钥的搜集。
使用时需要配置被控制机的相应用户主目录下的.ssh目录下的文件。

    1. 生成非对称密钥对
    2. 可以使用RSA或者DSA算法。
      ssh-keygen -t [rsa|dsa]
      将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub(.pub为公钥)
    3. 把公钥复制到想要登陆的目标主机上
    4. 把公钥内容添加到欲授权的用户主目录的.ssh文件夹下的的authorized_key文件内。
      将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_rsa.pub >> ~/.ssh/authorized_keys
    5. 修改sshd_config配置文件
    6. PubkeyAuthentication yes
      AuthorizedKeysFile .ssh/authorized_keys
    7. 重启SSH服务
    8. service sshd restart 或者 /etc/rc.d/init.d/sshd restart
      这样的话,本地指定匹配的私钥后,就可直接以相应用户的身份登陆目标主机。
0×03. GSSAPIAuthentication
公共安全事务应用程序接口。配置如下:
UseDNS yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。

0x0X. SSH其他相关文件
known_hosts:
该文件记录该主机访问过的ssh主机的公钥,已验证远程主机,每次访问时进行核对远程主机的公钥是否更改,防止劫持。
可以进行以下配置来忽略该验证
1. 手动删除修改known_hsots里面的内容;
2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null