#公网服务器常常被暴力破解,零成本减少和防止爆破风险
############################示 例#################################
#安装
yum install ipset
yum install iptables
#新增地址列表,问题IP封禁7天
ipset create islist hash:ip hashsize 4096 maxelem 100000 timeout 604800
#设置拦截地址列表
iptables -A INPUT -m set --match-set islist src -j DROP

#编写shell脚本
#!/bin/bash
FILES="/var/log/secure"
DATE=`date -d -1hour +%d" "%H`
ip_file="/tmp/ip_file"
threshold=3
WORD="Failed password for invalid"
WORD2="Failed password for root"
#1小时内非root登录错误大于3次加入ipset设置的黑名单列表
grep $DATE $FILES |grep "$WORD" |awk -F " " '{print$13}'|sort |uniq -c|sort -n |tail -n 1 > $ip_file
ip_file_num=`cat /tmp/ip_file|awk -F " " '{print$1}'`
ip_file_ip=`cat /tmp/ip_file|awk -F " " '{print$2}'`
if [[ $ip_file_num -gt $threshold ]];then
ipset add islist $ip_file_ip
fi
#1小时内root登录错误大于3次加入ipset设置的黑名单列表
grep $DATE $FILES |grep "$WORD2" |awk -F " " '{print$11}'|sort |uniq -c|sort -n |tail -n 1 > $ip_file
ip_file_num=`cat /tmp/ip_file|awk -F " " '{print$1}'`
ip_file_ip=`cat /tmp/ip_file|awk -F " " '{print$2}'`
if [[ $ip_file_num -gt $threshold ]];then
ipset add islist $ip_file_ip
fi
#crontab加入定时任务,每分钟运行
echo " * * * * * root /root/ip_set.sh" >> /etc/crontab
#完成效果

##################################################################
#常用命令
#创建一条IP地址集。参数(hash:net)是必须的,代表的是集合的类型,hash:net类型的IP集使用哈希来存储多个CIDR块
ipset create islist hash:net
#增加IP到地址列表
ipset add islist IP地址
#查看列表内容
ipset list
#从地址列表删除ip
ipset del islist IP地址
#删除地址列表,先清除iptables规则
iptables -F
ipset destroy 地址列表
##################################################################
ipset创建基于ip hash的集合名称
例如 blacklist表示集合的名字是blacklist
hashsize 4096 表示初始值为4096个,如果满了,这个 hash 会自动扩容为之前的两倍。最大能存储的数量是 maxelem指定的值;hashsize 的默认值是 1024
maxelem 1000000表示最大元素个数为100000 ,ipset默认值为65536
timeout 3600 表示封禁3600s;
iptables开启封禁80,443策略。
ipset create blacklist hash:ip hashsize 4096 maxelem 1000000 timeout 3600
iptables -A INPUT -p tcp -m set --match-set blacklist src -m multiport --dports 443,80 -j DROP
不希望有过期时间,可以不加timeout这个参数
ipset create blacklist hash:ip
当然,也可以封禁黑名单IP的所有请求。
iptables -A INPUT -m set --match-set blacklist src -j DROP
本文介绍如何通过YUM安装ipset和iptables,创建自定义IP黑名单,并利用shell脚本监控登录失败,将频繁错误的IP加入黑名单,从而有效降低公网服务器被暴力破解的风险。通过定时任务实现自动化防护。
7823

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



