提高ssh安全性方法

        晚上看了一下VPS的/var/log/secure这个日志文件的内容,尼玛,不看不知道,一看吓一跳,日志文件中记录了大量试图暴力破解root密码的信息。日志信息大致如下:

Jul 20 19:39:43 sshd[6562]: Failed password for root from 116.10.191.180 port 43849 ssh2
Jul 20 19:39:45 sshd[6562]: Failed password for root from 116.10.191.180 port 43849 ssh2
Jul 20 19:39:48 sshd[6562]: Failed password for root from 116.10.191.180 port 43849 ssh2
Jul 20 19:39:50 sshd[6562]: Failed password for root from 116.10.191.180 port 43849 ssh2
Jul 20 19:39:53 sshd[6562]: Failed password for root from 116.10.191.180 port 43849 ssh2
Jul 20 19:40:06 sshd[6565]: pam_unix(sshd:auth): authentication failure; 
Jul 20 19:40:08 sshd[6565]: Failed password for root from 116.10.191.180 port 51141 ssh2
Jul 20 19:40:11 sshd[6565]: Failed password for root from 116.10.191.180 port 51141 ssh2
Jul 20 19:40:13 sshd[6565]: Failed password for root from 116.10.191.180 port 51141 ssh2
Jul 20 19:40:16 sshd[6565]: Failed password for root from 116.10.191.180 port 51141 ssh2
Jul 20 19:40:29 sshd[6568]: Failed password for root from 116.10.191.180 port 5505 ssh2
Jul 20 19:40:33 sshd[6568]: Failed password for root from 116.10.191.180 port 5505 ssh2
Jul 20 19:40:35 sshd[6568]: Failed password for root from 116.10.191.180 port 5505 ssh2
Jul 20 19:40:37 sshd[6568]: Failed password for root from 116.10.191.180 port 5505 ssh2
Jul 20 19:40:40 sshd[6568]: Failed password for root from 116.10.191.180 port 5505 ssh2
Jul 20 19:40:43 sshd[6569]: Disconnecting: Too many authentication failures for root
Jul 20 19:40:49 sshd[6571]: Failed password for root from 116.10.191.180 port 13513 ssh2
Jul 20 19:40:52 sshd[6571]: Failed password for root from 116.10.191.180 port 13513 ssh2
Jul 20 19:40:55 sshd[6571]: Failed password for root from 116.10.191.180 port 13513 ssh2
Jul 20 19:40:57 sshd[6571]: Failed password for root from 116.10.191.180 port 13513 ssh2
Jul 20 19:40:58 sshd[6572]: fatal: Read from socket failed: Connection reset by peer

        我这个小小的VPS只是自己搞着玩玩的,性能、数据都很普通,不至于这样吧。没办法,在网上搜一下相关的信息,看看有什么办法来解决一下这个问题。我就搜了一下那些IP,然后看到了东北大学有个黑名单及相关介绍的文章及脚本,感觉挺好的,就照着做了一下,现记录如下,希望能帮到有相关需要的朋友。地址为:http://antivirus.neu.edu.cn/scan/ssh.php  http://neucert.neu.edu.cn/archives/174

        对于SSH协议的安全问题,也可以参考这篇文件,感觉很不错,以下内容就转载自http://www.opsers.org/linux-home/base/ssh-security-methods-to-improve.html

1. 修改sshd服务器的配置文件/etc/ssh/sshd_config,将部分参数参照如下修改,增强安全性。

系统缺省使用22号端口,将监听端口更改为其他数值(最好是1024以上的高端口,以免和其他常规服务端口冲突),这样可以增加入侵者探测系统是否运行了 sshd守护进程的难度。

Port 5555

对于在服务器上安装了多个网卡或配置多个IP地址的情况,设定sshd只在其中一个指定的接口地址监听,这样可以减少sshd的入口,降低入侵的可能性。

ListenAddress 192.168.0.1

如果允许用户使用root用户登录,那么黑客们可以针对root用户尝试暴力破解密码,给系统安全带来风险。

PermitRootLogin no

允许使用空密码系统就像不设防的堡垒,任何安全措施都是一句空话。

PermitEmptyPasswords no

只允许指定的某些用户通过ssh访问服务器,将ssh使用权限限定在最小的范围内。

AllowUsers sshuser1 sshuser2

同上面的AllowUsers类似,限定指定的用户组通过ssh访问服务器,二者对于限定访问服务器有相同的效果。

AllowGroups sshgroup

禁止使用版本1协议,因为其存在设计缺陷,很容易使密码被黑掉。

Protocol 2

关闭X11Forwarding,防止会话被劫持。

X11Forwarding no

sshd服务运行时每一个连接都要使用一大块可观的内存,这也是ssh存在拒绝服务攻击的原因。一台服务器除非存在许多管理员同时管理服务器,否则上面这 个连接数设置是够用了。

MaxStartups 5

注意:以上参数设置仅仅是一个示例,用户具体使用时应根据各自的环境做相应的更改。

2. 修改sshd服务器的配置文件/etc/ssh/sshd_config的读写权限,对所有非root用户设置只读权限,防止非授权用户修改sshd 服务的安全设置。

chmod 644 /etc/ssh/sshd_config

3. 设置TCP Wrappers。服务器默认接受所有的请求连接,这是非常危险的。使用TCP Wrappers可以阻止或允许应用服务仅对某些主机开放,给系统在增加一道安全屏障。这部分设置共涉计到两个文件:hosts.allow和 hosts.deny。

将那些明确允许的请求添加到/etc/hosts.allow中。如系统仅允许IP地址为192.168.0.15和10.0.0.11的主机使用 sshd服务,则添加如下内容:

sshd:192.168.0.15 10.0.0.11

将需要禁止使用的信息添加到/etc/hosts.deny中。如对除了在hosts.allow列表中明确允许使用sshd的用户外,所有其他用户都禁止使用sshd服务,则添加如下内容到hosts.deny文件中:

sshd:All

注意:系统对上述两个文件的判断顺序是先检查hosts.allow文件再查看hosts.deny文件,因此一个用户在hosts.allow允许使用网络资源,而同时在hosts.deny中禁止使用该网络资源,在这种情况下系统优先选择使用hosts.allow配置,允许用户使用该网络资源。

4. 尽量关闭一些系统不需要的启动服务。系统默认情况下启动了许多与网络相关的服务,因此相对应的开放了许多端口进行LISTENING(监听)。我们知道,开放的端口越多,系统从外部被入侵的可能也就越大,所以我们要尽量关闭一些不需要的启动服务,从而尽可能的关闭端口,提供系统的安全性。

通过以上步骤基本上将sshd服务设置上可能出现的漏洞堵上了,不需要投资,只要我们稍微花点时间调整一下配置,就可极大提高系统的安全环境,何乐而不为呢?