Rootop 服务器运维与web架构

centos7中firewalld防火墙整理文档

区域(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

作者:Venus

服务器运维与性能优化

评论已关闭。