为了防止 SSH 暴力破解,除了更改端口外,一般我们都使用以下方法: iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP 但是有一个问题(虽然几率很小),那就是自己连续输错了好几次,导致自己客户机端的 IP 被禁掉 当然事后的解决方法有很多,换 IP 登陆,云主机的话使用 web 面板登陆。。。等等 但是有没有直接将特定 IP 排除在外的方法,自己人即使屡次输错密码也不会禁掉?
1
tys 2017-02-10 17:12:43 +08:00 via iPhone
将你的 ip 放入 hosts.allow , hosts.deny 里禁止所有 ip 连接。
|
2
n7then 2017-02-10 17:17:22 +08:00
为什么不直接改端口..
|
3
j4fun 2017-02-10 17:18:12 +08:00
iptables -I INPUT -s 你的 IP -p tcp --dport 22 -j RETURN
有几个加几个。。 |
4
ProjectAmber 2017-02-10 17:19:15 +08:00
-A INPUT -s $(IP)/32 -p tcp -m tcp --dport 22 -j ACCEPT
把这条放前面? |
5
xiaopc 2017-02-10 17:21:38 +08:00 via Android 1
用 fail2ban 加白名单?
|
6
TerrenceSun 2017-02-10 17:24:49 +08:00
fail2ban
|
7
frostfall OP 在虚拟机里实验了一下,问题解决了,规则很简单,但是顺序一定不能错
1 、 iptables -A INPUT -p tcp --dport 22 -s 192.168.*.* -j ACCEPT 2 、 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set 3 、 iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP 4 、 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables 遵循从上到下的规则,假如反过来则只会执行 iptables -A INPUT -p tcp --dport 22 -s 192.168.*.* -j ACCEPT 这一条 |
8
justsky 2017-02-10 17:44:14 +08:00 1
禁止密码登陆,用密钥登陆多好
|
11
frostfall OP @ProjectAmber 嗯,是这样,但最后还要加上不限 IP 的规则才可生效
|