通过 DHCP 远程访问的服务器的 Iptables 规则

通过 DHCP 远程访问的服务器的 Iptables 规则

很抱歉问这个问题 - 但我一直在浏览有关此主题的论坛和帖子,似乎让自己感到困惑而不是真正得到任何澄清。我需要的只是对这个问题的一个简短而简洁的答案:

如何在 iptables 中设置一条(链式)规则,拒绝在 YY 分钟内尝试 XX 次后仍无法访问服务器的任何源,以便在 ZZ 分钟内密码匹配之前拒绝任何进一步联系服务器的尝试。在最后一次连接尝试后的 ZZ 分钟内,规则必须允许同一源重试其尝试,就像它之前从未尝试过重新连接一样。

  • 我认为这必须写成一条新的链式法则。
  • 我假设链式规则必须保存到 iptables,以便在重启时恢复该规则。
  • 我认为链式法则需要某种类型的记录。

我的问题是我不明白iptables句法不管我对此研究了多少,因此我很感激对这个问题最简短的“脚本类型”回答

答案1

嗯,老实说,iptables 有一点难学习。

首先可以使用ufw来启动,ubw是一个强大的命令行工具,优点是语法和iptables类似。

sudo ufw enable
sudo ufw limit 22

这里我限制了端口 22,您可以使用任何您想要的端口。

https://help.ubuntu.com/11.10/serverguide/C/firewall.html

再次,优点是 ufw 将自动执行大部分操作并简化您的学习过程。

如果您想使用 iptables,您至少需要学习保存和恢复您的规则。

sudo iptables-save > /etc/iptables.save
sudo iptables-restore /etc/iptables.save

您可以编辑/etc/iptables.save,语法足够简单。

当尝试远程规则时,使用iptables-apply以防止锁定

sudo iptables-apply /etc/iptables.save

要在启动时恢复规则,其中一种方法是将其添加到 /etc/rc.local

iptables-restore /etc/iptables.save

Ubuntu iptables wiki 页面中列出的其他选项(见下文)。

iptables 语法是

iptables -I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT

要记录日志,请添加日志,但除非您要监控日志,否则请使用 snort。在我看来,记录 iptables 对调试更有帮助。

请参阅 man iptables,Ubuntu 维基百科 iptables

有些人发现我的 iptables 网页很有帮助。

要回答您的评论,请参阅这些规则

iptables -A INPUT -p tcp -m tcp --dport 22 -m tcp -m state --state NEW -m recent --set --name SSH --rsource

iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 600 --hitcount 8 --rttl --name SSH --rsource -j DROP

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

http://kevin.vanzonneveld.net/techblog/article/block_brute_force_attacks_with_iptables/

需要注意的是,这取决于服务。ssh 配置为允许多次尝试密码验证 (9see /etc/ssh/sshd_config),因此每个连接都会提供 6 次密码尝试机会。

相关内容