服务器经常会发现一些外网IP来攻击,除了用fail2ban这些工具外,有时也要手动操作,以下是一个shell 需要配合conntrack/firewall-cmd 使用,先安装一下 conntrack (apt/yum)
使用方法:
# 立即阻断198.12.105.178的所有SIP访问
ban.sh 198.12.105.178
把以下代码保存为ban.sh 并 chmod +x ban.sh
#!/bin/bash
立即阻断198.12.105.178的所有$2
ATTACKER_IP="$1"
SIP_SERVER="192.168.2.88"
ROUTER="192.168.2.1"
# 1. 本地防火墙立即阻断
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='$ATTACKER_IP' port port='5060' protocol='udp' reject"
sudo firewall-cmd --reload
# 2. 清除现有连接
sudo conntrack -D --orig-dst $SIP_SERVER --proto udp --dport 5060 --src $ATTACKER_IP
# 3. 路由器临时阻断(需ssh免密登录配置)
#ssh admin@$ROUTER "iptables -I FORWARD -s $ATTACKER_IP -d $SIP_SERVER -p udp --dport 5060 -j DROP"
# 4. 验证结果
echo "当前被阻断的SIP连接:"
sudo firewall-cmd --list-rich-rules | grep $ATTACKER_IP
sudo conntrack -L | grep $ATTACKER_IP