我在基于 Linux 的路由器后面有一个 FreeBSD 系统(使用DD-WRT 固件)。FreeBSD 系统正在运行 sshd,并且会定期被各种 script-kiddies 探测。
它当前运行一个脚本,当看到同一 IP 地址登录尝试超过 3 次失败时,会完全阻止该地址。该阻止曾经是本地的(使用 FreeBSD 的ipfw),但我想通过要求路由器进行阻止来覆盖整个 LAN。这让我开始使用 Linux 的防火墙手段——iptables。
如果我使用:
iptables -I INPUT -s $IP -j DROP
Run Code Online (Sandbox Code Playgroud)
那么路由器将拒绝尝试联系路由器本身的 IP,但会愉快地将连接转发到 LAN。
如果我使用
iptables -I FORWARD -s $IP -j DROP
Run Code Online (Sandbox Code Playgroud)
它将阻止攻击者访问我的 LAN,但会保持路由器可访问他们。
是否有一些单一的规则——或者至少是单一的命令——我可以为每个攻击 IP 拦截任何进出它的流量?
谢谢你!
是否有一些单一的规则——或者至少是单一的命令——我可以为每个攻击 IP 拦截任何进出它的流量?
您需要两个 iptables 规则,因为您需要阻止两个不同的流。
但不是直接阻止 IP 地址:设置ipset黑名单
ipset create blacklist hash:ip hashsize 4096
Run Code Online (Sandbox Code Playgroud)
设置 iptables 规则以匹配该黑名单,这是一次性的工作:
iptables -I INPUT -m set --match-set blacklist src -j DROP
iptables -I FORWARD -m set --match-set blacklist src -j DROP
Run Code Online (Sandbox Code Playgroud)
然后您可以使用单个命令添加您需要阻止的每个 IP 地址:
ipset add blacklist 192.168.0.5
ipset add blacklist 192.168.0.100
Run Code Online (Sandbox Code Playgroud)
ETC。