为了防止 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 ![]() 用 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 ![]() 禁止密码登陆,用密钥登陆多好 |
11 frostfall OP @ProjectAmber 嗯,是这样,但最后还要加上不限 IP 的规则才可生效 |