已经有好几台服务器最近一直受到骚扰,地址来源于五湖四海.主要的方式是SSH暴力破解,一直不断的尝试,日志逐渐庞大起来,这些可恶的小臭虫们实在让人讨厌.
大部分情况下还是直接扫描的22端口,于是简单的修改了一下端口,然后筛选出日志中攻击的IP地址(我的日志极不规则,所以现在还没能想出特别好的 shell筛选…….),添加到iptables或者hosts.deny中. hosts.deny基本格式为 SERVICE_NAME : IP_RANGE : DENY , 服务名 : 单个IP或者IP段(ip/netmask) : DENY . DENY 为缺省的属性,可以省略.
先要检查sshd是否支持tcp_wrappers.用下面的方法,
1. [root@proxy_HUIXIAN log]# ldd /usr/sbin/sshd | grep libwrap.so
libwrap.so.0 => /usr/lib/libwrap.so.0 (0×0069a000)
有类似提示说明已经支持
2. 你也可以将 sshd : 127.0.0.1 : deny 添加到hosts.deny
#ssh localhost
ssh_exchange_identification: Connection closed by remote host
有这样的提示也说明已经支持
另外要养成定期查看完所有服务器的日志的习惯,但这可不是一件太轻松的事情.我们就需要用到日志查看工具–logwatch,这是很多发行版本都已经集成,我们可以修改设置让它把整理和筛选过的日志发到指定的MAIL中,每天需要做的事情就是打开你的信箱–我就专门在gmail申请了一个存放系统日志的 MAIL,观察不同的服务器上的日志.例如RHEL AS4 中汽设置文件在 /etc/log.d/logwatch.conf ,每一项都有很详细的解释,主要修改
MAILTO = root 为 MAILTO = root , serverlog.*@*.com,
Range = yesterday 选发送每个昨天的日志
Detail = High 日志详细等级,推荐最高等级10,
其余一般默认就可以,你也可以自己修改syslog.conf中的设置来满足你的对事件日志记录的要求,
{
这里提醒一下,要注意把 crond 守护服务开启,否则你只能傻傻等着,就是不会在你信箱中找到系统发过来的日志.
#find /etc -type d -name ‘cron.*’ -ok ls -l {} \;
你用上面的命令可以看到在/etc/cron.daily 目录中看到 00-logwatch这个link指向 00-logwatch -> ../log.d/scripts/logwatch.pl ,
所以是需要开启crond
另:你会关系如果你的系统中没有配置发件服务器怎么办,没有关系” mailer = /bin/mail ” ,系统的MAIL程序可以帮你完成.
}
当日志很庞大的时候,即使你能很好的筛选出攻击来源,每天手动的添加那些IP也够让你厌烦的.而用 DenyHosts 就可以自动完成检测日志,并且自动添加到hosts.deny中了,同时DenyHOSTS还会将结果 发到你的MAIL中.
DenyHosts 官方地址为 http://denyhosts.sourceforge.net/ ,至于详细的教程网上很多了,就不再重复啦.自己摸索吧.