Firewalld防火墙的配置

1、图形化管理工具 firewall-config
2、命令管理工具 iptables(操作复杂) firewall-cmd(常用)


一、Firewalld防火墙的配置方法

运行时配置

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

不中断现有连接 (优点)

不能修改服务配置

永久配置

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

中断现有连接 (优点)

可以修改服务配置
中断现有连接 缺点

业务繁忙时不要操作永久配置,可以操作运行配置

可以在夜里12点以后操作计划性任务进行永久配置

Firewalld-config图形工具 使用较少

Firewalld-cmd命令行工具 使用较多

/etc/firewalld/中的配置文件

  • Firewalld会优先使用/etc/firewalld/中的配置,如果不存在配置文件,则使用/etc/firewalld/中的配置
    /etc/firewalld/:用户自定义配置文件,需要时可通过从/usr/lib/firewalld/中拷贝
    /usr/lib/firewalld/:默认配置文件,不建议修改,若恢复至默认配置,可直接删除/etc/firewalld/中的配置

二、Firewall-config图形工具配置

运行时配置/永久配置

在这里插入图片描述

重新加载防火墙

  • 更改永久配置并生效
    在这里插入图片描述

关联网卡到指定区域

在这里插入图片描述

修改默认区域

在这里插入图片描述
在这里插入图片描述

连接状态

在这里插入图片描述

“区域”选项卡

“服务”子选项卡

“端口”子选项卡

“协议”子选项卡

“源端口”子选项卡

“伪装”子选项卡 ——>NAT转换

“端口转发”子选项卡

“ICMP过滤器”子选项卡

“服务”选项卡

“模块”子选项卡
“目标地址”子选项卡

案例

环境 :

客户端:192.168.17.129

linux服务器(SSH/Apache)192.168.17.128

需求:

禁止主机ping服务器

只允许192.168.17.129访问SSH服务

允许所有主机访问Apache服务

步骤:

网络参数配置
开启Firewalld防火墙
配置work区域
配置public区域
验证

1、安装httpd并启用服务

在这里插入图片描述

2、开启防火墙,配置阻塞

在这里插入图片描述
在这里插入图片描述

3、配置public 开启httpd 添加80端口 允许所有主机访问Apache服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、关闭public中的ssh,打开work区域中的ssh,添加192.168.17.129来源,仅允许其访问ssh

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、Firewall-cmd字符界面配置

1、Firewalld防火墙维护命令

防火墙进程操作——systemctl 选项 firewalld

选项:start stop restart status
查询firewalld状态:

方法一:systemctl  status  firewalld

方法二:firewall-cmd--state

防火墙管理操作——firewall-cmd命令

支持全部防火墙特性
对于状态和查询模式,命令只返回状态,没有其他输出
–permanent参数:携带该参数表示永久配置,否则表示运行时配置
[–zone=< zone >]选项:不携带此选项表示针对默认区域操作,否则针对所指定区域操作

2、Firewalld防火墙重载配置的命令

重新加载Firewalld的配置

  • firewall-cmd --reload
    • 加载,服务不会中断
  • firewall-cmd --complete-reload
    • 状态信息将会丢失,多用于处理防火墙出现问题时
  • systemctl restart firewalld
    • 重启,服务将会中断

3、查询预定义信息命令

获取预定义信息
查看预定义的区域——firewall-cmd --get-zones

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

查看预定义的服务——firewall-cmd --get-service

[root@localhost ~]# firewall-cmd --get-services 
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

查看预定义的ICMP类型——firewall-cmd --get-icmptypes

[root@localhost ~]# 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

4、Firewalld区域操作命令

显示网络连接或接口的默认区域——firewall-cmd --get-default-zone

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

设置网络连接或接口的默认区域为internal ——firewall-cmd --set-default-zone=internal

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

显示已激活的所有区域——firewall-cmd --get-active-zones

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

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

显示ens33接口绑定的区域——firewall-cmd --get-zone-of-interface=ens33

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

为ens33接口绑定work区域——firewall-cmd --zone=work --add-interface=ens33

[root@localhost ~]# firewall-cmd --zone=work --add-interface=ens33
The interface is under control of NetworkManager, setting zone to 'work'.
success

为work区域更改绑定的网络接口ens33——firewall-cmd --zone=work --change-interface=ens33

[root@localhost ~]# firewall-cmd --zone=work --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'work'.
success

为work区域删除绑定的网络接口ens33——firewall-cmd --zone=work --remove-interface=ens33

[root@localhost ~]# firewall-cmd --zone=work --remove-interface=ens33
The interface is under control of NetworkManager, setting zone to default.
success

查询work区域中是否包含接口ens33——firewall-cmd --zone=work --query-interface=ens33

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

显示区域及其规则

显示所有区域及其规则——firewall-cmd --list-all-zones

[root@localhost ~]# firewall-cmd --list-all-zones
block
  target: %%REJECT%%
  icmp-block-inversion: no
  ……省略
  
dmz
  target: default
  icmp-block-inversion: no
 ……省略
        
drop
  target: DROP
  icmp-block-inversion: no
……省略
        
external
  target: default
  icmp-block-inversion: no
…………………………省略………………

显示internal区域的所有规则——firewall-cmd --zone=internal --list-all

[root@localhost ~]# firewall-cmd --zone=internal --list-all
internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh mdns samba-client dhcpv6-client

显示默认区域的所有规则——firewall-cmd --list-all

[root@localhost ~]# firewall-cmd --list-all
You're performing an operation over default zone ('internal'),
but your connections/interfaces are in zone 'work' (see --get-active-zones)
You most likely need to use --zone=work option.

internal
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: ssh mdns samba-client dhcpv6-client
…………省略

小结

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

5、Firewalld服务操作命令

显示internal区域内允许访问的所有服务——firewall-cmd --zone=internal --list-services

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

为public区域设置允许访问SMTP服务——firewall-cmd --zone=public --add-service=smtp

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

删除internal区域中的SSH服务——firewall-cmd --zone=internal --remove-service=ssh

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

查询internal区域中是否启用了SSH服务——firewall-cmd --zone=internal --query-service=ssh

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

小结

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

6、Firewalld端口操作命令

显示internal区域内允许访问的所有端口号——firewall-cmd --zone=internal --list-ports

[root@localhost ~]# firewall-cmd --zone=internal --list-ports 
80/tcp

启用internal区域22端口的TCP协议组合——firewall-cmd --zone=internal --add-port=22/tcp

–timeout=5m:表示5分钟后删除该端口,多用于测试目的

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

禁用internal区域22端口的TCP协议组合——firewall-cmd --zone=internal --remove-port=22/tcp

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

查询internal区域中是否启用了22端口和TCP协议组合——firewall-cmd --zone=internal --query-port=22/tcp

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

小结

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

7、Firewalld阻塞ICMP操作命令

阻塞=阻止通过

● 显示work区域内阻塞的所有ICMP类型——firewall-cmd --查zone=work --list-icmp-blocks

[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks 
echo-reply

● 为work区域设置阻塞echo-reply类型的ICMP——firewall-cmd --zone=work --add-icmp-block=echo-reply

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

● 查询work区域的echo-request类型的ICMP是否阻塞——firewall-cmd --zone=work --query-icmp-block=echo-request

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

小结

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

案例:

环境:

客户端:192.168.17.129

linux服务器(SSH/Apache)192.168.17.128

需求:

禁止主机ping服务器
只允许192.168.17.129主机访问Apache服务
只允许192.168.17.135主机访问TCP/22端口

步骤:

绑定区域

################绑定区域###############
[root@localhost ~]# firewall-cmd --get-active-zones 
public                           //默认情况下,只有public属于激活状态
  interfaces: ens33
[root@localhost ~]# firewall-cmd --zone=work --add-source=192.168.17.129
success                              //将192.168.17.129关联work区域 
[root@localhost ~]# firewall-cmd --zone=internal --add-source=192.168.17.135
success                             //将192.168.17.135关联internal区域
[root@localhost ~]# firewall-cmd --get-active-zones 
work
  sources: 192.168.17.129
internal
  sources: 192.168.17.135
public
  interfaces: ens33
  
#############internal区域配置,删除原有服务及端口,添加22/tcp#######
[root@localhost ~]# firewall-cmd --zone=internal --remove-port=80/tcp
success
[root@localhost ~]# firewall-cmd --zone=internal --list-ports 
[root@localhost ~]# firewall-cmd --zone=internal --list-services 
mdns samba-client dhcpv6-client
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=mdns 
success
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=samba-client 
success
[root@localhost ~]# firewall-cmd --zone=internal --remove-service=dhcpv6-client 
success
[root@localhost ~]# firewall-cmd --zone=internal --list-services 
[root@localhost ~]# firewall-cmd --zone=internal --add-port=22/tcp
success
[root@localhost ~]# firewall-cmd --zone=internal --query-port=22/tcp
yes

##################work区域配置添加http服务#######
[root@localhost ~]# firewall-cmd --zone=work --list-services 
dhcpv6-client
[root@localhost ~]# firewall-cmd --zone=work --add-service=http
success
[root@localhost ~]# firewall-cmd --zone=work --list-services 
dhcpv6-client http
[root@localhost ~]# 

#################配置ICMP阻塞#######
[root@localhost ~]# firewall-cmd --zone=work --list-icmp-blocks 
[root@localhost ~]# firewall-cmd --zone=work --add-icmp-block=echo-request 
success

###############客户端尝试ping服务器#######
[root@129 ~]# ping 192.168.17.128
PING 192.168.17.128 (192.168.17.128) 56(84) bytes of data.
From 192.168.17.128 icmp_seq=1 Dest##ination Host Prohibited 8
From 192.168.17.128 icmp_seq=2 Destination Host Prohibited
From 192.168.17.128 icmp_seq=3 Destination Host Prohibited
^C
--- 192.168.17.128 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2000ms

############客户端192.168.17.129尝试SSH连接服务器#####
[root@localhost ~]# ssh root@192.168.17.128
ssh: connect to host 192.168.17.128 port 22: No route to host

总结

  • Firewalld防火墙拥有运行时和永久配置两种状态。拥有区域的概念,支持直接添加服务或者端口
  • Firewalld防火墙既可以通过字符管理工具firewall-cmd管理,又可以通过图形管理工具firewall-config进行管理
  • Firewalld防火墙区域绑定命令
  • Firewalld防火墙服务配置命令
  • Firewalld防火墙端口配置命令
Logo

更多推荐