使用firewalld暂时拒绝所有传入流量

使用firewalld暂时拒绝所有传入流量

我正在寻找与ufw default denyfirewalld等效的东西;这个想法是,当我通过 SSH 登录到我的新服务器后,我想阻止所有传入的新连接,以便我有时间更新和保护系统。我使用带有firewalld的CentOS7。

答案1

由此看来服务器故障后限制更高级别的流量需要“丰富”的规则

要实施在默认区域上制定的丰富规则,以丢弃任何和所有 IPv4 流量:

firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
  --add-rich-rule='rule family=ipv4 source address=0.0.0.0/0 drop'

这模仿了ufw default deny行为;要改为发送 ICMP 拒绝消息,请将 更改dropreject。上述规则特定于 IPv4;对于 IPv6,请使用:

firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
  --add-rich-rule='rule family=ipv6 source address=::/0 drop'

经过调查,这会在 iptables 中添加一个条目“接受相关且已建立”的连接,因此它不会破坏您现有的 ssh 会话。在我的测试中,生成的 iptables“链”(对于默认区域“public”):

INPUT -> INPUT_ZONES -> IN_public -> IN_public_deny

如果您希望在更新过程中重新启动,请添加该--permanent标志。

如果您不希望在更新过程中重新启动,则可以使用该--timeout标志,它接受诸如5s10m或 之类的值15h,分别表示“5 秒”、“10 分钟”或“15 小时”。此类规则将在该超时期限后被删除。

当您想要删除已添加的规则时,只需firewall-cmd像以前一样运行,但替换--add-rich-rule--remove-rich-rule;以 IPv4 为例:

firewall-cmd --zone=$(firewall-cmd --get-default-zone) \
  --remove-rich-rule='rule family=ipv4 source address=0.0.0.0/0 accept'

参考:http://www.firewalld.org/documentation/man-pages/firewalld.richlanguage.html

相关内容