防火墙%%拒绝%%

防火墙%%拒绝%%

firewalld (v0.4.4.2)我正在尝试在 Debian 9 上配置REJECT来自内部网络的无效请求。

但是,如果我将相关区域的默认目标设置为REJECT,请求仍然会被丢弃。 (如果我测试它,我会得到连接超时而不是被拒绝。)

根据文档REJECT不是静态分配的,但是:

%%REJECT%% 目标用于块区域中以拒绝 (使用默认的firewalld拒绝类型)每个数据包不匹配任何规则。

所以看来默认拒绝类型是错误的。我不知道如何改变这个。感谢您的任何建议。

iptables -L(裁剪):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited
[...]

也许firewalld正在使用REJECT上面的内容,但它看起来很好icmp-host-prohibited。但是我没有从客户那里得到这个答案。

iptables -vnL:

Chain IN_internal (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 IN_internal_log  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 IN_internal_deny  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 IN_internal_allow  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

答案1

有时,某些操作系统可能无法正确响应icmp-host-prohibitedTCP 连接的消息,因为拒绝 TCP 连接的经典预期方法是通过 TCP RST 数据包。 (或者某些防火墙可能无法识别与 TCP 连接尝试相关的 ICMP 响应,并将其过滤掉?)

iptables(并且通过扩展,也)的默认拒绝方法firewalldicmp-host-prohibited,它试图成为一种“一刀切”的拒绝方法,同样适用于所有协议。因此,您可能希望使用拒绝类型为 TCP 数据包添加自定义拒绝规则tcp-reset

TCP 拒绝的丰富规则的语法firewall-cmd如下所示:

firewall-cmd --zone=internal --add-rich-rule='rule protocol value="tcp" reject type="tcp-reset"'

相关内容