这与暴力攻击的其他post类似,但更具体一些:
我们通常能够执行体面的密码,并且用户名策略也避免了99.9%的FTP傀儡正在尝试的东西,但是我没有理由让数千次的尝试无休止地,有时他们可以使填充日志文件有很多的噪音,使其更难find更有针对性的东西。
那么,对于被动的FTP,在传入的TCP 21的iptables中有一些合理的速率限制,在切断大量失败的尝试而不会妨碍正常使用的情况下是合理有效的? 我认为这将通过从同一个IP到TCP 21的速率限制连接来完成。是正确的吗? 我有没有想到那里的问题?
接下来, 你会build议在堡垒防火墙/路由器上使用一个简单的iptables命令来防御最困难/最快的暴力攻击? 我的想法是在一分钟左右触发25个连接(原则上成功login到TCP 21的唯一连接),然后一个半小时。 这些数字看起来是否合理?
(其他信息:这是一个debian防火墙/路由器,它可以保护混合操作系统的DMZ)
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -m recent --name ftpattack --set iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --name ftpattack --rcheck --seconds 60 --hitcount 4 -j LOG --log-prefix 'FTP REJECT: ' iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --name ftpattack --rcheck --seconds 60 --hitcount 4 -j REJECT --reject-with tcp-reset
靠近或位于规则集顶部的这些规则将只允许三个连接到端口21,从任何给定的IP地址,滚动60秒窗口。 要允许n,请使用--hitcount n+1 ; 使用比60秒更大的窗口,增加 – --seconds 60 。
正如MadHatter所提到的,最近的模块是你想要使用的,但是你也需要能够限制一个用户在单个TCP连接中能够尝试的login尝试次数。 如果用户在强制断开和重新连接之前可以尝试1000次尝试,那么通过最近的模块限制连接是非常没有用的。 您需要说(通过configurationFTP守护进程 – 请参阅文档),每个连接只允许用户尝试login5次,然后使用最近的规则说明是否连接更多,然后说5一分钟之内,然后阻止他们。 是的,允许25次尝试听起来很高,但不足以蛮力,并有助于避免大量的误报。 我使用与SSH相似的规则和OpenSSH服务器选项MaxAuthTries。 希望这可以帮助。
使用Denyhosts … 3罢工 – 你出去!
它像一个魅力..
或者更多的核心..一个专门的Snort / IDS防火墙
希望这可以帮助