Firewalld规则配置


防火墙简介

CentOS7中防火墙已经成为一个非常强大的功能,它对Iptables防火墙进行了升级;
firewalld是一款动态防火墙管理工具。所谓动态防火墙,是指firewalld在运行时,任何规则的变更都不需要对防火墙规则列表进行重新加载,只需要将变更部分保存并更新运行即可。
firewalld支持针对网络区域(zone)、服务(service)、端口(port)、网桥(eth)及富规则(rich-role)进行防火墙规则配置;同时支持支持IPv4和IPv6设置以及临时或永久规则配置;

Zone

Zone一般翻译为网络区域,是firewalld引入的一个新的概念,网络区域定义了网络链接的可信级别;
firewalld内置了9种区域:

  • drop:翻译为丢弃区域,丢弃所有传入流量,并且不产生包含ICMP的错误响应;
  • block:翻译为限制区域,拒绝所有传入流量,并给予回复;
  • public:翻译为公共区域,允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝;public是网卡的默认区域
  • external:翻译为外部区域,允许与 ssh 预定义服务匹配的传入流量,其余均拒绝。 默认将通过此区域转发的IPv4传出流量将进行地址伪装,可用于为 路由器启用了伪装功能的外部网络;
  • dmz:翻译为隔离区或非军事区,该区域公开提供外部访问,允许与 ssh 预定义服务匹配的传入流量进入内部网络,其余均拒绝;
  • work:翻译为工作区域,允许与 ssh、ipp-client、dhcpv6-client 预定义服务匹配的传入流量,其余均拒绝;
  • home:翻译为家庭区域,允许与ssh、ipp-client、mdns、samba-client或dhcpv6-client预定义服务匹配的传入流量,其余均拒绝;
  • internal:翻译为内部区域,默认值时与home区域相同;
  • trusted:翻译为信任区域,可接受所有网络请求;

防火墙数据处理流程

firewalld对于进入系统的数据包,会根据数据包的源IP地址或传入的网络接口等条件,将数据流量转入相应区域的防火墙规则。对于进入系统的数据包,首先检查的就是其源地址;

  1. 若源地址关联到特定的区域(即源地址或接口绑定的区域有冲突),则执行该区域所制定的规则
  2. 若源地址未关联到特定的区域(即源地址或接口绑定的区域没有冲突),则使用传入网络接口的区域并执行该区域所制定的规则
  3. 若网络接口也未关联到特定的区域(即源地址或接口都没有绑定特定的某个区域),则使用默认区域并执行该区域所制定的规则
  4. rich-rule规则:
    1. priority规则
    2. 日志规则
    3. drop/reject规则
    4. accept规则

      iptables规则优先级为按照精确匹配优先,上下顺序优先规则;与firewalld优先级区别较大;

firewalld管理

# 服务安装与启动
yum install -y firewalld

systemctl umask firewalld

systemctl start firewalld

# 显示防火墙状态
firewall-cmd state

# 查看全部配置
firewall-cmd --list-all

# 重新加载防火墙规则
firewall-cmd --reload

# 设置默认区域
firewall-cmd --set-default-zone=home

# 修改网卡默认区域
firewall-cmd --zone=external --change interface=eno16777728

# 添加服务规则 默认为临时规则
firewall-cmd --zone=public  --add-service=http

# 添加端口规则,指定permanent参数添加永久规则,未指定zone则添加至默认zone中
firewall-cmd --permanent --add-port=8080/tcp

# 移除端口规则
firewall-cmd --permanent --remove-port=8080/tcp

# 端口转发规则 将tcp协议888端口流量转发至192.168.10.10主机tcp协议22端口
firewall-cmd --permanent --add-forwardport=port=888:proto=tcp:toport=22:toaddr=192.168.10.10

# 添加富规则,拒绝192.168.10.0/24网段ipv4协议ssh服务请求
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"

# 添加富规则 接受192.168.10.0/24网段ipv4协议1024-2000端口请求
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" port protocol="tcp" port="1024-2000"  accept"

# 当前防火墙规则转为永久规则
firewall-cmd  --runtime-to-permanent

案例说明

  1. 80端口仅允许集群内部访问,其他端口完全开放
    # 设置默认public区域,开放所有端口,添加富规则指定80端口仅允许集群访问
    firewall-cmd --permanent --add-port="1-65535"
    firewall-cmd --add-rich-role='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="80" accept'

文章作者: Semon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Semon !
评论
  目录