firewalld 管理防火墙
概要: 在CentOS 7上,使用firewall-cmd相关命令管理网络防火墙规则
创建时间: 2022.12.20 21:42:02
更新时间: 2023.07.28 23:08:26
关于firewalld
firewalld是CentOS 7起自带的防火墙管理工具,相比于iptables防火墙工具,firewalld可以动态修改单条规则后刷新单个规则集使之生效,而iptables则需要全部刷新。另一方面,firewalld默认拒绝,而iptables则默认允许。最后,firewalld和iptables本质上都是防火墙规则管理工具,真正根据规则建立防火墙的是内核组件netfilter。
firewalld
服务管理
Bash |
---|
| yum install firewalld -y # 安装firewalld
systemctl start firewalld.service # 开启防火墙
systemctl status firewalld.service # 查看防火墙状态
systemctl stop firewalld.service # 关闭防火墙
systemctl restart firewalld.service # 重启防火墙
systemctl enable firewalld.service # 开启开机自启动
systemctl disable firewalld.service # 关闭开机自启动
|
配置管理
- 默认配置文件位置:
/usr/lib/firewalld
- 用户配置文件位置:
/etc/firewalld
- 用户目录结构如下:
Bash |
---|
| /etc/firewalld
├── firewalld.conf # 默认配置文件,默认区域为 public,对应 zones下的 public.xml
├── helpers
├── icmptypes
├── ipsets
├── lockdown-whitelist.xml
├── services
└── zones # 区域规则
├── public.xml
└── public.xml.old
|
firewall-cmd命令管理
提示
- 下面小节的命令加上
--permanent
参数表示永久有效,否则重启后失效
- 如果要指定特定
zone
,加上--zone=public
类似的参数即可
- 示例,永久生效开放8000-8010端口的TCP协议连接:
Bash |
---|
| firewall-cmd --permanent --zone=public --add-port=8000-8010/tcp
|
基本命令
重新载入修改后的防火墙规则
查看当前防火墙的状态
查看默认zone的设置
端口管理
查看开放的端口列表
Bash |
---|
| firewall-cmd --list-ports
|
新增端口/协议(TCP/UDP)
Bash |
---|
| firewall-cmd --add-port=8000/tcp
|
移除端口/协议(TCP/UDP)
Bash |
---|
| firewall-cmd --remove-port=8000/tcp
|
协议管理
查看允许的协议列表
Bash |
---|
| firewall-cmd --list-protocols
|
允许网络协议
Bash |
---|
| firewall-cmd --add-protocol=icmp # 允许ping操作
|
拒绝网络协议
Bash |
---|
| firewall-cmd --remove-protocol=icmp # 拒绝ping操作
|
IP管理
允许指定IP全部流量
Bash |
---|
| firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.10" accept"
|
允许指定IP访问指定端口
Bash |
---|
| firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.10" port protocol="tcp" port="22" accept"
|
允许指定IP访问指定服务
Bash |
---|
| firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.1.10" service name="ssh" accept"
|
提示
- 将上述命令的
accept
改为reject
,即可拒绝特定IP
- 将上述命令的
source address
设置为形如192.168.1.10/30
,即表示允许此网段IP访问特定服务或端口
应急操作
打开应急模式,拒绝所有流量接入本机,远程连接也会断开,仅能本地登录服务器
取消应急模式,重启firewalld服务后方可再次远程ssh连接
查看当前是否为应急模式
Bash |
---|
| firewall-cmd --query-panic
|
参考
- CentOS 7 中firewall-cmd命令 - 简书
- Centos7 防火墙 firewalld 实用操作 - 晓晨Master - 博客园