安全类脚本

安全类脚本

案例1:屏蔽每分钟访问超过 3 的 IP

#!/bin/bash
LOG=/var/log/httpd/access_log
DATE=$(date +%d/%b/%Y:%H:%M)
#DATE='28/Jan/2024:03:59'

tail -2000 $LOG | grep $DATE |awk  '{++IP[$1]} END {for (k in IP) if (IP[k] > 3) print k}' > deny_ip


while read line
do  
   iptables -L -n | tr -s " " | awk -F"[ :]" '/^DROP/ && $NF==80 {print $4}' > ipTempList #将已经添加ssh拒绝IP记录到临文件
  if ! grep $lin3 ipTempList
  then

    iptables -I INPUT -p tcp --dport 80 -s $line -j DROP
  fi    
done < deny_ip

rm -f deny_ip ipTempList

#!/bin/bash
# 定义日志文件路径
LOG=/var/log/httpd/access_log
# 获取当前日期和时间
DATE=$(date +%d/%b/%Y:%H:%M)
#DATE='28/Jan/2024:03:59'

# 从日志文件末尾取 2000 行,筛选出包含当前日期时间的行,然后使用 awk 统计 IP 出现次数,将出现次数大于 3 的 IP 输出到 deny_ip 文件
tail -2000 $LOG | grep $DATE |awk  '{++IP[$1]} END {for (k in IP) if (IP[k] > 3) print k}' > deny_ip


while read line
do  
    # 将 iptables 的 INPUT 链中规则为 DROP 且端口为 80 的源 IP 地址记录到临时文件 ipTempList
    iptables -L -n | tr -s " " | awk -F"[ :]" '/^DROP/ && $NF==80 {print $4}' > ipTempList 
    # 判断 deny_ip 中的 IP 地址是否已经在 iptables 的 INPUT 链中,如果不在,则添加一条 DROP 规则
    if! grep $lin3 ipTempList
    then
        iptables -I INPUT -p tcp --dport 80 -s $line -j DROP
    fi    
done < deny_ip

# 删除临时文件 deny_ip 和 ipTempList
rm -f deny_ip ipTempList

案例2:拒绝ssh暴力破解

一个小时内,连续密码错误4次。

Linux lastb 命令用于列出登入系统失败的用户相关信息。

[root@localhost scripts]# cat deny_ip_v2.sh 
#!/bin/bash

lastb | egrep -v "^btmp|^$" | awk '{++IP[$3]} END {for (k in IP) if (IP[k] > 3)  print k}' > deny_ip

while read line
do
   iptables -L -n | tr -s " "| awk -F"[: ]" '/^DROP/ && $NF==22 {print $4}' > tmp_ip
   if ! grep $line tmp_ip &>/dev/null
   then 
     iptables -I INPUT -p tcp --dport 22 -s $line -j DROP
   fi
done < deny_ip
rm -f deny_ip tmp_ip

[root@localhost scripts]# cat deny_ip_v3.sh 
#!/bin/bash

DATE=$(date +"%a %b %d %H")
lastb | egrep -v "^btmp|^$" | grep "$DATE" | awk '{++IP[$3]} END {for (k in IP) if (IP[k] > 3)  print k}' > deny_ip

while read line
do
   iptables -L -n | tr -s " "| awk -F"[: ]" '/^DROP/ && $NF==22 {print $4}' > tmp_ip
   if ! grep $line tmp_ip &>/dev/null
   then 
     iptables -I INPUT -p tcp --dport 22 -s $line -j DROP
   fi
done < deny_ip
rm -f deny_ip tmp_ip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值