一.SELinux简介
SELinux(Security-Enhanced Linux)是一个Linux内核模块和安全策略框架,用于增强Linux操作系统的安全性。它由美国国家安全局(NSA)开发,旨在实现强制访问控制(MAC)机制,提供比传统的用户身份和权限控制更细粒度的安全管理。
主要特点
-
强制访问控制:SELinux通过定义安全上下文,强制执行对进程和对象(如文件、网络端口等)的访问控制策略,限制它们的交互方式。
-
安全策略:管理员可以根据需求配置和调整安全策略,定义哪些操作是被允许的、哪些是被拒绝的。
-
上下文标签:每个对象(文件、进程等)都有一个安全上下文标签,SELinux使用这些标签来决定访问权限。
-
多种模式:
- Enforcing(强制模式):SELinux执行策略,拒绝未授权的访问。
- Permissive(宽容模式):SELinux不会拒绝访问,但会记录违规事件,适合策略调试。
- Disabled(禁用模式):SELinux完全关闭。
-
日志记录:SELinux会记录所有拒绝的操作,管理员可以通过这些日志进行审计和调试。
使用场景
- 增强安全性:适用于对安全要求较高的环境,如金融机构、政府机构等。
- 防止权限提升:即使攻击者获得了某个进程的控制权,SELinux也可以限制其对系统其他部分的访问。
二.SELinux工作原理
1.自主访问控制方式-DAC
自主访问控制(DAC,Discretionary Access Control)是一种访问控制机制,允许资源的所有者决定谁可以访问特定资源。DAC的主要特点包括:
1. 资源所有者控制
- 资源的所有者可以直接控制其资源的访问权限。所有者可以授予或撤销其他用户对其资源的访问权限。
2. 访问权限的灵活性
- 用户可以在自己的资源上设置多种访问权限,如读、写和执行。不同的用户可以获得不同的权限。
3. 实现简单
- DAC通常较为简单易懂,适合小型系统和组织。它允许用户自主管理其文件和数据的访问。
4. 缺乏强制性控制
- DAC的一个缺点是缺乏强制性访问控制,这可能导致安全漏洞。如果用户误授权限,可能会使系统面临安全风险。
2.SELinux的原理--强制访问控制MAC
1. 安全上下文
每个文件、进程和其他系统对象都有一个与之相关联的安全上下文。安全上下文通常包括三个部分:
- 用户:表示资源所有者的身份。
- 角色:定义用户在系统中可以执行的操作和权限。
- 类型:指定资源的类型,用于访问控制。
2. 安全策略
SELinux使用预定义或自定义的安全策略来管理系统的安全。安全策略包含了一组规则,定义了不同类型的进程和对象之间的交互方式。策略可以配置为“强制”或“宽容”模式。
3. 访问控制
在每次访问发生时,SELinux会检查发起请求的进程的安全上下文与目标对象的安全上下文,然后根据安全策略决定是否允许访问:
- 允许:如果策略允许该访问,操作将继续。
- 拒绝:如果策略不允许,访问将被拒绝,操作被阻止,并记录相关信息。
4. 日志记录
当SELinux拒绝一个操作时,它会将该事件记录到系统日志中.
5. 上下文标签
[root@server ~]# ls -lZ
-rw-------. 1 root root system_u:object_r:admin_home_t:s0 833 1月 8 2024 anaconda-ks.cfg
-rwxr--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 10月 15 20:49 file
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 10月 15 19:22 file1
drwxr-xr-x. 2 root root unconfined_u:object_r:admin_home_t:s0 18 10月 27 16:30 sh
-
用户(user)
- 示例:
system_u
或unconfined_u
- 含义:表示文件的所有者或进程的安全用户。
system_u
是系统用户,而unconfined_u
表示不受限制的用户,通常用于用户或进程没有特定的安全限制。
- 示例:
-
角色(role)
- 示例:
object_r
- 含义:指定该对象的角色。在此情况下,
object_r
表示这是一个对象角色,通常用于表示文件或资源的访问控制。
- 示例:
-
类型(type)
- 示例:
admin_home_t
- 含义:表示文件的类型,决定了哪些进程可以访问该文件。
admin_home_t
表示这是管理员家目录中的文件,通常允许管理员进程访问。
- 示例:
-
级别(level)
- 示例:
s0
- 含义:表示安全级别,通常用于多级安全(MLS)系统。
s0
表示默认级别,通常用于普通用户或未特别标记的文件。级别可以用于更复杂的访问控制策略,虽然在许多普通场景中,级别可能不被使用。
- 示例:
完整示例解释
考虑以下文件的安全上下文:
-rw-------. 1 root root system_u:object_r:admin_home_t:s0 833 1月 8 2024 anaconda-ks.cfg
- 权限:
-rw-------
表示文件的权限,只有文件所有者有读写权限。 - 硬链接数:
1
表示该文件的硬链接数。 - 所有者:
root
表示文件的所有者是root用户。 - 用户组:
root
表示文件所属的组是root组。 - 安全上下文:
system_u:object_r:admin_home_t:s0
:system_u
:系统用户。object_r
:对象角色。admin_home_t
:文件类型,指向管理员家目录。s0
:安全级别。
6. 策略管理
SELinux策略可以通过工具(如setsebool
、semanage
等)进行管理和配置,管理员可以根据需要修改和加载策略。
7.完整访问过程-----普通用户执行nginx
1. 安全上下文设置
- 每个进程和文件在 SELinux 中都有一个安全上下文,通常由四个部分组成:用户、角色、类型和级别。
- 对于普通用户,通常使用
unconfined_u
作为用户标识。
2. 程序执行
- 当用户执行 Nginx 程序时,操作系统会查看 Nginx 的文件安全上下文,例如:
-rwxr-xr-x. 1 root root unconfined_u:object_r:nginx_exec_t:s0 /usr/sbin/nginx
- 这里,
nginx_exec_t
表示 Nginx 的执行类型。
3. 进程创建
- 当 Nginx 被执行时,内核会创建一个新的进程,并为该进程分配一个安全上下文(通常是与执行文件相同的上下文)。
4. 访问控制决策
- SELinux 通过安全策略来决定该进程是否可以执行特定的操作,例如访问文件、网络端口或其他资源。
- 这些策略根据进程的类型(如
nginx_exec_t
)和被访问对象的类型(如httpd_sys_content_t
对于 web 内容)进行评估。
5. 策略匹配
- SELinux 会检查当前上下文与访问请求的目标对象(如配置文件、网站文件、网络接口等)之间的关系。
- 例如,Nginx 可能需要访问
/var/www/html
下的文件,文件的安全上下文可能是httpd_sys_content_t
。 - SELinux 会判断
nginx_exec_t
和httpd_sys_content_t
之间的访问控制策略,决定是否允许访问。
6. 访问结果
- 如果策略允许,访问将被允许,Nginx 可以正常运行并处理请求。
- 如果策略拒绝,内核将阻止访问,并返回一个错误,通常在系统日志中记录相应的拒绝信息。
- 最终是否能够访问,需要MAC和DAC同时通过
三.SELinux的启动,关闭,查看
[root@server ~]# setenforce 0
修改selinux状态
Enforcing:强制执行策略,阻止不符合策略的操作。
Permissive:不阻止任何操作,但记录违反策略的行为。
Disabled:完全禁用 SELinux。
临时更改状态
setenforce 1 # 设置为 Enforcing
setenforce 0 # 设置为 Permissive
永久更改模式(重启后生效): 编辑 SELinux 配置文件:
sudo vi /etc/selinux/config
找到以下行并修改为所需模式:
SELINUX=enforcing # 或 permissive 或 disabled
查看当前seLinux状态
[root@server ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
SELinux status: enabled
SELinux(Security-Enhanced Linux)功能已启用。这表示系统正在使用 SELinux 进行访问控制。
SELinuxfs mount: /sys/fs/selinux
SELinux 文件系统挂载在 /sys/fs/selinux 目录下。这是 SELinux 用来提供其配置和状态信息的文件系统。
SELinux root directory: /etc/selinux
SELinux 的根目录为 /etc/selinux,此目录通常包含 SELinux 的配置文件和策略。
Loaded policy name: targeted
加载的策略名称为 targeted。这是 SELinux 默认的策略类型,它主要保护系统中最重要的进程,其他进程的保护较少。
Current mode: permissive
当前模式为 permissive(宽容模式)。在此模式下,SELinux 不会强制执行安全策略,但会记录潜在的违规行为。这对于调试和测试很有用。
Mode from config file: enforcing
配置文件中的模式为 enforcing(强制模式)。如果系统重新启动或重新加载 SELinux 配置,它将以强制模式运行。在强制模式下,SELinux 会严格执行访问控制策略,拒绝未授权的操作。
Policy MLS status: enabled
多级安全(MLS)策略状态为 enabled。MLS 是一种复杂的访问控制模型,允许更细粒度的安全控制,通常用于高安全环境。
Policy deny_unknown status: allowed
策略的 deny_unknown 状态为 allowed。这意味着如果有未知的用户或类型访问某个对象,系统将允许这些请求,而不是拒绝它们。这在某些情况下可以防止安全策略的过度限制。
Memory protection checking: actual (secure)
内存保护检查为 actual (secure),这表明系统正在实际进行内存保护检查,并且状态是安全的.
Max kernel policy version: 33
最大内核策略版本为 33,这表示当前系统中使用的 SELinux 策略的版本号。这有助于判断策略的更新程度。
安全上下文chcon , restorecon , semanage
SELinux 管理中,chcon
、restorecon
和 semanage
是三个重要的命令工具,它们用于管理文件和进程的安全上下文。
1. chcon
chcon
命令用于改变文件或目录的 SELinux 安全上下文。它可以用来临时修改文件的安全上下文,而不影响系统默认策略。
用法示例:
chcon [OPTIONS] CONTEXT FILE
- CONTEXT:新的安全上下文,通常格式为
user:role:type:level
。 - FILE:要修改的文件或目录。
常用选项:
-R
:递归修改目录及其内容。-h
:修改符号链接的目标文件,而不是链接本身。
示例:
chcon -t httpd_sys_content_t /var/www/html/index.html
[root@server ~]# chcon -t httpd_sys_content_t ~/file
[root@server ~]# ls -lZ | grep file
-rwxr--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 0 10月 15 20:49 file
-rw-r--r--. 1 root root unconfined_u:object_r:admin_home_t:s0 0 10月 15 19:22 file1
这将把 index.html
文件的类型上下文修改为 httpd_sys_content_t
,使其可被 Nginx 或 Apache 等 Web 服务器访问。
2. restorecon
restorecon
命令用于恢复文件或目录的默认 SELinux 安全上下文。这对于确保文件具有正确的上下文非常有用,特别是在文件被移动或拷贝之后。
用法示例:
restorecon [OPTIONS] FILE
常用选项:
-R
:递归恢复目录及其内容。-v
:在恢复过程中显示详细信息。
示例:
restorecon -R /var/www/html
[root@server ~]# restorecon -v ~/file
Relabeled /root/file from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:admin_home_t:s0
这将递归恢复 /var/www/html
目录及其内容的默认安全上下文。
3. semanage
semanage
命令用于管理 SELinux 策略。它可以用来添加、删除和修改 SELinux 上下文映射,包括文件上下文、端口和接口。
用法示例:
semanage [OPTIONS] MODULE
- MODULE:要管理的模块,可以是
fcontext
、port
、interface
等。
常用子命令:
fcontext
:管理文件上下文。port
:管理 SELinux 上下文与端口的关联。interface
:管理网络接口的上下文。
示例:
-
管理文件上下文
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
这将为
/var/www/html
目录及其所有子目录和文件添加httpd_sys_content_t
上下文。 -
恢复文件上下文
restorecon -R /var/www/html
通过前面
semanage
命令添加的规则,可以恢复这些文件的上下文。 -
管理端口
semanage port -a -t http_port_t -p tcp 8080 [root@server ~]# semanage port -a -t http_port_t -p tcp 8080 ValueError: 已定义端口 tcp/8080
这将将 TCP 8080 端口标记为
http_port_t
,使其可供 HTTP 服务使用。
总结
chcon
:用于手动改变文件的安全上下文。restorecon
:恢复文件的默认安全上下文。semanage
:管理和配置 SELinux 策略,包括文件上下文、端口等。
四.防火墙
1.防火墙简介
防火墙是一种网络安全设备或软件,用于监控和控制进出网络流量。它通过定义和执行安全规则,帮助保护网络和主机不受未经授权的访问、攻击和其他安全威胁。
防火墙的基本功能
- 流量过滤:根据预定义的安全规则允许或拒绝网络流量。
- 状态检测:跟踪活动连接的状态,决定哪些流量是合法的。
- 日志记录:记录网络流量和安全事件,供日后分析和审计。
- 网络地址转换(NAT):将内部网络地址转换为公共地址,隐藏内部网络结构。
Linux 常用的防火墙
在 Linux 系统中,有几种常见的防火墙工具:
-
iptables
- 简介:iptables 是 Linux 内核中用于配置网络过滤规则的工具。它可以定义复杂的流量过滤规则,并支持状态检测。
- 特点:
- 灵活性高,适合定制复杂的防火墙策略。
- 支持多种协议(如 TCP、UDP、ICMP)。
- 可以配置链(如 INPUT、OUTPUT、FORWARD)来管理流量方向。
-
nftables
- 简介:nftables 是 iptables 的替代工具,从 Linux 3.13 开始引入。它提供了一种更简洁的语法,并且具有更高的性能。
- 特点:
- 统一了 IPv4 和 IPv6 的管理。
- 支持集成的流量分类和映射功能。
- 语法更简洁,易于使用和理解。
-
firewalld
- 简介:firewalld 是一种基于区域的防火墙管理工具,旨在简化 iptables 的使用。它提供了动态的防火墙配置功能。
- 特点:
- 提供图形界面和命令行工具(如
firewall-cmd
)。 - 支持区域(zone)概念,可以根据网络环境灵活调整策略。
- 支持服务管理,简化了常见服务的配置。
- 提供图形界面和命令行工具(如
-
UFW (Uncomplicated Firewall)
- 简介:UFW 是 Ubuntu 和一些其他 Linux 发行版的简化防火墙工具,旨在让防火墙配置变得更简单。
- 特点:
- 适合初学者,命令简单易懂。
- 默认情况下处于禁用状态,可以很容易地启用和配置。
- 提供基本的规则设置功能。
2.iptables详解
iptables
是 Linux 中用于管理和配置网络过滤规则的工具,它允许用户通过定义规则来控制网络流量的进出。以下是对 iptables
的详解,包括基本概念、命令和配置示例。
基本概念
-
链(Chains):
iptables
主要有三种内置链:- INPUT:处理到达本机的数据包。
- OUTPUT:处理从本机发送的数据包。
- FORWARD:处理转发到其他机器的数据包。
-
表(Tables):
iptables
有四种主要的表:- filter:默认表,用于过滤数据包。
- nat:用于网络地址转换(NAT)。
- mangle:用于修改数据包的内容和属性。
- raw:用于设置不追踪连接的数据包。
-
规则(Rules):
- 每个规则定义了一条过滤条件,如协议(TCP/UDP)、源地址、目标地址、端口等。
安装iptables
[root@server ~]# yum install iptables-services -y
常用命令
-
查看规则:
iptables -L # 查看 filter 表的所有链规则 iptables -L -v -n # 查看详细信息,包括流量计数 [root@server ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domainChain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
-
添加规则:
iptables -A INPUT -s 192.168.1.100 -j DROP # 拒绝来自指定 IP 的流量 iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT # 允许访问 HTTP 端口 [root@server ~]# iptables -A INPUT -s 192.168.1.100 -j DROP [root@server ~]# iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT [root@server ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain DROP all -- 192.168.1.100 anywhere
-
删除规则:
iptables -D INPUT -s 192.168.1.100 -j DROP # 删除指定的拒绝规则 [root@server ~]# iptables -D INPUT -s 192.168.1.100 -j DROP [root@server ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain
-
修改规则:
iptables -R INPUT 1 -s 192.168.1.200 -j DROP # 修改链中第 1 条规则 [root@server ~]# iptables -R INPUT 1 -s 192.168.1.200 -j DROP [root@server ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 192.168.1.200 anywhere
-
保存规则(在某些发行版上):
iptables-save > /etc/iptables/rules.v4 # 保存当前规则到文件
-
恢复规则:
iptables-restore < /etc/iptables/rules.v4 # 从文件恢复规则
属性详解
主要属性和选项
-
链(Chain)
INPUT
:处理进入本机的流量。OUTPUT
:处理从本机发出的流量。FORWARD
:处理转发到其他机器的流量。
-
规则操作
-A
:追加规则到指定链。-I
:在指定链的最前面插入规则。-D
:删除指定链中的规则。-R
:替换指定链中的规则。-L
:列出指定链中的规则。-F
:清空指定链中的所有规则。-Z
:清空指定链中的计数器。-N
:新建一个用户自定义链。-X
:删除用户自定义链。
-
匹配条件
-p
:指定协议(如tcp
、udp
、icmp
等)。--dport
:指定目标端口(适用于 TCP/UDP)。--sport
:指定源端口(适用于 TCP/UDP)。-s
:指定源 IP 地址。-d
:指定目标 IP 地址。-m
:用于加载扩展模块,如-m state
、-m multiport
等。--state
:根据连接状态匹配(如NEW
、ESTABLISHED
、RELATED
)。
-
目标(Target)
ACCEPT
:允许匹配的流量通过。DROP
:丢弃匹配的流量,不返回响应。REJECT
:拒绝匹配的流量,并返回响应。LOG
:记录匹配的流量到系统日志。RETURN
:结束当前链规则的检查,返回上一个链。
组合示例
-
允许特定端口的出站流量
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
-
拒绝特定 IP 地址的进入流量
iptables -A INPUT -s 192.168.1.100 -j DROP
-
允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-
记录并丢弃来自特定子网的流量
iptables -A INPUT -s 192.168.1.0/24 -j LOG iptables -A INPUT -s 192.168.1.0/24 -j DROP
-
使用用户自定义链
iptables -N MYCHAIN iptables -A MYCHAIN -s 10.0.0.0/8 -j ACCEPT iptables -A INPUT -j MYCHAIN
示例配置
-
允许 SSH 访问:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-
拒绝所有其他流量:
iptables -A INPUT -j DROP
-
允许本地回环接口流量:
iptables -A INPUT -i lo -j ACCEPT
-
记录拒绝的连接:
iptables -A INPUT -j LOG --log-prefix "Dropped: " --log-level 4
注意事项
- 规则顺序:
iptables
是顺序执行的,一旦匹配到某条规则,就不会继续检查后面的规则。 - 持久性:
iptables
的配置在重启后不会保存,需使用iptables-save
和iptables-restore
命令保存和恢复规则,或者使用系统的防火墙管理工具。
3.firewalld详解
firewalld
是一个动态的防火墙管理工具,主要用于 Linux 系统。它使用区域和服务的概念,使得管理网络流量更加简便。
主要特点
- 动态配置:允许在不重启服务的情况下添加或修改规则。
- 区域:通过将不同的网络接口或地址分配给区域,定义访问控制策略。
- 服务:预定义的服务(如 HTTP、SSH)简化了规则的设置。
基本命令
-
查看状态:
[root@server ~]# systemctl status firewalld.service
-
启动/停止/重启:
systemctl start firewalld systemctl stop firewalld systemctl restart firewalld
-
查看当前区域:
firewall-cmd --get-active-zones [root@server ~]# firewall-cmd --get-active-zones publicinterfaces: ens160
-
添加服务到区域:
firewall-cmd --zone=public --add-service=http --permanent [root@server ~]# firewall-cmd --zone=public --add-service=http --permanent success
-
重新加载配置:
firewall-cmd --reload [root@server ~]# firewall-cmd --reload success
-
查看当前规则:
firewall-cmd --list-all [root@server ~]# firewall-cmd --list-all public (active)target: defaulticmp-block-inversion: nointerfaces: ens160sources: services: cockpit dhcpv6-client http sshports: protocols: forward: yesmasquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
-
删除服务:
firewall-cmd --zone=public --remove-service=http --permanent [root@server ~]# firewall-cmd --zone=public --remove-service=http --permanent success
区域管理
可以通过以下命令管理不同区域:
2. dmz
3. drop
4. external
5. home
6. internal
7. nm-shared
8. public
9. trusted
10. work
-
列出所有区域:
firewall-cmd --get-zones [root@server ~]# firewall-cmd --get-zones block dmz drop external home internal nm-shared public trusted work
-
区域详解
-
1. block
- 描述:所有传入流量都会被拒绝,适用于需要完全阻止网络访问的场景。
- 用法:常用于安全性要求极高的环境。
- 描述:对外部网络开放但不信任的区域,允许一些服务,但阻止所有其他流量。
- 用法:通常用于放置公共服务,例如 Web 服务器,防止内部网络受到威胁。
- 描述:丢弃所有传入流量,类似于 block,但不会发送拒绝响应。
- 用法:用于需要隐身的场景,确保不会暴露系统的存在。
- 描述:用于直接连接到公共网络的区域,通常用于路由器或网关设备。
- 用法:可用于允许特定服务通过 NAT 转发,通常与其他区域结合使用。
- 描述:适用于家庭网络,默认允许大多数流量,但提供了一些保护。
- 用法:适合家庭用户,默认情况下允许大多数家庭设备和服务的流量。
- 描述:信任的内部网络,允许较为开放的流量,适合企业或组织内部使用。
- 用法:用于公司内部的设备和服务,提供相对宽松的访问。
- 描述:由 NetworkManager 创建的区域,用于共享网络连接。
- 用法:适合临时或共享的网络连接场景。
- 描述:不信任的公共网络区域,默认情况下阻止所有流量,仅允许一些特定的服务。
- 用法:适合在咖啡厅或机场等公共场所使用的设备。
- 描述:信任的区域,允许所有流量,不会进行任何限制。
- 用法:适合信任的网络环境,但需要谨慎使用,因为它没有任何防护。
- 描述:适用于公司或组织的工作网络,提供较为灵活的规则。
- 用法:适合办公室环境,允许常见的工作流量。
-
设置默认区域:
firewall-cmd --set-default-zone=home
firewall-cmd命令的参数
主要命令参数
-
--state
- 描述:显示防火墙当前状态(running, not running)。
- 示例:
firewall-cmd --state
-
--zone=ZONE
- 描述:指定操作的区域。
- 示例:
firewall-cmd --zone=public --list-all
-
--permanent
- 描述:应用更改到永久配置,而非临时配置。
- 示例:
firewall-cmd --zone=public --add-service=http --permanent
-
--add-service=SERVICE
- 描述:添加服务到指定区域。
- 示例:
firewall-cmd --zone=public --add-service=https
-
--remove-service=SERVICE
- 描述:从指定区域移除服务。
- 示例:
firewall-cmd --zone=public --remove-service=http
-
--add-port=PORT[/PROTOCOL]
- 描述:添加端口到指定区域。
- 示例:
firewall-cmd --zone=public --add-port=8080/tcp
-
--remove-port=PORT[/PROTOCOL]
- 描述:从指定区域移除端口。
- 示例:
firewall-cmd --zone=public --remove-port=8080/tcp
-
--list-all
- 描述:列出指定区域的所有配置。
- 示例:
firewall-cmd --zone=public --list-all
-
--reload
- 描述:重新加载防火墙配置。
- 示例:
firewall-cmd --reload
-
--set-target=TARGET
- 描述:设置指定区域的目标(例如,DROP, ACCEPT)。
- 示例:
firewall-cmd --zone=public --set-target=DROP
-
--get-active-zones
- 描述:列出当前活动的区域。
- 示例:
firewall-cmd --get-active-zones
-
--zone=public --add-rich-rule='rule'
- 描述:添加自定义的丰富规则。
- 示例:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
用法示例
-
查看当前所有区域
firewall-cmd --get-zones
-
查看指定区域的服务和端口
firewall-cmd --zone=public --list-services firewall-cmd --zone=public --list-ports
-
将区域设置为信任
firewall-cmd --zone=internal --set-target=ACCEPT
-
允许特定 IP 地址访问
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" accept'
-
禁用区域
firewall-cmd --zone=public --remove-service=ftp
注意事项
- 使用
--permanent
时,要记得在完成更改后运行--reload
以使更改生效。 firewalld
会根据默认区域来管理流量,确保你了解默认区域设置。