LINUX中的SSH安全加固小结

 

  
  
  
  
  1. 在用ssh登陆远程主机(suse linux系统)的时候,出现下列问题: 
  2. ssh_exchange_identification: Connection closed by remote host
  3. 这个问题是因SSH的安全限制造成的。虽然很好解决,但是需要去机房现场(因安全规定没有开VNC)。具体解决办法:修改/etc/hosts.allow文件,加入 sshd:ALL:ALLOW,然后wq保存并重启sshd服务即可。 
  4. 就这个小问题,来总结一下LINUX中的SSH安全加固问题: 
  5. 注:以下配置项都是在 /etc/ssh/sshd_config 文件中修改
  6.  
  7. 1、更改ssh默认端口 
  8. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  9. Port 22 
  10. 将22端口更改成其它端口,如:10326 。 
  11. 保存后,重启 SSHD 服务:service sshd restart 
  12. 建议改成 10000 以上。这样别人扫描到端口的机率会大大下降。 
  13.  
  14. 2、限制ROOT远程登陆 
  15. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  16. PermitRootLogin yes 
  17. 将yes改为no.   
  18. 保存后,重启 sshd 服务:service sshd restart 
  19. 当你启用这一选项后,你只能用普通用户登录,然后再用su 切换到 root 帐户。
  20. 所以必须注意,在做这个设置之前,务必要给系统添加可以远程登录的普通用户。 
  21.  
  22. 3、修改默认登录时间 
  23. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  24. LoginGraceTime 2m 
  25. 当你连接到 SSH 后,默认是提供 2 分钟的时间让你输入帐户和密码来进行登录,你可以修改这个时间为 1 分钟或 30 秒。 
  26.  
  27. 4、升级旧版本 
  28. 升级陈旧的Openssh版本,因为早期的Openssh版本,存在安全漏洞。对于一个新配置的Openssh服务器来说使用最新稳定版本是最明智的选择。可以在其官网 http://www.openssh.com 下载源代码进行编译。 
  29.  
  30. 5、当用户处于非活动时断线 
  31. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  32. ClientAliveCountMax 3 
  33. ClientAliveInterval 0  
  34. 进行如下修改: 
  35. ClientAliveInterval 600
  36. ClientAliveCountMax 0 
  37. ClientAliveCountMax 600:当用户在 10 分钟内处于非活动状态的话,就自动断线。 
  38. ClientAliveCountMax:默认为 3 ,表示当 SSH 没有任何活动时, SSH Server 会发送三次检查是否在线(checkalive)的消息。 
  39. ClientAliveCountMax:默认为 0,表示当过了几秒后,SSH Server 会发送消息要求用户响应(0 的话表示永远不发送),否则就断线。 
  40.  
  41. 6、修改加密协议版本 
  42. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  43. #Protocol 2,1 
  44. 默认是1和2都可以,将其改为Protocol 2 
  45. 保存后,重启 SSHD 服务:service sshd restart 
  46.  
  47. 与 version 1 不同的是,在 version 2 当中将不再产生 server key 了,所以当 Client 端联机到 Server 端时,两者将藉由 Diffie-Hellman key 的演算方式来产生一个分享的 Key ,之后两者将藉由类似 Blowfish 的演算方式进行同步解密的动作! 
  48.  
  49. 7、限制IP 登录 
  50. 如果你以固定 IP 方式连接你的服务器,那么你可以设置只允许某个特定的 IP 登录服务器。例如我是通过特定堡垒机登录到服务器。设置如下: 
  51.  编辑 /etc/hosts.allow 
  52. vi /etc/hosts.allow 
  53. 例如只允许 124.45.67.52 登录 
  54. sshd:124.45.67.52:ALLOW  
  55. 保存后,重启 sshd 服务:service sshd restart 
  56.   
  57.  
  58. 8、允许或禁止指定用户和组登录 
  59. 仅允许指定用户和组登录 
  60. AllowUsers  john     jason指定用户 
  61. AllowGroups sysadmin dba  指定组 
  62. 禁止指定的用户或组登录 
  63. DenyUsers  corn   apath指定用户 
  64. DenyGroups devers qa   指定组 
  65. 保存后,重启 SSHD 服务:service sshd restart 
  66.  
  67. 注:Allow 和 Deny 可以组合使用,它们的处理顺序是:DenyUsers, AllowUsers, DenyGroups, AllowGroups 
  68.  
  69.  
  70. 9、限制监听IP 
  71. 如果你的服务器上有多个网卡及 IP ,那么你可以限制某些 IP 不监听 SSH,只允许通过某些 IP 来登录。 
  72.  
  73. 比如你有四个网卡 
  74. eth0 – 192.168.10.200
  75. eth1 – 192.168.10.201
  76. eth2 – 192.168.10.202
  77. eth3 – 192.168.10.203
  78.  
  79. 你只想让用户通过 200, 202 这两个 IP 来登录,那么做以下设定 
  80. 在/etc/ssh/sshd_config文件中查找下面这样的行: 
  81. #ListenAddress 0.0.0.0,进行如下修改 
  82. ListenAddress 192.168.10.200
  83. ListenAddress 192.168.10.202
  84.  
  85.  
  86. 10、最后修改配置文件的属性,防止非授权用户修改配置文件 
  87. #chmod 644 /etc/ssh/sshd_config 
  88. 另外注意/etc/ssh下的文件不能设为777的权限,因为ssh本来就是一个安全登陆的模式,如果设成777(所有人可以任意访问修改),那还有什么安全性可言呢? 
  89. 总结:每一个小的问题经过认真思考和总结,你就会发现很多有用的细节。 

 

你可能感兴趣的:(linux)