Linux系统本身具备完善的防火墙功能,这是Linux作为服务器操作系统的重要安全特性之一。Linux内核从早期版本就集成了网络过滤框架,基于该框架衍生出了多种用户态防火墙管理工具,能够满足不同场景下的网络安全管控需求。

Linux防火墙的核心实现基础
Linux防火墙的核心能力由内核的netfilter框架提供,该框架工作在内核网络协议栈的不同处理节点,能够对进出系统的网络数据包进行过滤、修改和转发控制。netfilter本身不直接面向用户,需要通过用户态的工具来进行规则配置和管理。
常见的Linux防火墙管理工具
1. iptables
iptables是早期Linux发行版中最常用的防火墙配置工具,它直接基于netfilter框架工作,通过定义表、链和规则来实现流量管控。iptables的规则配置相对底层,灵活性很高,但学习成本也相对较高。
以下是iptables的基础规则配置示例,用于开放80端口的TCP访问:
# 清除现有规则 iptables -F # 设置默认策略,INPUT链默认拒绝,OUTPUT和FORWARD链默认允许 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT # 允许本地回环接口流量 iptables -A INPUT -i lo -j ACCEPT # 允许已建立的连接和相关连接流量 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 开放80端口TCP访问 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 保存规则(不同发行版保存命令可能有差异) service iptables save
2. firewalld
firewalld是后续很多主流Linux发行版(如CentOS 7及以上、Fedora等)默认采用的防火墙管理工具,它基于iptables或nftables作为后端,提供了更动态、更友好的配置方式,支持区域(zone)的概念,能够根据网络环境快速切换不同的规则集合。
以下是firewalld的基础操作示例:
# 查看firewalld服务状态 systemctl status firewalld # 启动firewalld服务 systemctl start firewalld # 设置firewalld开机自启 systemctl enable firewalld # 查看当前活动的区域 firewall-cmd --get-active-zones # 开放80端口TCP访问(临时生效,重启后失效) firewall-cmd --add-port=80/tcp # 开放80端口TCP访问(永久生效,需要重载规则) firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload # 查看已开放的端口 firewall-cmd --list-ports
3. ufw
ufw(Uncomplicated Firewall)是Ubuntu等发行版中常用的简化防火墙工具,它封装了iptables的复杂操作,提供了更简洁的命令语法,适合新手快速配置基础防火墙规则。
以下是ufw的基础操作示例:
# 查看ufw状态 ufw status # 启用ufw(启用时会提示是否继续,输入y确认) ufw enable # 开放80端口TCP访问 ufw allow 80/tcp # 拒绝来自192.168.1.100的访问 ufw deny from 192.168.1.100 # 删除开放80端口的规则 ufw delete allow 80/tcp
不同发行版的默认防火墙情况
不同Linux发行版的默认防火墙配置存在差异,以下是常见发行版的情况:
| 发行版 | 默认防火墙工具 | 默认状态 |
|---|---|---|
| CentOS 7及以上 | firewalld | 默认启用 |
| CentOS 6及以下 | iptables | 默认启用 |
| Ubuntu 18.04及以上 | ufw | 默认未启用,需要手动开启 |
| Debian | iptables/ufw | 默认未启用 |
如何确认当前系统是否有防火墙在运行
可以通过以下步骤快速确认当前Linux系统的防火墙运行状态:
- 检查firewalld状态:执行
systemctl status firewalld,如果显示active (running)则说明firewalld正在运行 - 检查iptables规则:执行
iptables -L,如果输出有具体的规则条目,说明iptables有生效的规则 - 检查ufw状态:执行
ufw status,如果显示Status: active则说明ufw正在运行
需要注意的是,即使防火墙服务没有运行,Linux内核的netfilter框架仍然存在,只是没有加载用户配置的规则,此时系统相当于没有启用防火墙过滤能力,所有网络流量都可以自由进出。
总结
Linux系统不仅有防火墙功能,还提供了多种不同层级的防火墙管理工具,用户可以根据自己的发行版和使用场景选择合适的工具进行配置。无论是服务器还是本地Linux设备,启用并合理配置防火墙都是保障网络安全的基础操作,能够有效降低系统被攻击的风险。