Linux防火墙——Firewalld防火墙规则(内含防火墙的配置方法、图形化工具、firewall-cmd命令 )
文章目录Firewalld防火墙的配置一、Firewalld防火墙的配置方法运行时配置永久配置二、Firewall-config图形工具配置运行时配置/永久配置重新加载防火墙关联网卡到指定区域修改默认区域连接状态“区域”选项卡“服务”选项卡案例环境 :需求:步骤:1、安装httpd并启用服务2、开启防火墙,配置阻塞3、配置public 开启httpd 添加80端口 允许所有主机访问Apache服务
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防火墙端口配置命令
更多推荐
所有评论(0)