ufw 和 iptables 混淆

ufw 和 iptables 混淆

我之前通过 iptables 添加了一些 netfilter 规则。现在我想通过 ufw 管理这些规则,为了简化操作,我想删除当前规则并重新开始,就像我从一开始就使用 ufw 一样。

我运行sudo iptables --flush删除所有当前规则,然后sudo ufw allow 22允许 ssh 和sudo ufw enable。然后我被踢出了我的 ssh 会话,所以规则显然没有起作用。

我重新连接控制台会话并与sudo iptables -L -v使用 ufw 的另一台服务器进行了比较,我注意到该服务器上的顶部 INPUT 链为空,而工作服务器有:

Chain INPUT (policy DROP 77 packets, 3613 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 3842  682K ufw-before-logging-input  all  --  any    any     anywhere             anywhere            
 3842  682K ufw-before-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-after-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-after-logging-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-reject-input  all  --  any    any     anywhere             anywhere            
  422 32270 ufw-track-input  all  --  any    any     anywhere             anywhere 

看起来刷新已经清除了 ufw 应用于 INPUT 链的一些默认规则,这是一个正确的假设吗?如果是这样,a) 我该如何修复这种情况,b) 我该如何正确执行此过程?

答案1

事实证明我的怀疑是正确的,sudo iptables --flushufw 的 INPUT 链规则被清除,这些规则调用了它自己的自定义链。无论出于什么原因(我仍然不知道),ufw 在启用时没有将这些规则放回去。

为了让 ufw 重新添加这些规则,我必须从 iptables 中删除所有 ufw 链,然后启用 ufw。我这样做了:

sudo iptables -X ufw-after-forward
sudo iptables -X ufw-after-input
sudo iptables -X ufw-after-logging-forward
sudo iptables -X ufw-after-logging-input
sudo iptables -X ufw-after-logging-output
sudo iptables -X ufw-after-output
sudo iptables -X ufw-before-forward
sudo iptables -X ufw-before-input
sudo iptables -X ufw-before-logging-forward
sudo iptables -X ufw-before-logging-input
sudo iptables -X ufw-before-logging-output
sudo iptables -X ufw-before-output
sudo iptables -X ufw-reject-forward
sudo iptables -X ufw-reject-input
sudo iptables -X ufw-reject-output
sudo iptables -X ufw-track-input
sudo iptables -X ufw-track-output

当我之后启用 ufw 时,它正确设置了 iptables。

相关内容