防止SSH暴力破解

首先来看看服务器有没有被别人暴力破解的迹象~

grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more

这里的/var/log/auth.log (也就是SSH的日志)根据你的系统不同,文件也不同:

Redhat or Fedora Core/var/log/secure
Mandrake, FreeBSD or OpenBSD/var/log/auth.log
SuSE/var/log/messages
Mac OS X (v10.4 or greater)/private/var/log/asl.log
Mac OS X (v10.3 or earlier)/private/var/log/system.log

然后输出的结果如下:

屏幕快照 2015-01-05 下午12.33.52不看不知道,一看吓一跳。好家伙,前面四个居然有1、2万的失败记录,估计就是专做暴力破解的吧。试着搜索了一下这个IP,果然是专做暴力破解的,别人已经把它放在屏蔽列表里面了。

屏幕快照 2015-01-05 下午12.42.56

 

先把登陆SSH的端口改一下吧
vim /etc/ssh/sshd_config

默认的配置是:
Port 22

22改为其他不易猜到的端口就行,比如
Port 25252

然后重启SSH服务

/etc/init.d/ssh restart

不过这样可能还不够,我们还可以用第三方软件来实现防御。比如DenyHost

在下载解压之后执行:
python setup.py install

然后为了能开机启动,做一个denyhosts的符号链接:
ln -s /usr/share/denyhosts/daemon-control-dist /etc/init.d/denyhosts
chkconfig --add denyhosts

如果没有安装chkconfig的话,执行一下(如果你用的是APT来管理的话)
apt-get install chkconfig

现在就可以去配置denyhosts了:
cd /usr/share/denyhosts
cp denyhosts.cfg-dist denyhosts.cfg
vim denyhosts.cfg

需要修改的地方不多:
SECURE_LOG 是之前提到的SSH的日志的位置。
PURGE_DENY 在Block多少时间后再次允许登陆,留空的话,则为永久屏蔽。
DENY_THRESHOLD_INVALID 登陆一个不存在的用户的话,失败几次后屏蔽。
DENY_THRESHOLD_VALID 登陆普通用户,失败几次后屏蔽。
DENY_THRESHOLD_ROOT 登陆root用户,失败几次后屏蔽。

保存之后就可以启动denyhosts服务了。
/etc/init.d/denyhosts start

Leave a Reply

Your email address will not be published. Required fields are marked *

16 − 14 =