我正在尝试阻止(减慢)对我的 sshd 服务器的暴力攻击。我正在遵循本指南http://www.rackaid.com/resources/how-to-block-ssh-brute-force-attacks/这基本上是说我只需要输入下面的 2 个命令。
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
我的 sshd 端口是 6622,所以我将条目从“22”更改为“6622”,并将这些命令放入。然后我尝试简单地测试新的 iptables。我到另一台电脑上故意输入错误的登录密码好几次。不幸的是,新规则似乎并没有阻止我尝试尽可能多的尝试。下面列出的是我目前的规则。我究竟做错了什么?
# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:6622 state NEW recent: UPDATE seconds: 60 hit_count: 4 name: DEFAULT side: source
tcp -- anywhere anywhere tcp dpt:6622 state NEW recent: SET name: DEFAULT side: source
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain LOGDROP (0 references)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
DROP all -- anywhere anywhere
答案1
正如 @banjer 在他的评论中指出的那样,您正在为实际问题尝试错误的解决方案。
你需要做的是设置 失败2禁止。它在后台使用 iptables 自动阻止来自各种来源的失败访问尝试的主机的连接尝试。它的用途非常广泛,可以让您添加和修改不同的阈值、模式以查找和禁止方法;你必须稍微调整它的默认 ssh 监狱来考虑你正在使用的非标准端口,但这应该不难。
答案2
我使用这样的规则来减慢速度:
iptables -A DDoS -m limit --limit 12/s --limit-burst 24 -j RETURN
iptables -A DDoS -j LOG --log-prefix "[DDos Attack?] "
iptables -A DDoS -j DROP
在其他地方我限制这样的事情:
LOGLIMIT="50/h"
LOGLIMITBURST="10"
iptables -A IANA -p tcp -m limit --limit $LOGLIMIT --limit-burst \
$LOGLIMITBURST -j DROP
答案3
你读过手册页吗?
人 sshd_config:
MaxAuthTries Specifies the maximum number of authentication attempts permitted per connection. Once the number of failures reaches half this value, additional failures are logged. The default is 6. MaxSessions Specifies the maximum number of open sessions permitted per network connection. The default is 10. MaxStartups Specifies the maximum number of concurrent unauthenticated connections to the SSH daemon. Additional connections will be dropped until authentication succeeds or the LoginGraceTime expires for a connection. The default is 10:30:100. Alternatively, random early drop can be enabled by specifying the three colon separated values “start:rate:full” (e.g. "10:30:60"). sshd(8) will refuse connection attempts with a probability of “rate/100” (30%) if there are currently “start” (10) unauthenticated connections. The probability increases linearly and all connection attempts are refused if the number of unauthenticated connections reaches “full” (60).
答案4
大多数教程使用-A
附加到规则集的末尾。 OP 用于-I
插入但没有索引,因此规则最终顺序错误。
调试 iptables 规则的一个有用工具是iptables -vL
列出规则以及每个规则已应用的次数。当意外计数为 0 时,它可以帮助您了解问题所在。