我有一个 TLS 站点 Apache,它使用基本身份验证来保护资源。
我正在尝试设置 iptables 规则来防止端口 443 上的暴力攻击,因此我在 bash 脚本中添加了以下 iptables 规则。
$IPTABLES -N SSL-Brute-Force
$IPTABLES -A INPUT -m tcp -p tcp --dport 443 -j SSL-Brute-Force
$IPTABLES -A SSL-Brute-Force -m state --state NEW -m recent --set --name SSL --rsource
$IPTABLES -A SSL-Brute-Force -m state --state NEW -m recent --update --seconds 600 --hitcount 5 --name SSL --rsource -j LOG --log-prefix "[SSL Brute Force] "
$IPTABLES -A SSL-Brute-Force -m state --state NEW -m recent --update --seconds 600 --hitcount 5 --name SSL --rsource -j DROP
$IPTABLES -A SSL-Brute-Force -j ACCEPT
现在我根本无法访问我的网站,也看不到发送到端口 443 的每个数据包都被丢弃在我的消息文件中。
我是否正确理解了这些规则?
答案1
否。将--update
选项替换为--rcheck
;外观更新已经发生--set
。相同--update
的数据包在通过规则时最多会导致三个更新。特别是,它可能DROP
在没有匹配LOG
规则的情况下很好地匹配规则,因为每一个都会增加命中计数。
更改为--rcheck
应该会打开它,以便您每 10 分钟查看一个网页,其中包含一个样式表和三个图像。
值得注意的是,页面的每个单独组件(样式表、javascript、图像和框架)都会导致新的连接。因此,您可能还需要5
根据网页的分解程度更改为更高的值。问题是用户在 600 秒内会浏览多少个页面,以及每个页面需要多少个连接。