Linux服务器 屏蔽国外IP访问及简单的防CC攻击拦截
屏蔽国外IP访问
通过ssh远程登录服务器内,运行如下命令语句获取国内IP网段,会保存为/root/cha_ssr.txt
wget -q --timeout=60 -O- 'http://ftp.apnic./apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { prtf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/cha_ssr.txt
将下面脚本保存为/root/all.sh ,并设置可执行权限( 命令 chmod +x all.sh)
mmode=$1
CNIP="/root/cha_ssr.txt"
gen_iplist() {
cat <<-EOF
$(cat ${CNIP:=/dev/null} 2>/dev/null)
EOF
}
flush_r() {
iptables -F ALLCNRULE 2>/dev/null
iptables -D INPUT -p tcp -j ALLCNRULE 2>/dev/null
iptables -X ALLCNRULE 2>/dev/null
ipset -X all 2>/dev/null
}
mstart() {
ipset create all hash: 2>/dev/null
ipset -! -R <<-EOF
$(gen_iplist | sed -e "s/^/add all /")
EOF
iptables -N ALLCNRULE
iptables -I INPUT -p tcp -j ALLCNRULE
iptables -A ALLCNRULE -s 127.0.0.0/8 -j RETURN
iptables -A ALLCNRULE -s 169.254.0.0/16 -j RETURN
iptables -A ALLCNRULE -s 224.0.0.0/4 -j RETURN
iptables -A ALLCNRULE -s 255.255.255.255 -j RETURN
iptables -A ALLCNRULE -m set --match-set all src -j RETURN
iptables -A ALLCNRULE -p tcp -j DROP
}
if [ "$mmode" == "s" ] ;then
flush_r
exit 0
fi
flush_r
sleep 1
mstart
执行如下命令将开始拦截
/root/all.sh
执行如下命令即可停止拦截
/root/all.sh s
CC攻击拦截
方式1通过stat -an命令统计出当前请求并发大于100的IP,然后将不在白名单的IP自动加入DROP规则
运行
vi deny_1.sh
添加推火网以下命令语句
#!/b/bash
if [[ -z $1 ]];then
num=100
else
num=$1
fi
cd $(cd $(dirname $BASH_SOURCE) && pwd)
iplist=`stat -an |grep ^tcp.:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{prt $6}'|sort|uniq -c|sort -rn|awk -v str=$num '{if ($1>str){prt $2} fi}'`
if [[ ! -z $iplist ]];
then
for black_ip $iplist
do
ip_section=`echo $black_ip | awk -F"." '{prt $1"."$2"."$3}'`
grep -q $ip_section ./white_ip.txt
if [[ $? -eq 0 ]];then
echo $black_ip >>./recheck_ip.txt
else
iptables -nL | grep $black_ip || iptables -I INPUT -s $black_ip -j DROP
echo $black_ip >>./black_ip.txt
fi
done
fi
保存后执行推火网以下语句
chmod +x deny_1.sh
sh deny_1.sh
拦截的IP会记录到black_ip.txt中,如果有要排除的白名单IP,可将这些IP加入到white_ip.txt,一行一个。
方式2通过web网站日志中攻击者访问特征,根据这些特征过滤出攻击的ip,利用iptables来阻止(排除本机IP127.0.0.1)。
运行
vi deny_2.sh
添加推火网以下命令语句:
#!/b/bash
OLD_IFS=$IFS
IFS=$'\n'
for status `cat 网站访问日志路径 | grep '特征字符' | grep -v '127.0.0.1' | awk '{prt $1}' |sort -n | uniq -c | sort -n -r | head -20`
do
IFS=$OLD_IFS
NUM=`echo $status | awk '{prt $1}'`
IP=`echo $status | awk '{prt $2}'`
if [ -z "`iptables -nvL | grep "dpt:80" | awk '{prt $8}' | grep "$IP"`" ];then
if [ $NUM -gt 250 ];then
/sb/iptables -I INPUT -p tcp -s $IP --dport 80 -j DROP
fi
fi
done
保存后执行推火网以下语句
chmod +x deny_2.sh
sh deny_2.sh
使用crontab -e 添加到任务计划,每20分钟执行一次
/20 /root/deny_ip1.sh >dev/null 2>&1
注意
对于使用了百度云加速或其他cdn加速的,访问者IP可能会是节点IP,刚不适用此方式进行拦截。
对于方式1 若发现和白名单同一个段IP出现在高并发列表,将不会直接拉黑,而是写入到recheck_ip.txt.
对于方式2 执行前建议先将原日志文件改名,以重新生成的新的日志文件为准。
不建议长时间进行拦截,请在一段时间后待服务器负载正常,攻击基本停止后及时取消拦截,恢复原先状态。
推火专家西部数码
网站设计
- 静宁会SEO的网站建设公司:全面提升您的网络影
- 提升在线业务的关键:选择最佳的丽水网站建设
- 浙江网站优化发展潜力如何
- 井研专业的网站建设公司:打造您的在线品牌
- 灵山SEO网站建设公司:提升您的在线业务表现
- 蒙城网站建设优化公司:提升您网站表现的理想
- 阳谷企业网站优化:提升线上业务力的关键
- 樟树专业的网站建设公司:打造您在线业务的坚
- 通河百度SEO排名的策略与技巧
- 重庆百度快照排名如何进行精准的客户引流
- 重庆百度快照排名
- 常宁便宜的建站公司:助您轻松打造在线业务
- 巫溪百度网站优化:提升网站曝光率与流量的关
- 湖北整站优化怎么做才能放大客户需求
- 闸北网站建设多少钱?全面解析与预算规划
- 辽宁企业网站优化怎么做电话营销