Open mikuQ opened 2 months ago
firewalld
zone(区域)
firewall-cmd
firewall-config
NetworkManager
Web控制台
/usr/lib/firewalld/zones/
/etc/firewalld/zones/
public trusted home work internal external dmz block drop
default
public
zone-name.xml
流量选择zone模板的顺序
firewall-cmd --get-active-zones
target(默认动作)
ACCEPT
REJECT
DROP
firewall-cmd --permanent --zone=public --set-target=<default|ACCEPT|REJECT|DROP>
服务
service-name.xml
/etc/firewalld/services/
/usr/lib/firewalld/services/
firewall-config - GUI图形工具
firewall-cmd - 命令行工具
常用命令
/etc/firewalld/firewalld.conf
etc/firewalld/zones/
/etc/firewalld/policies/
firewall-cmd --permanent --new-zone=miku #创建自定义模板 firewall-cmd --get-zones #列出可用的模板 firewall-cmd --get-active-zones #列出活动的模板 firewall-cmd --set-default-zone public #设置默认模板(永久设置) firewall-cmd --get-default-zone #列出默认模板 firewall-cmd --list-all-zones #列出所有模板(详细内容) firewall-cmd --zone=public --list-all #列出特定模板(详细内容) firewall-cmd --zone=public --add-service=ssh #允许SSH服务 firewall-cmd --zone=public --remove-service=ftp #移除FTP服务 firewall-cmd --reload #重新加载模板中配置 firewall-cmd --runtime-to-permanent #把运行时保存为永久配置 firewall-cmd --zone=public --change-interface=ens160 --permanent #给接口应用模板 nmcli connection modify ens160 connection.zone public #使用nmcli工具给接口应用模板 nmcli connection reload #重新加载网卡配置文件 nmcli connection up ens160 #激活网卡配置 firewall-cmd --check-config #检查模板语法
服务放行
firewall-cmd --get-active-zones firewall-cmd --permanent --zone=public --add-service=https firewall-cmd --permanent --zone=public --remove-service=https firewall-cmd --reload
firewall-cmd --get-active-zones firewall-cmd --zone=public --add-service=https firewall-cmd --runtime-to-permanent
firewall-cmd --zone=public --list-all
**传输层目的端口放行**
firewall-cmd --zone=public --add-port=2020/tcp firewall-cmd --zone=public --remove-port=2020/tcp firewall-cmd --runtime-to-permanent firewall-cmd --zone=public --list-ports
**添加源IP/源端口** * 配置了源IP的模板优先/源IP特征起到选择zone模板的作用/可以用网段形式 * 源端口作用待研究
firewall-cmd --zone=public --add-source=192.168.2.0/24 firewall-cmd --zone=public --remove-source=192.168.2.0/24
firewall-cmd --zone=public --add-source-port=2020/tcp firewall-cmd --zone=public --remove-source-port=2020/tcp
firewall-cmd --runtime-to-permanent
**紧急模式panic** * 禁用所有流量 * 仅在物理机操作
firewall-cmd --panic-on firewall-cmd --panic-off firewall-cmd --query-panic
**策略** * 策略用于控制zone(模板)间的流量/即穿越本机的流量 * zone(模板)与接口有关联关系,模板间流量可以本质上是接口间的流量 * 例如当主机用做路由器时/同时支持NAT/如果不把主机用作路由器则不需要关注策略 * 流量类型(方向特征):传入流量/传出流量/转发流量/特定服务和应用程序/网络地址转换(NAT) **规则** * 流量特征:源IP、目的IP、传输层协议(TCP/UDP)、传输层(源/目标)端口、接口 **zone的流量特征** * zone的只针对“传输层”特征进行匹配放行,传输层特征之间为“或”关系,其中一项匹配流量就允许通过。 * 三个传输层特征:``protocols`` ``ports`` ``services`` * ``protocols``特征为“IP之上的协议(包含TCP/UDP)”,大多数主机上的服务基于TCP/UDP,不建议``protocols``配置TCP/UDP * ``ports``特征需要同时指定传输层协议TCP/UDP * ``services``特征是``ports``特征的一种便捷配置方式 * 匹配放行的流量如果不是访问本机的流量则为穿越本机的流量/走路由转发/前提是内核开启了路由功能
[root@RedHat ~]# cat /usr/lib/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?>
[root@RedHat ~]# firewall-cmd --list-all public (active) target: default interfaces: ens160 ens192 services: cockpit dhcpv6-client ports: 22/tcp protocols:
[root@RedHat ~]# firewall-cmd --zone=public --add-protocol= Display all 141 possibilities? (y or n) 3pc eigrp ipcomp manet rohc tcf ah emcon ipcv merit-inp rsvp tcp a/n encap ipip mfe-nsp rsvp-e2e-ignore tlsp argus esp iplt micp rvd tp++ aris etherip ippc mobile sat-expak trunk-1 ax.25 fc ipv4 mobility-header sat-mon trunk-2 bbn-rcc fire ipv6 mpls-in-ip scc-sp ttp bna ggp ipv6-auth mtp scps udp br-sat-mon gmtp ipv6-crypt mux sctp udplite cbt gre ipv6-frag narp sdrp uti cftp hip ipv6-icmp netblt secure-vmtp vines chaos hmp ipv6-nonxt nsfnet-igp shim6 visa compaq-peer hopopt ipv6-opts nvp skip vmtp cphb iatp ipv6-route ospf sm vrrp cpnx icmp ipx-in-ip pgm smp wb-expak crtp idpr irtp pim snp wb-mon crudp idpr-cmtp isis pipe sprite-rpc wesp dccp idrp iso-ip pnni sps wsn dcn ifmp iso-tp4 prm srp xnet ddp igmp kryptolan ptp sscopmce xns-idp ddx igp l2tp pup st xtp dgp il larp pvp stp dsr i-nlsp leaf-1 qnx sun-nd egp ip leaf-2 rdp swipe
**简易使用思路** * 如果仅仅只关心外部可访问本机哪些服务,则只需要关注zone模板的两个特征``services`` ``ports`` * ``services`` 是 ``ports`` 的便捷调用/``services`` 的本质是 ``ports`` ,如果``services``中没有相应的“端口/传输层协议”,则需要添加``ports`` * 添加``ports``时需要同时指定传输层协议
[root@RedHat ~]# firewall-cmd --zone=public --add-service=ssh [root@RedHat ~]# firewall-cmd --zone=public --add-port=22/tcp [root@RedHat ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client ssh ports: 22/tcp protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@RedHat ~]#
**对ICMP流量的单独处理** * ``icmp-block-inversion: no`` ``no``为黑名单模式/由``icmp-blocks:``精确禁止特定ICMP报文/默认情况下ICMP流量全部放行 * ``icmp-block-inversion: yes`` ``yes``为白名单模式/由``icmp-blocks:``精确放行特定ICMP报文/默认情况下ICMP流量全部禁止 * ``icmp-block-inversion: yes``情况下默认禁止所有ICMP报文/此时需要``--add-protocol=icmp``来放行所有ICMP流量/此时白名单失效
[root@RedHat ~]# firewall-cmd --zone=public --remove-icmp-block-inversion [root@RedHat ~]# firewall-cmd --zone=public --add-icmp-block-inversion [root@RedHat ~]# firewall-cmd --zone=public --remove-protocol=icmp [root@RedHat ~]# firewall-cmd --zone=public --add-protocol=icmp [root@RedHat ~]# firewall-cmd --zone=public --remove-icmp-block=echo-request [root@RedHat ~]# firewall-cmd --zone=public --add-icmp-block=echo-request [root@RedHat ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no protocols: icmp-blocks:
参考链接 https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters
firewalld
firewalld
zone(区域)
firewall-cmd
firewall-config
NetworkManager
Web控制台
/usr/lib/firewalld/zones/
/etc/firewalld/zones/
public trusted home work internal external dmz block drop
default
public
/默认模板可以更改/默认情况下接口应用默认模板zone-name.xml
流量选择zone模板的顺序
firewall-cmd --get-active-zones
target(默认动作)
ACCEPT
拒绝REJECT
DROP
default
ACCEPT
接受除“特定规则不允许的”之外的所有传入的流量。REJECT
拒绝除“特定规则允许的”之外的所有传入的流量/回复拒绝的信息。DROP
拒绝除“特定规则允许的”之外的所有传入的流量/不回复拒绝的信息。default
与REJECT
类似,但在某些情况下有特殊含义。firewall-cmd --permanent --zone=public --set-target=<default|ACCEPT|REJECT|DROP>
服务
service-name.xml
/etc/firewalld/services/
/usr/lib/firewalld/services/
firewall-config - GUI图形工具
firewall-cmd - 命令行工具
常用命令
/etc/firewalld/firewalld.conf
etc/firewalld/zones/
/etc/firewalld/policies/
/etc/firewalld/services/
服务放行
firewall-cmd --get-active-zones firewall-cmd --zone=public --add-service=https firewall-cmd --runtime-to-permanent
firewall-cmd --zone=public --list-all
firewall-cmd --zone=public --add-port=2020/tcp firewall-cmd --zone=public --remove-port=2020/tcp firewall-cmd --runtime-to-permanent firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --add-source=192.168.2.0/24 firewall-cmd --zone=public --remove-source=192.168.2.0/24
firewall-cmd --zone=public --add-source-port=2020/tcp firewall-cmd --zone=public --remove-source-port=2020/tcp
firewall-cmd --runtime-to-permanent
firewall-cmd --panic-on firewall-cmd --panic-off firewall-cmd --query-panic
[root@RedHat ~]# cat /usr/lib/firewalld/services/ssh.xml <?xml version="1.0" encoding="utf-8"?>
[root@RedHat ~]# firewall-cmd --list-all public (active) target: default interfaces: ens160 ens192 services: cockpit dhcpv6-client ports: 22/tcp protocols:
[root@RedHat ~]# firewall-cmd --zone=public --add-protocol= Display all 141 possibilities? (y or n) 3pc eigrp ipcomp manet rohc tcf ah emcon ipcv merit-inp rsvp tcp a/n encap ipip mfe-nsp rsvp-e2e-ignore tlsp argus esp iplt micp rvd tp++ aris etherip ippc mobile sat-expak trunk-1 ax.25 fc ipv4 mobility-header sat-mon trunk-2 bbn-rcc fire ipv6 mpls-in-ip scc-sp ttp bna ggp ipv6-auth mtp scps udp br-sat-mon gmtp ipv6-crypt mux sctp udplite cbt gre ipv6-frag narp sdrp uti cftp hip ipv6-icmp netblt secure-vmtp vines chaos hmp ipv6-nonxt nsfnet-igp shim6 visa compaq-peer hopopt ipv6-opts nvp skip vmtp cphb iatp ipv6-route ospf sm vrrp cpnx icmp ipx-in-ip pgm smp wb-expak crtp idpr irtp pim snp wb-mon crudp idpr-cmtp isis pipe sprite-rpc wesp dccp idrp iso-ip pnni sps wsn dcn ifmp iso-tp4 prm srp xnet ddp igmp kryptolan ptp sscopmce xns-idp ddx igp l2tp pup st xtp dgp il larp pvp stp dsr i-nlsp leaf-1 qnx sun-nd egp ip leaf-2 rdp swipe
[root@RedHat ~]# firewall-cmd --zone=public --add-service=ssh [root@RedHat ~]# firewall-cmd --zone=public --add-port=22/tcp [root@RedHat ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 ens192 sources: services: cockpit dhcpv6-client ssh ports: 22/tcp protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [root@RedHat ~]#
[root@RedHat ~]# firewall-cmd --zone=public --remove-icmp-block-inversion [root@RedHat ~]# firewall-cmd --zone=public --add-icmp-block-inversion [root@RedHat ~]# firewall-cmd --zone=public --remove-protocol=icmp [root@RedHat ~]# firewall-cmd --zone=public --add-protocol=icmp [root@RedHat ~]# firewall-cmd --zone=public --remove-icmp-block=echo-request [root@RedHat ~]# firewall-cmd --zone=public --add-icmp-block=echo-request [root@RedHat ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no protocols: icmp-blocks: