是的,配置 Fedora 20 的防火墙命令。尝试将入站流量限制为仅 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
答案1
--get-services
显示firewalld 知道的所有服务,而不是您已打开端口的服务。
--list-services
显示您已打开端口的端口。
您可以在iptables
列表中看到只有端口 22、80 和 443 是开放的,这正是您所想要的。
最后,关于 ping:默认情况下,firewalld 允许所有 ICMP(因为除非你真的知道你在做什么)。如果你真的想“阻止 ping”,那么你必须明确地这样做。你可以使用--get-icmptypes
查看firewalld 知道的 ICMP 类型列表,并--add-icmp-block
阻止其中一种。请确保你在机器的控制台上,以防你把自己锁在外面。