Fedora

Fedora 的 firewall-cmd 顯示的可用服務比配置的多

  • June 3, 2014

所以,是的,配置 Fedora 20 的 firewall-cmd。試圖將入站流量限制為僅 http、https 和 ssh。但是,機器仍然響應 ping,並且 –get-service 命令顯示了我不使用的東西的洗衣清單。

為什麼斷開連接?

–get-service 命令是否準確,或者 –list-services 命令是否準確?

如果是後者,為什麼 ping 可以通過?

[root@build-node httpd]# firewall-cmd --get-service
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
[root@build-node httpd]# firewall-cmd --get-active-zone
public
 interfaces: eth0 eth1 eth2
[root@build-node httpd]# firewall-cmd --zone=public --list-services
http https ssh

此外,摘自 iptables -L -n。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
INPUT_direct  all  --  0.0.0.0/0            0.0.0.0/0
INPUT_ZONES_SOURCE  all  --  0.0.0.0/0            0.0.0.0/0
INPUT_ZONES  all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  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

Chain INPUT_ZONES (1 references)
target     prot opt source               destination
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]
IN_public  all  --  0.0.0.0/0            0.0.0.0/0           [goto]

Chain IN_public_allow (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 ctstate NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22 ctstate NEW

--get-service顯示 firewalld 知道的所有服務,而不是您為其打開埠的服務。

--list-services顯示您已為其打開埠的那些。

您可以在iptables清單中看到只有埠 22、80 和 443 是開放的,這就是您所說的您想要的。

最後,關於 ping:預設情況下,firewalld 允許所有 ICMP(因為阻止它通常是一個壞主意,除非您真的知道自己在做什麼)。如果你真的想“阻止 ping”,那麼你必須明確地這樣做。您可以使用--get-icmptypes查看 firewalld 知道的 ICMP 類型列表,並--add-icmp-block阻止其中一種。確保你在機器的控制台上,以防你把自己鎖在外面。

引用自:https://serverfault.com/questions/601381