对几次输入ssh密码错误的IP进行iptables drop
把下面脚本放入/etc/crontab
- 扫描ssh密码猜测次数超过5次的记录
* * * * * root /home/cnscn/sh/ssh_scan_crontab.sh >/dev/null 2>&1
$ cat /home/cnscn/sh/ssh_scan_crontab.sh
#!/bin/bash# Author http://jabin.cublog.cn# Modify cnscn http://cnscn2008.cublog.cn# Modify xinyv#设置时区export LC_ALL=UTC# 获取前 1 分钟内的 secure 记录,统计 ssh 认证失败的 IP 和其 失败次数, 并用Iptables阻止之SCANNER=$(awk 'BEGIN{ tm=strftime("%b %e %H:%M",systime()-60);} $0 ~ tm && /Failed password/ && /ssh2/ {print $(NF-3)}' /var/log/secure |sort|uniq -c |awk '{print $1"="$2;}')for i in $SCANNERdoecho $i# 取认证失败次数NUM=`echo $i|awk -F= '{print $1}'`# 取其 IP 地址IP=`echo $i|awk -F= '{print $2}'`# 若其在失败次数超过 5 次且之前没有被阻断过,那么添加一条策略将其阻断,并记录日志if [ $NUM -gt 5 ] && [ -z "`/sbin/iptables -vnL INPUT|grep $IP`" ]then/sbin/iptables -I INPUT -s $IP -j DROPecho "/sbin/iptables -I INPUT -s $IP -j DROP" >> /home/cnscn/sh/ssh_scan_iptables.shlogger -i -t "ssh_scan_crontab" -f /var/log/messages "$IP($NUM)..."fidone#End of Script把脚本/home/cnscn/sh/ssh_scan_iptables.sh加入到开机启动的myiptables.sh防火墙脚本$ cat myiptables.sh#!/bin/bash#chkconfig: 345 85 15#description: my iptables rules, which can auto run when system start# This is a script# Edit by liwei, cnscn# establish a static firewall#网络接口interdevice="eth0"#端口#21 ftp#15022 sshd#25 smtp#53 named#80 http#110 pop3#外界可以访问的端口Open_ports="21 20 22 80"#可以外出的端口,其它端口都可以外出Allow_ports="21 20 80 "#清除所有以前设置的规则iptables -Fiptables -Xiptables -t nat -Fiptables -t nat -X#执行非法IP阻止规则/home/cnscn/sh/ssh_scan_iptables.sh#允许211.167.xxx.xxx, 防止自己输入错误而导致的IP被封锁/sbin/iptables -I INPUT -s 211.167.xxx.xxx -j ACCEPT#定义每一个网络接口规则for eths in $interdevice ; do#接受所有的,来源不是网络接口$interdevice的数据(对不是eths端口则放行)#iptables -A INPUT -i ! $eths -j ACCEPT#定义外界可以访问的端口规则(--dport)for Port in $Open_ports ; doiptables -A INPUT -i $eths -p tcp --dport $Port -j ACCEPTiptables -A INPUT -i $eths -p udp --dport $Port -j ACCEPTdone#给不应该进入我们机器的数据,一个欺骗性的回答iptables -A INPUT -i $eths -p tcp -j REJECT --reject-with tcp-resetiptables -A INPUT -i $eths -p udp -j REJECT --reject-with icmp-port-unreachabledone#forbidden pingecho 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all#End of Script
参考
From: http://sebug.net/node/t-43
本文介绍了一个脚本,用于检测SSH登录尝试中的异常行为,特别是针对密码猜测的攻击。通过扫描日志文件,该脚本能识别出在1分钟内尝试登录超过5次的IP地址,并使用iptables规则阻止这些IP,以增强SSH服务的安全性。
2324

被折叠的 条评论
为什么被折叠?



