shell安全类脚本(1.屏蔽每分钟访问过多的IP;2.拒绝ssh暴力破解)

一、屏蔽每分钟访问次数过多的ip

复制代码
# 编写脚本
[root@openEuler-1 script]# vim deny_frequent_ip.sh
[root@openEuler-1 script]# cat deny_frequent_ip.sh
#!/bin/bash
#########################
#File name:deny_frequent_ip.sh
#Email:obboda@163.com
#Created time:2025-01-15 11:44:05
#Description:屏蔽每分钟访问次数过多的ip
#########################

LOG=/var/log/nginx/access.log
DATE=$(date +%d/%b/%Y:%H:%M)


cat $LOG | grep $DATE | awk  '{IP[$1]++} END {for (k in IP) if (IP[k] > 10) print k}' > deny_ip
iptables -nL | tr -s " " | awk -F'[ :]' '/^DROP/ && $NF==80  {print $4}' > exist_deny_ip

while read line
do
        if ! grep -w "$line" exist_deny_ip &> /dev/null
        then
                iptables -I INPUT -p tcp --dport 80 -s $line -j DROP
        fi
done < deny_ip

rm -f deny_ip exist_deny_ip


# 创建计划任务(每分钟执行一次)
[root@openEuler-1 script]# crontab -e
crontab: installing new crontab

# 查看计划任务
[root@openEuler-1 script]# crontab -l
*/1 * * * * bash /server/script/deny_frequent_ip.sh

二、拒绝ssh暴力破解(一小时内大于5次)

复制代码
# 编写脚本
[root@openEuler-1 script]# vim deny_frequent_ip_v2.sh
[root@openEuler-1 script]# cat deny_frequent_ip_v2.sh
#!/bin/bash
#########################
#File name:deny_frequent_ip_v2.sh
#Email:obboda@163.com
#Created time:2025-01-15 13:12:05
#Description:拒绝ssh暴力破解(一小时内大于5次)
#########################

DATE=$(date +"%b %d %H")

lastb | grep "$DATE" | awk '{IP[$3]++} END{for (k in IP) if (IP[k]>4) print k}' > deny_ip
iptables -nL | tr -s " " | awk -F'[ :]' '/^DROP/ && $NF==22  {print $4}' > exist_deny_ip

while read line
do
        if ! grep -w "$line" exist_deny_ip &> /dev/null
        then
                iptables -I INPUT -p tcp --dport 22 -s $line -j DROP
        fi
done < deny_ip

rm -f deny_ip exist_deny_ip


# 创建计划任务(每个小时执行一次)
[root@openEuler-1 script]# crontab -e
crontab: installing new crontab

# 查看计划任务
[root@openEuler-1 script]# crontab -l
*/1 * * * * bash /server/script/deny_frequent_ip.sh
* */1 * * * bash /server/script/deny_frequent_ip_v2.sh

# 删除计划脚本
[root@openEuler-1 script]# crontab -r
[root@openEuler-1 script]# crontab -l
no crontab for root
相关推荐
Ai拆代码的曹操14 小时前
Nginx upstream keepalive 连接池中毒排查实录
chrome·nginx·php
IT小白杨14 小时前
防关联用指纹浏览器还是虚拟机好?2026年技术架构深度对比与选型决策
chrome·经验分享·microsoft·架构·安全架构·指纹浏览器
我是小灰灰吖14 小时前
Ubuntu 22.04 安装 SSH 服务与远程调试环境配置指南
qt·ubuntu·ssh
March.s1 天前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
wsad05321 天前
CentOS Stream 10 配置静态 IP 完整指南
linux·tcp/ip·centos
似水এ᭄往昔1 天前
【Linux网络编程】--TCP_Socket
linux·网络·tcp/ip
esabby1 天前
253个原生IP + 40M独享回国带宽:香港站群服务器的硬核拆解
服务器·网络协议·tcp/ip
treesforest1 天前
随意装软件也会被恶意IP入侵电脑?
网络·网络协议·tcp/ip·网络安全·ip属地·查ip归属地
可爱系程序猿2 天前
网络打印机地址正常却无法出纸:从 TCP/IP 端口到 Print Spooler 的排错步骤
网络·网络协议·tcp/ip
Dontla2 天前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh