灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2926回复:0

sshd被攻击的自动防御方法

楼主#
更多 发布于:2012-11-02 14:17
你是否遇到过sshd服务被暴力破解的纠结一幕呢?有人可能会说我只允许我们公司的ip登陆不就行了吗,但是当公司使用的是ADSL拨号方式上网的时候就显的力不从心了,无法确定ip来源了。当然了如果公司使用的是固定ip,就忽略之。


本文只是提供一个方法,具体适用于谁,适用于什么环境,还是自己斟酌吧!

我的系统是CentOS5.4,借助swatch这个工具来实现自动防御,完全实现自动化,自动封锁攻击ip,并在指定时间后解封,这个过程完全自动化。

1、安装swatch
# yum --enablerepo=bjtu install swatch
版本应该>=3.2.3
之前用3.1.1版本,有点问题

2、创建配置文件
# touch ~/.swatchrc
# vim ~/.swatchrc
因为sshd服务的日志文件为/var/log/secure,加入要监控的配置项,如下
#
# bad login attempts
watchfor /sshd.+ Failed password for .+ from ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
       echo magenta
       bell 1
       exec "/root/swatch.sh $1"
保存退出

3、创建攻击检测到后的处理脚本
# touch /root/swatch.sh
# vim /root/swatch.sh
加入如下脚本:
#!/bin/sh

IP=$1
echo $IP >> /root/sshd_blocked_ip_list

/sbin/iptables -I INPUT -s "$IP" -p tcp --dport 22 -j DROP

/usr/bin/at "now + 1 hours" <<< "/sbin/iptables -D INPUT -s $IP -p tcp --dport 22 -j DROP"
修改脚本文件权限
# chmod u+x /root/swatch.sh

4、运行swatch
# /usr/bin/swatch -t /var/log/secure --daemon

Note:
攻击者的ip被记录到sshd_blocked_ip_list里了
另外可以通过查看防火墙规则看到正在被封锁的ip
# iptables -L -n
以及自动清除的计划任务
# atq

至此便完成了一个sshd暴力破解自动防御系统,由于监控日志时swatch可能有延迟,所以防火墙规则里可能会有多于一条的相同规则,但是不影响功能。

希望对你有帮助!

喜欢0 评分0
游客

返回顶部