CentOS 7防火墙之Firewalld详解

CentOS 7防火墙之Firewalld详解

文章目录

  • CentOS 7防火墙之Firewalld详解
    • 1.Firewalld简介
    • 2.Firewalld和iptables的关系
      • Netfilter
      • Firewalld、iptables
      • Firewalld和iptables的区别
    • 3.Firewalld网络区域
      • 区域介绍
      • Firewalld数据处理流程
        • 检查数据来源的源地址
    • 4.Firewalld防火墙的配置方法
      • Firewalld防火墙配置方法(一)
        • 1.运行时配置
        • 2.永久配置
      • Firewalld防火墙配置方法(二)
    • 5.Firewalld-config图形工具
      • 操作步骤:
        • 1.运行时配置/永久配置
        • 2.重新加载防火墙
        • 3.关联网卡到指定区域
        • 4.修改默认区域
        • 5.连接状态
    • 6.Firewalld防火墙维护命令
      • 1.防火墙管理操作
        • 选项:
      • 2.防火墙管理操作
        • firewall-cmd命令
      • 3.查询Firewalld状态
      • 4.Firewalld的命令配置
      • 5.Firewalld防火墙区域命令汇总
      • 6.Firewalld服务操作命令
      • 7.Firewalld防火墙服务操作命令汇总
      • 8.Firewalld防火墙端口操作命令
      • 9.Firewalld防火墙端口操作命令汇总
      • 10.Firewalld阻塞ICMP命令操作
      • 11.Firewalld防火墙阻塞ICMP命令汇总
      • 11.Firewalld防火墙阻塞ICMP命令汇总

1.Firewalld简介

1.1支持网络区域所定义的网络链接及接口安全等级的动态防火墙管理工具

1.2支持IPv4、IPv6防火墙是指以及以太网桥

1.3支持服务或应用程序直接添加防火墙规则接口

1.4拥有两种配置模式

1.4.1运行时设置

1.4.2永久配置

2.Firewalld和iptables的关系

CentOS 7防火墙之Firewalld详解_第1张图片

Netfilter

1.位于Linux内核中的包过滤功能体系

2.称为Linux防火墙的“内核态”

Firewalld、iptables

1.CentOS7默认的管理防火墙规则的工具(Firewalld)

2.称为Linux防火墙的“用户态”

Firewalld和iptables的区别

Firewalld iptables
配置文件 /usr/lib/firewalld/、/etc/firewalld /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接
防火墙类型 动态防火墙 静态防火墙

3.Firewalld网络区域

区域
drop(丢弃) 任何接受的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接
block(限制) 任何接受的网络连接都被IPv4的icmp-host-prohibited信息和icmp-adm-prohibited信息所拒绝
public(公共) 在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接受经过选取的连接
external(外部) 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接
dmz(非军事区) 用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接
work(工作) 用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接
home(家庭) 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接
internal(内部) 用于内部网络。您可以基本.上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接
trusted(信任) 可接受所有的网络连接

区域介绍

1.区域如同进入主机的安全门,每个区域都具有不同限制程度的规则

2.可以使用一个或多个区域,但是任何一个活跃区域至少需要关联源地址或接口

3.默认情况下,public区域是默认区域,包含所有接口(网卡)

CentOS 7防火墙之Firewalld详解_第2张图片

Firewalld数据处理流程

检查数据来源的源地址

1.若源地址关联到特定的区域,则执行该区域所指定的规则

2.若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所指定的规则

3.若网络接口未关联到特定的区域,则使用默认区域并执行该区域所指定的规则

4.Firewalld防火墙的配置方法

Firewalld防火墙配置方法(一)

1.运行时配置

1.实时生效,并持续至Firewalld重 新启动或重新加载配置

2.不中断现有连接

3.不能修改服务配置

2.永久配置

1.不立即生效,除非Firewalld重新启动或重新加载配置

2.中断现有连接

3.可以修改服务配置

Firewalld防火墙配置方法(二)

1.Firewall-config图形工具

2.Firewall-cmd命令行工具

3./etc/firewalld/中的配置文件

Firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/etc/firewalld/中的配置

/etc/firewalld/ :用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝

/usr/ib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/中的配置

5.Firewalld-config图形工具

[root@localhost ~]# firewall-config

CentOS 7防火墙之Firewalld详解_第3张图片

操作步骤:

1.运行时配置/永久配置

2.重新加载防火墙

3.关联网卡到指定区域

4.修改默认区域

5.连接状态

6.Firewalld防火墙维护命令

1.防火墙管理操作

[root@python ~]# systemctl选项firewalld

选项:

start stop restart status

2.防火墙管理操作

firewall-cmd命令

1.支持全部防火墙特性

2.对于状态和查询模式,命令只返回状态,没有其他输出

3.–permanent参数:携带该参数表示永久配置,否则表示运行时配置

4.–zone=]选项:不携带此选项表示针对默认区域操作,否则针对指定区域操作

3.查询Firewalld状态

[root@python ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2019-12-09 08:24:26 CST; 5h 10min ago
     Docs: man:firewalld(1)
 Main PID: 892 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─892 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid

12月 09 08:24:22 python systemd[1]: Starting firewalld - dynamic firewall daemon...
12月 09 08:24:26 python systemd[1]: Started firewalld - dynamic firewall daemon.
[root@python ~]# firewall-cmd --state
running

4.Firewalld的命令配置

firewall-cmd --reload

[root@python ~]# firewall-cmd --reload
success

firewall-cmd --complete-reload

状态信息将丢失,多用于防火墙出现问题时

[root@python ~]# firewall-cmd --complete-reload
success

systemctl restart firewalld

[root@python ~]# systemctl restart firewalld

firewall-cmd --get-zones

查看预定义的区域

[root@python ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

firewall-cmd --get-services

查看预定义服务

[root@python ~]# firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut open ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

firewall-cmd --get-icmptypes

查看预定义ICMP类型

[root@python ~]# firewall-cmd --get-icmptypes
address-unreachable bad-header communication-prohibited destination-unreachable echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement neighbour-solicitation network-prohibited network-redirect network-unknown network-unreachable no-route packet-too-big parameter-problem port-unreachable precedence-cutoff protocol-unreachable redirect required-option-missing router-advertisement router-solicitation source-quench source-route-failed time-exceeded timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly ttl-zero-during-transit unknown-header-type unknown-option

firewall-cmd --get-default-zone

显示网络连接或接口默认区域

[root@python ~]# firewall-cmd --get-default-zone
public

firewall-cmd --set-default-zone=internal

设置网络连接或接口的默认区域为internal

[root@python ~]# firewall-cmd --set-default-zone=internal
success

firewall-cmd --get-active-zones

显示已经激活的所有区域

激活条件:区域至少关联一个接口或一个源地址/网段

[root@python ~]# firewall-cmd --get-active-zones
internal
  interfaces: ens33

firewall-cmd --get-zone-of-interface=ens33

显示ens33接口绑定的区域

[root@python ~]# firewall-cmd --get-zone-of-interface=ens33
internal

firewall-cmd --zone=work --add-interface=ens33

为ens33接口绑定work区域

[root@python ~]# firewall-cmd --zone=work --add-interface=ens33

firewall-cmd --zone=work --change-interface=ens33

为work区域更改绑定的网络接口ens33

[root@python ~]# firewall-cmd --zone=work --change-interface=ens33
success

firewall-cmd --zone=work --remove-interface=ens33

为work区域删除绑定的网络接口ens33

[root@python ~]# firewall-cmd --zone=work --remove-interface=ens33
success

firewall-cmd --zone=work --query-interface=ens33

查询work区域中是否包含接口ens33

[root@python ~]# firewall-cmd --zone=work --query-interface=ens33
no

firewall-cmd --list-all-zones

显示所有区域及其规则

[root@python ~]# firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

dmz
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

drop
  target: DROP
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

external
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

trusted
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

work
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

firewall-cmd --zone=internal --list-all

显示internal区域的所有规则

[root@python ~]# firewall-cmd --zone=internal --list-all
internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

firewall-cmd --list-all

显示默认区域的所有规则

[root@python ~]# firewall-cmd --list-all
internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	

5.Firewalld防火墙区域命令汇总

选项 说明
–get-default-zone 显示网络连接或接口的默认区域
–set-default-zone= 设置网络连接或接口的默认区域
–get-active-zones 显示已激活的所有区域
–get-zone-of-interface= 显示指定接口绑定的区域
–zone= --add-interface= 为指定接口绑定区域
– zone= --change-interface= 为指定的区域更改绑定的网络接口
–zone= --remove-interface= 为指定的区域删除绑定的网络接口
–query-interface= 查询区域中是否包含某接口
–list-all-zones 显示所有区域及其规则
[–zone= ] --list-all 显示所有指定区域的所有规则

6.Firewalld服务操作命令

firewall-cmd --zone=internal --list-services

显示internal区域内允许访问的所有服务

[root@python ~]# firewall-cmd --zone=internal --list-services
dhcpv6-client mdns samba-client ssh

firewall-cmd --zone=public --add-service=smtp

为public区域设置允许访问SMTP服务

[root@python ~]# firewall-cmd --zone=public --add-service=smtp
success

firewall-cmd --zone=internal --remove-service=ssh

删除internal区域中的SSH服务

[root@python ~]# firewall-cmd --zone=internal --remove-service=ssh
success

firewall-cmd --zone=internal --query-service=ssh

查询internal区域中是否启用了’SSH服务

[root@python ~]# firewall-cmd --zone=internal --query-service=ssh
no

7.Firewalld防火墙服务操作命令汇总

选项 说明
[–zone= ] --list-services 显示指定区域内允许访问的所有服务
[–zone= ] --add-service= 为指定区域设置允许访问的某项服务
[–zone= ] --remove-service= 删除指定区域已设置的允许访问的某项服务
[–zone= ] --query-service= 查询指定区域中是否启用了某项服务

8.Firewalld防火墙端口操作命令

firewall-cmd --zone=internal --list-ports

显示internal区域内允许访问的所有的端口号

[root@python ~]# firewall-cmd --zone=internal --list-ports

firewall-cmd --zone=internal --add-port=22/tcp --timeout=5m

启用internal区域22端口的TCP协议组合

[root@python ~]# firewall-cmd --zone=internal --add-port=22/tcp --timeout=5m
success

firewall-cmd --zone=internal --remove-port=22/tcp

禁用internal区域22端口的TCP协议组合

[root@python ~]# firewall-cmd --zone=internal --remove-port=22/tcp
success

firewall-cmd --zone=internal --query-port=22/tcp

查询internal区域中是否启用了22端口和TCP协议组合

[root@python ~]# firewall-cmd --zone=internal --query-port=22/tcp
no

9.Firewalld防火墙端口操作命令汇总

选项 说明
[–zone= ] --list-ports 显示指定区域内允许访问的所有端口号
[–zone= ] --add-port= [-]/ [–timeout= ] 启用区域端口和协议组合,可选配置超时时间
[–zone= ] --remove-port= [-]/ 禁用区域端口和协议组合
[–zone= ] --query-port= [- ]/ 查询区域中是否启用了端口和协议组合

10.Firewalld阻塞ICMP命令操作

firewall-cmd --zone=work --list-icmp-blocks

显示work区域内阻塞的所有ICMP类型

[root@python ~]# firewall-cmd --zone=work --list-icmp-blocks

firewall-cmd --zone=work --add-icmp-block=echo-reply

为work区域设置阻塞echo-reply类型的ICMP

[root@python ~]# firewall-cmd --zone=work --add-icmp-block=echo-reply
success

firewall-cmd --zone=work --remove-icmp-block=echo-reply

删除work区域已阻塞的echo-reply类型的icmp

[root@python ~]# firewall-cmd --zone=work --remove-icmp-block=echo-reply
success

firewall-cmd --zone=work --query-icmp-block=echo-request

查看work区域的echo-request类型的icmp是否阻塞

[root@python ~]# firewall-cmd --zone=work --query-icmp-block=echo-request
no

11.Firewalld防火墙阻塞ICMP命令汇总

选项 说明
[–zone= ] --list-icmp-blocks 显示指定区域内阻塞的所有ICMP类型
[–zone= ] --add-icmp-block= 为指定区域设置阻塞的某项ICMP类型
[–zone= ] --remove-icmp-block= 删除指定区域已阻塞的某项ICMP类型
[–zone= ] --query-icmp-block= 查询指定区域的ICMP阻塞功能

work区域的echo-request类型的icmp是否阻塞

[root@python ~]# firewall-cmd --zone=work --query-icmp-block=echo-request
no

11.Firewalld防火墙阻塞ICMP命令汇总

选项 说明
[–zone= ] --list-icmp-blocks 显示指定区域内阻塞的所有ICMP类型
[–zone= ] --add-icmp-block= 为指定区域设置阻塞的某项ICMP类型
[–zone= ] --remove-icmp-block= 删除指定区域已阻塞的某项ICMP类型
[–zone= ] --query-icmp-block= 查询指定区域的ICMP阻塞功能

你可能感兴趣的:(Linux命令)