凌峰创科服务平台

Linux服务器防火墙如何配置?

Linux 服务器防火墙是保障服务器安全的核心组件,它通过控制网络流量进出,有效防止未授权访问、恶意攻击和数据泄露,在 Linux 环境中,防火墙的实现方式多样,从传统的 iptables 到现代的 firewalld,再到容器环境下的 iptables 原理,每种工具都有其适用场景和操作逻辑,本文将详细介绍 Linux 服务器防火墙的核心功能、常见工具配置方法及最佳实践,帮助管理员构建高效的安全防护体系。

Linux服务器防火墙如何配置?-图1
(图片来源网络,侵删)

Linux 防火墙的核心作用与重要性

Linux 防火墙工作在网络协议栈的传输层、网络层或应用层,通过预定义的规则集(如允许/拒绝特定端口、IP 地址、协议类型)对数据包进行过滤,其核心作用包括:

  1. 访问控制:限制外部用户对服务器服务的访问,仅开放必要端口(如 HTTP 80、HTTPS 443),禁用高危端口(如 Telnet 23、FTP 21)。
  2. 攻击防护:抵御 DDoS、端口扫描、SQL 注入等常见攻击,例如通过限制连接频率防止暴力破解。
  3. 网络隔离:将服务器划分为不同安全区域(如 DMZ 区、内网区),控制跨区域流量,降低横向渗透风险。
  4. 流量监控:记录允许/拒绝的流量日志,帮助管理员分析异常行为,及时发现入侵痕迹。

若未配置防火墙,服务器将直接暴露于公网,易受自动化攻击工具扫描,导致系统被入侵、数据泄露或沦为攻击跳板。

常见 Linux 防火墙工具及配置方法

Linux 系统中主流的防火墙工具分为 iptables(传统工具,基于内核 netfilter 框架)、firewalld(动态管理工具,支持区域策略)以及 nftables(新一代工具,整合 iptables 功能并优化性能),以下重点介绍 iptablesfirewalld 的基础配置。

(一)iptables:基于规则的静态防火墙

iptables 是 Linux 2.4 版本后内置的防火墙工具,通过表(table)、链(chain)、规则(rule)三级结构管理流量,默认包含 filter(过滤数据包)、nat(网络地址转换)、mangle(修改数据包)和 raw(跟踪连接)四个表,filter 表最常用,用于处理输入(INPUT)、输出(OUTPUT)和转发(`FORWARD)流量。

Linux服务器防火墙如何配置?-图2
(图片来源网络,侵删)

基础配置示例

  1. 查看当前规则
    sudo iptables -L -n -v  # -n 显示 IP 和端口数字,-v 显示详细计数
  2. 允许本地回环流量(避免服务异常):
    sudo iptables -A INPUT -i lo -j ACCEPT  # -A 追加规则,-i 指定输入接口
  3. 允许已建立的连接及相关连接(确保客户端能正常访问服务):
    sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  4. 开放特定端口(如允许 HTTP 和 HTTPS):
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # -p 指定协议,--dport 目标端口
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  5. 拒绝其他所有输入流量(默认拒绝策略):
    sudo iptables -P INPUT DROP  # -P 设置默认策略
  6. 保存规则(防止重启失效):
    • CentOS/RHEL:sudo service iptables save
    • Debian/Ubuntu:sudo iptables-save > /etc/iptables/rules.v4

注意事项iptables 规则是顺序匹配的,一旦数据包被某条规则匹配,后续规则不再生效;修改规则时需谨慎,避免误封导致无法远程连接。

(二)firewalld:动态管理的区域化防火墙

firewalld(默认用于 CentOS 7+/RHEL 7+、Fedora)支持动态更新规则,无需重启服务即可生效,并通过“区域”(Zone)概念划分不同网络环境的信任级别(如 public 公共区域、trusted 信任区域)。

基础配置示例

  1. 查看当前区域及规则
    sudo firewall-cmd --get-active-zones
    sudo firewall-cmd --list-all --zone=public
  2. 设置默认区域
    sudo firewall-cmd --set-default-zone=public
  3. 开放端口(如永久开放 SSH 22 端口):
    sudo firewall-cmd --permanent --add-port=22/tcp  # --permanent 确保重启后生效
    sudo firewall-cmd --reload  # 重新加载规则
  4. 将 IP 地址加入信任区域(允许特定 IP 访问所有服务):
    sudo firewall-cmd --permanent --add-source=192.168.1.100 --zone=trusted
  5. 查看服务列表并启用预定义服务(如启用 MySQL):
    sudo firewall-cmd --get-services | grep mysql
    sudo firewall-cmd --permanent --add-service=mysql

优势firewalld 的区域策略简化了复杂网络环境的配置,适合动态变化的场景(如云服务器 IP 频繁变更)。

防火墙配置的最佳实践

  1. 最小权限原则:仅开放业务必需的端口,Web 服务器仅需开放 80、443,数据库服务器通常仅允许内网 IP 访问 3306 端口。
  2. 默认拒绝策略:将 INPUT 链默认策略设为 DROP,明确允许的流量,避免隐式开放风险。
  3. 定期更新规则:根据业务变化调整端口策略,及时关闭废弃服务端口。
  4. 日志监控:开启防火墙日志(如 iptablesLOG 目标),结合 logrotate 管理日志文件,定期分析异常流量。
  5. 测试环境验证:在生产环境修改规则前,先在测试环境验证配置,避免因规则错误导致服务中断。

相关问答 FAQs

Q1:如何判断防火墙是否生效?
A1:可通过以下方式验证:

  • 端口扫描:在客户端使用 nmap 命令扫描服务器端口,如 nmap -p 22,80,443 your_server_ip,若开放端口显示 filteredclosed,则规则生效;
  • 网络连接测试:在客户端尝试访问服务(如 curl http://your_server_ip),若开放端口能正常访问、非开放端口连接超时,则配置正确;
  • 日志检查:查看防火墙日志(如 iptables 日志通常位于 /var/log/messagesjournalctl -u iptables),确认是否有拒绝/允许记录。

Q2:修改防火墙规则后无法远程连接服务器怎么办?
A2:若因规则错误导致无法 SSH 连接,可通过以下方式恢复:

  1. 物理/控制台访问:通过服务器物理控制台或云服务商提供的 VNC/Console 登录系统;
  2. 紧急恢复规则
    • 对于 iptables,可通过 sudo iptables -F 清空所有规则(临时恢复连接),再重新配置正确规则;
    • 对于 firewalld,运行 sudo firewall-cmd --reload 重载规则,或使用 sudo firewall-cmd --panic-on 进入紧急模式(临时拒绝所有流量,需手动解除);
  3. 预防措施:修改规则前,确保预留了管理入口(如始终允许 SSH 端口),或使用 iptables-s 参数限制管理 IP 访问,降低误操作风险。

通过合理配置和管理防火墙,可显著提升 Linux 服务器的安全性,为业务稳定运行提供坚实保障,管理员需结合实际场景选择工具,并持续优化规则,以应对不断变化的网络安全威胁。

分享:
扫描分享到社交APP
上一篇
下一篇