平时在家需要远程维护的时候我都是通过公司的跳板机连接回公司。公司使用的是固定IP,我在公司的VPN上做了一个端口映射,使用ssh远程过去。
昨天学习了使用lastb去查看失败的登录,然后到公司的跳板机上去运行lastb,我了个去,里面记录了三个IP登录失败的信息,其中有一个IP 一个下午失败了1230次
lastb |awk '{print $3,$5,$6}'|sort|grep '^[0-9]'|uniq -c
我第一时间想到解决方案是:将在一定时间内登录失败的IP,直接加入到iptables中进行访问拒绝。
vim
/usr/local/sbin/reject_bad_login_ip_in_iptables.sh
角本如下:
:wq保存后,chmod 744 /usr/local/sbin/reject_bad_login_ip_in_iptables.sh#!/bin/bash #获得在一天内登录失败50次以上的IP的列表 bad_ip=`lastb |awk '{print $3,$5,$6}'|sort|grep '^[0-9]'|uniq -c|awk '$1>50 {print $2}'|xargs` for ip in $bad_ip; do in_iptables=`iptables -nvL|grep $ip |wc -l`
#如果这个IP没有出现在iptables表中就加入到INPUT中,然后保存iptables if [ $in_iptables -eq 0 ]; then iptables -I INPUT -s $ip -j REJECT service iptables save fi done
最后在crontab中加入计划任务,每十分钟运行一下即可。
更多Linux方面的资料请访问:http://www.aminglinux.com/bbs/?fromuid=4297