1.Firewalld防火墙简介

firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念

firewalld有图形界面和工具界面,由于我在服务器上使用,图形界面请参照官方文档,本文以字符界面做介绍

firewalld的字符界面管理工具是 firewall-cmd 

firewalld默认配置文件有两个:/usr/lib/firewalld/ (系统配置,尽量不要修改)和 /etc/firewalld/ (用户配置地址)

2.firewall的9个zone:

drop:默认丢弃所有包,没有任何回复,仅能有发送出去的网络连接

block:任何接受的网络连接都被IPv4和IPv6的icmp-host-prohibited信息所拒绝

public:在公共区域使用,不能相信网络内的其他计算机不会对你的计算机造成危害,只能接受经过选取的连接

internal:用于内部网络。仅仅接受经过选择的连接

external:特别是未路由器启用了伪装功能的外部网,你不能相信来自网络的其他计算机,不能相信他们不会对你的电脑造成危害。

dmz:用于你的非军事区的电脑,此区域内可以公开访问,仅仅接受经过选择的连接

work:用于工作区,可以基本信任区域内的计算机不会危害你的电脑

home:类似家庭组

trusted:信任所有连接,可以接受所有的网络连接

3.zone的相关操作

①查看zone

[root@test_01 ~]# firewall-cmd --get-zones
work drop internal external trusted home dmz public block

②查看默认的zone

[root@test_01 ~]# firewall-cmd --get-default-zone
public

③查看网卡所属的zone

[root@test_01 ~]# firewall-cmd --get-zone-of-interface=ens33
public
[root@test_01 ~]# firewall-cmd --get-zone-of-interface=ens37
no zone

④设置网卡的zone

[root@test_01 ~]# firewall-cmd --zone=dmz --add-interface=ens37
The interface is under control of NetworkManager, setting zone to 'dmz'.
success

⑤给指定网卡更改/删除zone

[root@test_01 ~]# firewall-cmd --zone=block --change-interface=ens37
The interface is under control of NetworkManager, setting zone to 'block'.
success
[root@test_01 ~]# firewall-cmd --zone=block --remove-interface=ens37
The interface is under control of NetworkManager, setting zone to default.
success

⑥列出所有services

[root@test_01 ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp open*** pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

⑦查看某个zone的services

[root@test_01 ~]# firewall-cmd --zone=work  --list-services
ssh dhcpv6-client

⑧向某个zone加入服务

[root@test_01 ~]# firewall-cmd --zone=public  --add-service=http
success
[root@test_01 ~]# firewall-cmd --zone=public  --list-services
dhcpv6-client ssh http
[root@test_01 ~]# cat /etc/firewalld/zones/public.xml


  Public
  For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.
  
  

此处配置文件中并未显示http,因为该项改动并非永久性改动。如果需要永久性修改,需要加上--permanent

[root@test_01 ~]# firewall-cmd --zone=public  --add-service=http --permanent
success
[root@test_01 ~]# cat /etc/firewalld/zones/public.xml              

  Public
  For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.