Joe*_*ite 6 linux firewall iptables
Debian 上是否有程序可以通过启动命令(指定 IP 和持续时间)来临时阻止 IP 地址?
单独使用 iptables/ip6tables 我可以创建一个规则,但我必须手动删除。我也使用fail2ban,但我认为我无法阻止不满足任何fail2ban 规则的任意IP 地址。
您需要创建一个 ipset,以便 iptables 可以与之匹配。注意超时 0表示默认值是永不过期。
ipset create temp_hosts hash:ip timeout 0
iptables -I INPUT 1 -m set -j DROP --match-set temp_hosts src
iptables -I FORWARD 1 -m set -j DROP --match-set temp_hosts src
Run Code Online (Sandbox Code Playgroud)
现在我们的集合已经创建,我们可以开始添加 ip 地址(超时单位:秒)。
ipset add temp_hosts 1.1.1.2 timeout 400
Run Code Online (Sandbox Code Playgroud)
请注意,如果您需要这些才能在重新启动后继续存在,您需要保存和加载规则。
ipset save -f /path/ipset.save
ipset restore -f /path/ipset.save
Run Code Online (Sandbox Code Playgroud)
这些可以通过 cron 或 systemd 自动化。
尝试这个脚本,灵感来自 Dan 的评论:
#!/bin/bash
iptables -I INPUT -s $1 -j DROP
at ${2:-now+1hour} <<<"iptables -D INPUT -s $1 -j DROP"
Run Code Online (Sandbox Code Playgroud)
将其另存为/usr/local/sbin/blockip
并运行blockip 1.2.3.4
或blockip 1.2.3.4 now+2hours
. 默认情况下,IP 被阻止 1 小时。
如果您更喜欢 REJECT 语义,则可以将 DROP 替换为 REJECT。
归档时间: |
|
查看次数: |
6014 次 |
最近记录: |