mikuQ / miku

miku
GNU General Public License v3.0
2 stars 1 forks source link

firewalld-基础 #60

Open mikuQ opened 2 months ago

mikuQ commented 2 months ago

firewalld

firewalld

zone(区域)

流量选择zone模板的顺序

target(默认动作)

服务

常用命令

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 --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"?>

SSH Secure Shell (SSH)

[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:

mikuQ commented 2 months ago

参考链接 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