我有一个通过 SSH 连接的远程系统。由于我计划让这个系统更易于公开访问,因此我想改进我的 iptables 规则,使其不再局限于当前的“接受任何内容”策略。
我已经添加了“iptables -A INPUT -p tcp --dport 22 -j ACCEPT”规则,但是我并不想以一种可能会将自己锁在系统之外的方式来更改默认规则(而且现在解决这个问题会花费我一天的时间和一张火车票)。
有没有什么方法可以让我更改 iptables(比如将默认规则更改为 DROP),并设置 5 分钟的超时时间,这样如果我更改错误并锁定了所有人,我只需等待一段时间再试一次?
答案1
大多数 Linux 发行版都带有iptables-应用脚本已安装或可通过包管理器获取。它将允许您应用一组新的 iptables 规则,如果您未确认它们在一定时间内有效,则会自动回滚。
答案2
除其他外,你应该iptables规则,其中规定:
sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
如果没有,您可以按如下方式设置:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
或者,如果这不起作用,
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
这样,你修改的会话iptables肯定不会受到影响。
现在你可以开始修改iptables随心所欲,当你想尝试一条新规则时,只需从客户端电脑开始清楚的ssh 会话。ESTABLISHED、RELATED 规则不适用于此新会话,因此您可以实时查看新规则集是否已切断您的连接,而不会带来任何风险。
答案3
如果你使用ipset一切都可以自动化
ipset create test hash:ip timeout 300
iptables -A INPUT -p tcp -m tcp -m multiport -m state --state NEW -j SET --add-set test src ! --dports 25,80,993,5900
iptables -A input_ext -m set -j DROP --match-set test src
将端口选项更改为您想要的任何选项。
需要在重启之间保存列表吗?
ipset save >backup.txt
需要 tor 恢复吗?
ipset restore <backup.txt
您想要数据包字节计数器吗?
添加关键字计数器到最后创建ipset陈述。
答案4
只需安装 fail2ban 并启用 ssh 和 ssd-dos 即可。您可以轻松设置禁止时间。另一种方法是安装其他远程访问,例如 Webmin,并在非标准端口上运行它。
将这些行添加到过滤器 sshd.conf 中,并在 failregex 部分末尾添加这些行
vi /etc/fail2ban/filter.d/sshd.conf
.... ^%(__prefix_line)s 由 [preauth]$ 关闭的连接 ^%(__prefix_line)s 收到来自 : 11: 的断开连接 (再见)? [preauth]$ ^%(__prefix_line)s 收到来自 : 3: 的断开连接 \S+: 身份验证失败$ ^%(__prefix_line)s(?:error: )? 收到来自 : 3: 的断开连接 .*: 身份验证失败(?: [preauth])?$
http://www.garasiku.web.id/web/joomla/index.php/security/90-fail2ban-blocking-preauthentication