在用ssh登陆远程主机(suse linux系统)的时候,出现下列问题: 


ssh_exchange_identification: Connection closed by remote host,这个问题是因SSH的安全限制造成的。


具体解决办法:修改/etc/hosts.allow文件,加入sshd:ALL:ALLOW,然后wq保存并重启sshd服务即可。


就这个小问题,来总结一下SUSE LINUX中的SSH安全加固问题:


 


注:以下配置项都是在/etc/ssh/sshd_config 文件中修改


1、更改ssh默认端口


在/etc/ssh/sshd_config文件中查找下面这样的行:


Port 22


将22端口更改成其它端口,如:10326 。


保存后,重启SSHD 服务:service sshd restart


建议改成10000 以上。这样别人扫描到端口的机率会大大下降。


 


2、限制ROOT远程登陆


在/etc/ssh/sshd_config文件中查找下面这样的行:


PermitRootLogin yes


将yes改为no. 


保存后,重启SSHD 服务:service sshd restart


当你启用这一选项后,你只能用普通用户登录,然后再用su 切换到root 帐户。


 


3、修改默认登录时间


在/etc/ssh/sshd_config文件中查找下面这样的行:


LoginGraceTime 2m


当你连接到SSH 后,默认是提供2 分钟的时间让你输入帐户和密码来进行登录,你可以修改这个时间为1 分钟或30 秒。


 


4、升级旧版本


升级陈旧的Openssh版本,因为早期的Openssh版本,存在安全漏洞。对于一个新配置的Openssh服务器来说使用最新稳定版本是最明智的选择。可以在其官网http://www.openssh.com 下载源代码进行编译。


 


5、当用户处于非活动时断线


在/etc/ssh/sshd_config文件中查找下面这样的行:


ClientAliveCountMax 3


ClientAliveInterval 0


进行如下修改:


 ClientAliveInterval 600


ClientAliveCountMax 0ClientAliveCountMax 600:当用户在10 分钟内处于非活动状态的话,就自动断线


ClientAliveCountMax:默认为3 ,表示当SSH 没有任何活动时,SSH Server 会发送三次检查是否在线(checkalive)的消息。


ClientAliveCountMax:默认为0,表示当过了几秒后,SSH Server 会发送消息要求用户响应(0 的话表示永远不发送),否则就断线。


 


6、修改加密协议版本


在/etc/ssh/sshd_config文件中查找下面这样的行:


#Protocol 2,1


默认是1和2都可以,将其改为Protocol 2


保存后,重启SSHD 服务:service sshd restart


 与version 1 不同的是,在version 2 当中将不再产生server key 了,所以当Client 端联机到Server 端时,两者将藉由Diffie-Hellman key 的演算方式来产生一个分享的Key ,之后两者将藉由类似Blowfish 的演算方式进行同步解密的动作!


 


7、限制IP 登录


如果你以固定IP 方式连接你的服务器,那么你可以设置只允许某个特定的IP 登录服务器。例如我是通过特定堡垒机登录到服务器。设置如下:


 编辑/etc/hosts.allow


vi /etc/hosts.allow


例如只允许124.45.67.52 登录


sshd:124.45.67.52:ALLOW


保存后,重启SSHD 服务:service sshd restart


 


8、允许或禁止指定用户和组登录


 仅允许指定用户和组登录


 AllowUsers  john     jason指定用户


AllowGroups sysadmin dba  指定组


禁止指定的用户或组登录


 DenyUsers  corn   apath指定用户


DenyGroups devers qa   指定组


 保存后,重启SSHD 服务:service sshd restart


 注:Allow 和Deny 可以组合使用,它们的处理顺序是:DenyUsers, AllowUsers, DenyGroups, AllowGroups


  


9、限制监听IP


如果你的服务器上有多个网卡及IP ,那么你可以限制某些IP 不监听SSH,只允许通过某些IP 来登录。


 比如你有四个网卡


 eth0 – 192.168.10.200


eth1 – 192.168.10.201


eth2 – 192.168.10.202


eth3 –192.168.10.203你只想让用户通过200, 202 这两个IP 来登录,那么做以下设定


在/etc/ssh/sshd_config文件中查找下面这样的行:


#ListenAddress 0.0.0.0,进行如下修改


 


ListenAddress 192.168.10.200


ListenAddress 192.168.10.20210、最后修改配置文件的属性,防止非授权用户修改配置文件


#chmod 644 /etc/ssh/sshd_config


另外注意/etc/ssh下的文件不能设为777的权限,因为ssh本来就是一个安全登陆的模式,如果设成777(所有人可以任意访问修改),那还有什么安全性可言呢?


 


总结:每一个小的问题经过认真思考和总结,你就会发现很多有用的细节。