区域(zones)默认情况下内置了一些有效的区域。我们需要为网络接口分配区域。
区域(zones)规定了区域是网络接口信任或者不信任网络连接的标准。
区域(zones)包含服务和端口。
Firewalld中的区域(zones)。
丢弃区域(Drop Zone) :如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。
阻塞区域(Block Zone) :阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过。
公共区域(Public Zone) :只接受那些被选中的连接,而这些通过在公共区域中定义相关规则实现。服务器可以通过特定的端口数据,而其它的连接将被丢弃。
外部区域(External Zone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,而其它的连接将被丢弃或者不被接受。
隔离区域(DMZ Zone) :如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性。
工作区域(Work Zone) :在这个区域,我们只能定义内部网络。比如私有网络通信才被允许。
家庭区域(Home Zone) :这个区域专门用于家庭环境。我们可以利用这个区域来信任网络上其它主机不会侵害你的主机。它同样只允许被选中的连接。
内部区域(Internal Zone):这个区域和工作区域(Work Zone)类似,只有通过被选中的连接。
信任区域(Trusted Zone) :信任区域允许所有网络通信通过。
查看所有区域:
[root@localhost ~]# firewall-cmd --get-zones block dmz drop external home internal public trusted work
查看默认区域:
[root@localhost ~]# firewall-cmd --get-default-zone public
查看所有区域详细信息:
[root@localhost ~]# firewall-cmd --list-all-zones 这条命令列出每种区域如block、dmz、drop、external、home、internal、public、trusted以及work。如果区域还有其它详细规则(rich-rules)、启用的服务或者端口,这些区域信息也会分别被罗列出来。
修改默认区域:
[root@localhost ~]# firewall-cmd --set-default-zone=internal success [root@localhost ~]# firewall-cmd --get-default-zone internal
更改的默认区域都会在 /etc/firewalld/firewalld.conf 中体现出来(DefaultZone=)
查看接口绑定在哪个区域:
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens192 #接口名称 internal
icmp类型:
[root@localhost ~]# firewall-cmd --get-icmptype destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
查看firewall的预定义服务:
[root@localhost ~]# firewall-cmd --get-services 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
这些预定义服务配置文件位于 /usr/lib/firewalld/services 下,并且以服务名命名。
创建自定义服务:
拷贝一个预定义服务配置文件到firewalld目录下的services,比如rtmp服务,端口号为1935,协议为tcp。
[root@localhost ~]# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/rtmp.xml <?xml version="1.0" encoding="utf-8"?> <service> <short>rtmp</short> <description>rtmp media service.</description> <port protocol="tcp" port="1935"/> </service>
short 部分为简短头部信息
description 为服务描述
port 定义协议类型及端口号
重新载入设置,不断开已连接的会话:
[root@localhost ~]# firewall-cmd --reload success
重新载入设置,会断开已连接的会话:
[root@localhost ~]# firewall-cmd --complete-reload success
查看自定义服务是否加载:
[root@localhost ~]# firewall-cmd --get-services 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 rtmp samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
查看运行状态:
[root@localhost ~]# firewall-cmd --state running [root@localhost ~]# firewall-cmd --get-active-zones public interfaces: ens192
列出默认区域中有效的服务:
[root@localhost ~]# 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 rtmp samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https
添加rtmp服务到区域中:
[root@localhost ~]# firewall-cmd --add-service=rtmp #临时添加,重启服务时效。 [root@localhost ~]# firewall-cmd --permanent --add-service=rtmp #永久生效,写入到当前区域的配置文件(/etc/firewalld/zones/public.xml)。
移除服务:
[root@localhost ~]# firewall-cmd --zone=public --remove-service=rtmp success
注意:通过firewall-cmd --add-service=rtmp添加服务,会立即生效,如果加--permanent参数需要重新载入服务(firewall-cmd --reload)生效。 在移除服务时,不加--permanent参数只是临时移除,重新载入服务,依旧存在。
添加端口到默认区域:
[root@localhost ~]# firewall-cmd --permanent --add-port=8080/tcp #直接写入到/etc/firewalld/zones/public.xml 然后执行firewall-cmd --reload 生效。
添加批量端口到默认区域:
[root@localhost ~]# firewall-cmd --permanent --add-port=2000-3000/tcp success
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3405.html