什么是firewalld,简介、策略及规则(Centos7防火墙)(下)

本文涉及的产品
云防火墙,500元 1000GB
简介: 什么是firewalld,简介、策略及规则(Centos7防火墙)(下)

(2)使用firewall-cmd命令进行配置

(1)启动、停止、查看firewalld服务
启动防火墙
[root@Firewalld ~]# systemctl start firewalld
设置防火墙为开机自启
[root@Firewalld ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
查看防火墙运行状态
[root@Firewalld ~]# systemctl status firewalld  (active(running)即正在运行)
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2021-01-05 00:55:57 CST; 9h ago   
     Docs: man:firewalld(1)
 Main PID: 2989 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─2989 /usr/bin/python2 -Es /usr/sbin/firewalld --...
1月 05 00:55:57 CentOS7-1 systemd[1]: Starting firewalld - d...
1月 05 00:55:57 CentOS7-1 systemd[1]: Started firewalld - dy...
Hint: Some lines were ellipsized, use -l to show in full.
[root@Firewalld ~]# firewall-cmd --state   (两种查看命令都可以)
running
(2)查看预定义信息
查看防火墙可用区域
[root@Firewalld ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
查看防火墙默认区域
[root@Firewalld ~]# firewall-cmd --get-default-zone
public
查看防火墙可用服务
[root@Firewalld ~]# firewall-cmd --get-service
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 openvpn 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
查看防火墙可用的icmp阻塞类型
[root@Firewalld ~]# 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 --panic-on    
取消拒绝状态: firewall-cmd --panic-off 
查看是否拒绝: firewall-cmd --query-panic 
注意!!!:如果是远程的机器执行上面的规则会立刻断开网络连接,必须紧记不能随便执行。如果你只是虚拟机或者物理机器登陆就可以执行来调试。
-------------------------------------------------------

- 如何清空防火墙规则:


当防火墙配置了很多规则想一次性清空怎么办,firewalld默认没有命令来清空规则,但是我们可以通过编辑配置文件来清除规则。


/etc/firewalld/zones/ 此处为配置生效后保存的配置文件,建议修改前先备份

******此目录会显示已经配置的规则
[root@Firewalld ~]# ll /etc/firewalld/zones/
总用量 8
-rw-r--r--. 1 root root 315 7月   2 2020 public.xml
-rw-r--r--. 1 root root 315 7月   2 2020 public.xml.old
vim编辑配置文件
[root@Firewalld zones]# vim /tmp/firewalld.bak/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>                  (这两条service开头的就是允许的服务)
  <service name="dhcpv6-client"/>
</zone>
******在修改之前先创建备份目录
[root@Firewalld ~]# mkdir /tmp/firewalld.bak  (备份目录为firewalld.bak)
[root@Firewalld ~]# mv /etc/firewalld/zones/* /tmp/firewalld.bak/
[root@Firewalld ~]# firewall-cmd --set-default-zone=public   (设置默认区域为public)
Warning: ZONE_ALREADY_SET: public
success
******重启服务
[root@Firewalld ~]# systemctl restart firewalld

- 区域管理选项说明:


(前面都是firewall-cmd)

(1)--get-default-zone                          显示网络连接或接口的默认区域
(2)--set-default-zone=区域名称                  设置网络连接或接口的默认区域
(3)--get-active-zones                          显示已激活的所有区域
(4)--get-zone-of-interface=网卡名称             显示指定接口绑定的区域
(5)--zone=区域名称 --add-interface=网卡名称      为指定接口绑定区域
(6)--zone=区域名称 --change-interface=网卡名称   为指定的区域更改绑定的网络接口
(7)--zone=区域名称 --remove-interface=网卡名称   为指定的区域删除绑定的网络接口
(8)--list-all-zones                             显示所有区域及其规则
(9)--zone=区域名称 --list-all                    显示指定区域的所有规则
(10)--list-all                                  显示默认区域的所有规则

- 示例:

******显示当前系统的默认区域
[root@Firewalld ~]# firewall-cmd --get-default-zone 
public
******显示默认区域的所有规则
[root@Firewalld ~]# firewall-cmd --list-all
public (active)                    (表示public这个区域是活动区域即可用区域,如果是默认区域会多一个defaults)
  target: default                  
  icmp-block-inversion: no         
  interfaces: ens33                (表示public这个区域的网卡接口是ens33)
  sources:                         (列出了public这个区域的源,现在这里没有,但是如果有的话,格式是xxx.xxx.xxx.xxx/xx)
  services: dhcpv6-client ssh      (表示public区域允许通过的服务类型)
  ports:                           (表示public区域允许通过的端口)
  protocols:                       (允许的通过的协议)
  masquerade: no                   (表示这个区域不允许ip伪装,如果允许的话也同时会允许IP转发,即开启路由功能)
  forward-ports:                   (列出转发的端口)
  source-ports:                   
  icmp-blocks:                     (列出阻塞icmp流量的黑名单)
  rich rules:                      (在public区域中优先处理的高级配置)
-------------------------华丽丽的分割线-------------------------
target的作用:
当一个区域处理它的源或接口上的一个包时,但是没有处理该包的显式规则时,这个时候区域的目标target决定了该行为
(1)ACCEPT : 通过这个包
(2)%%REJECT%% : 拒绝这个包,并且返回一个拒绝的回复
(3)DROP : 丢弃这个包,不回复任何信息
(4)default : 不做任何事情,该区域不再管他,把它提到“楼上”
--------------------------------------------------------------
******显示网络接口ens33的对应区域
[root@Firewalld ~]# firewall-cmd --get-zone-of-interface=ens33
public                           (说明ens33的区域是public)
******更改ens33的区域为internal
[root@Firewalld ~]# firewall-cmd --zone=internal --change-interface=ens33 
success                          (更改成功)
[root@Firewalld ~]# firewall-cmd --get-zone-of-interface=ens33
internal                         (再次查看发现已经更改为internal区域)
******查看全部活动区域
[root@Firewalld ~]# firewall-cmd --get-active-zones 
internal
  interfaces: ens33

- 服务管理选项说明:

***服务存放在/usr/lib/firewalld/services目录中,通过单个的xml配置文件来指定
***xml文件:service-name。xml
(1)--zone=区域名称 --list-services                         显示指定区域内允许访问的所有服务
(2)--zone=区域名称 --add-service=服务名称                   为指定区域设置允许访问的某项服务
(3)--zone=区域名称 --remove-service=服务名称                删除指定区域已设置的允许访问的某项服务
(4)--zone=区域名称 --list-ports                            显示指定区域内允许访问的所有端口号
(5)--zone=区域名称 --add-port=端口号-端口号/协议名          为指定区域设置允许访问的某个或某段端口号并指定协议名(中间的-表示从多少到多少端口号, / 和后面跟端口的协议)
(6)--zone=区域名称 --remove-port=端口号-端口号/协议名        删除指定区域已设置的允许访问的某个端口号或某段端口号并且指定协议名(中间的-表示从多少到多少端口号, / 和后面跟端口的协议)
(7)--zone=区域名称 --list-icmp-blocks                      显示指定区域内拒绝访问的所有ICMP类型
(8)--zone=区域名称 --add-icmp-block=icmp类型               为指定区域设置拒绝访问的某项ICMP类型
(9)--zone=区域名称 --remove-icmp-block=icmp类型            删除指定区域已设置的拒绝访问的某项ICMP类型,省略 --zone=区域名称 时表示对默认区域操作

- 示例:

******显示默认区域允许访问的所有服务
[root@Firewalld ~]# firewall-cmd --list-services
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.
dhcpv6-client ssh    (说明允许dhcp和ssh)
******设置默认区域允许访问http和https服务 (不加--zone指定的话就是配置默认区域)
[root@Firewalld ~]# firewall-cmd --add-service=http
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.
success
[root@Firewalld ~]# firewall-cmd --add-service=https
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.
success
[root@Firewalld ~]# firewall-cmd --list-services   (再次查看)
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'internal' (see --get-active-zones)
You most likely need to use --zone=internal option.
dhcpv6-client http https ssh  (多了http和https)
预定义的服务可以使用服务名配置,同时其对应端口会自动打开,非预定义的服务只能手动指定端口
******给指定区域添加tcp443端口
[root@Firewalld ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
[root@Firewalld ~]# firewall-cmd --zone=internal --list-all 
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 443/tcp  (发现添加成功)
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
******删除指定区域的443/tcp端口
[root@Firewalld ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success
[root@Firewalld ~]# firewall-cmd --zone=internal --list-all 
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

- 两种配置方式


  • 运行时模式(runtime mode): 当前内存中运行,系统或防火墙服务重启或停止,配置失效
  • 永久模式(permanent mode): 永久存储在配置文件中,但是配置完成要重启系统或防火墙


******相关选项:(配置时添加此选项即可)
--reload 将永久配置应用为运行时配置 
--permanent 设置永久性规则。服务重启或重新加载时生效 
--runtime-to-permanent 将当前的运行时配置写入规则,成为永久性配置 


目录
相关文章
|
19天前
|
运维 安全 Linux
全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南
全面提升系统安全:禁用不必要服务、更新安全补丁、配置防火墙规则的实战指南
39 12
|
2月前
|
网络协议 Ubuntu 网络安全
|
1月前
|
安全 Linux 网络安全
centos7中firewall防火墙的常用命令总结
以上命令集覆盖了 `firewalld`的基本操作,是维护CentOS 7系统安全不可或缺的工具。对于更高级的配置需求或遇到特定问题
33 3
|
6月前
|
安全 网络协议 Shell
【内网安全】 域防火墙&入站出站规则&不出网隧道上线&组策略对象同步
【内网安全】 域防火墙&入站出站规则&不出网隧道上线&组策略对象同步
|
3月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
166 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
4月前
|
Linux 网络安全
在Linux中,如何设置防火墙规则?
在Linux中,如何设置防火墙规则?
|
4月前
|
网络协议 安全 Linux
|
6月前
|
安全 网络协议 Linux
【内网安全】 隧道技术&SMB&ICMP&正反向连接&防火墙出入规则上线
【内网安全】 隧道技术&SMB&ICMP&正反向连接&防火墙出入规则上线
|
7月前
|
网络协议 Linux 网络安全
CentOS 7 防火墙指令
本文介绍了CentOS 7中管理防火墙`firewalld`的指令。
96 0
|
7月前
|
弹性计算 运维 Shell
自动添加防火墙规则
【4月更文挑战第29天】
59 0