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
相关推荐
Qinana2 天前
从数据包旅程到首屏渲染:深入理解 TCP/IP 如何决定你的 Web 性能
前端·tcp/ip·浏览器
谢小飞2 天前
如何让AI用一个下午开发上架Chrome插件助我摸鱼
前端·chrome
小溪彼岸3 天前
谷歌发布Gemini in Chrome,Chrome正式成为AI浏览器
chrome·google
小溪彼岸3 天前
谷歌上线Gemini in Chrome,想免费使用还需打怪升级
chrome·google
fthux4 天前
大道至简 - Juejin Notifier - 掘金消息通知小助手
chrome
blasit8 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
埃博拉酱12 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
简离12 天前
前端调试实战:基于 chrome://webrtc-internals/ 高效排查WebRTC问题
前端·chrome·webrtc
gihigo199813 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
zhangfeng113313 天前
趋动云 如何ssh登录 服务区 项目server
运维·人工智能·ssh