Linux系统下防火墙配置的详细指南

 更新时间:2025年07月01日 10:29:30   作者:独隅  
防火墙是一种网络安全设备,它能够:监控和过滤进出网络的流量阻止不安全的连接保护计算机和网络免受未授权访问创建一个安全边界简单来说,防火墙就像是电脑的"安全门卫",决定谁能进、谁能出,本文给大家介绍了Linux如何配置防火墙,需要的朋友可以参考下

以下是 Linux 系统下防火墙配置的详细指南,涵盖 iptablesufwfirewalld 等主流工具的使用方法和实战场景!

1. 防火墙工具对比

工具适用场景特点
iptables传统 Linux 系统(如 CentOS/RHEL)功能强大,规则灵活,但配置复杂
ufwUbuntu/Debian 等新发行版图形化界面,命令简洁,适合新手
firewalldRHEL/CentOS 8+/Fedora基于服务的动态防火墙,支持 NAT 和端口转发

2. iptables 基础配置

2.1 查看规则

iptables -L -n -v  # 查看所有规则(-n 不解析域名,-v 显示详细信息)

2.2 清空规则

iptables -F  # 清空所有规则
iptables -t nat -F  # 清空 NAT 表

2.3 基础规则示例

# 允许 SSH(端口 22)入站
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 HTTP/HTTPS(端口 80/443)入站
iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT

# 拒绝其他所有入站流量(默认策略)
iptables -P INPUT DROP

# 保存规则(根据系统选择以下命令)
iptables-save | sudo tee /etc/sysconfig/iptables  # CentOS/RHEL
iptables-save > /etc/iptables/rules.v4          # Ubuntu/Debian

2.4 高级功能

# 设置 NAT 规则(端口转发)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination :80
iptables -t nat -A POSTROUTING -j MASQUERADE

# 限制 IP 访问频率(每分钟最多 10 次)
iptables -I INPUT -p tcp --dport 22 -m limit --limit 10/min -j ACCEPT

3. ufw(Uncomplicated Firewall)配置

3.1 启用与禁用

sudo ufw enable  # 启用防火墙
sudo ufw disable # 禁用防火墙

3.2 规则配置

# 开放端口(默认策略为拒绝)
sudo ufw allow 22/tcp  # SSH
sudo ufw allow 80,443/tcp  # HTTP/HTTPS

# 拒绝特定 IP(如 192.168.1.100)
sudo ufw deny from 192.168.1.100 to any

# 删除规则
sudo ufw delete allow 22/tcp

# 查看规则
sudo ufw status numbered  # 显示带序号的规则

3.3 高级配置

# 限制 SSH 最大连接数
sudo ufw limit 22/tcp  # 默认:每分钟 60 次,突发 10 次

# 设置默认策略(优先级最低)
sudo ufw default deny incoming  # 入站默认拒绝
sudo ufw default allow outgoing   # 出站默认允许

4. firewalld 配置

4.1 启用与禁用

sudo systemctl start firewalld       # 启动服务
sudo systemctl enable firewalld      # 设置开机自启
sudo systemctl stop firewalld        # 停止服务

4.2 查看与修改规则

# 查看所有活动区域规则
sudo firewall-cmd --list-all

# 添加开放端口(永久生效)
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

# 临时添加规则(重启后失效)
sudo firewall-cmd --zone=public --add-port=80/tcp

# 删除规则
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent

4.3 高级功能

# 设置服务(预定义规则集)
sudo firewall-cmd --zone=public --add-service=http --permanent

# 添加富规则(复杂匹配)
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'

# 启用 NAT 和路由
sudo firewall-cmd --zone=public --add-masquerade --permanent

5. 防火墙策略设计原则

  1. 最小化开放端口:仅开放必要服务(如 SSH、HTTP)。
  2. 默认拒绝策略:未明确允许的流量应默认拒绝。
  3. 分层防御:结合内核防火墙(iptables)和 service-level 防火墙(firewalld)。
  4. 日志记录:监控可疑流量(如 --log 选项)。
  5. 定期审计:清理过期规则,更新策略。

6. 实战场景

场景 1:Web 服务器防火墙配置

# 使用 ufw
sudo ufw allow 80,443/tcp
sudo ufw default deny incoming
sudo ufw enable

# 使用 firewalld
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent

场景 2:SSH 安全加固

# 限制 IP 白名单(如允许 192.168.1.0/24 网段)
sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

# 使用 fail2ban 防止暴力破解
sudo apt install fail2ban
sudo systemctl start fail2ban

7. 常见问题

规则未生效:

  • 确保保存了规则(如 iptables-savefirewall-cmd --permanent)。
  • 检查是否有其他防火墙工具冲突(如同时运行 iptablesufw)。

端口转发失败:

  • 确认 NAT 规则正确(iptables -t nat)。
  • 检查系统转发功能是否启用:sudo sysctl -w net.ipv4.ip_forward=1

服务无法访问:

  • 确认防火墙区域(如 public)包含目标端口。
  • 检查 SELinux/AppArmor 是否拦截流量(需额外配置)。

附录:工具选择建议

  • 新手:优先使用 ufw,命令简单直观。
  • 生产环境:使用 firewalld 管理动态服务规则。
  • 级需求:结合 iptables 处理复杂 NAT 和流量限制。

通过合理配置防火墙,可以有效保护服务器安全,同时保持服务的可用性!

到此这篇关于Linux系统下防火墙配置的详细指南的文章就介绍到这了,更多相关Linux防火墙配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux内核启动的入口介绍及说明

    linux内核启动的入口介绍及说明

    Linux内核启动分为固件初始化、内核解压、架构特定入口(如x86的startup_32/64、ARM的stext)和核心初始化阶段(如sched_init、mem_init),用户空间过渡阶段通过rest_init创建内核线程,完成文件系统挂载和控制权移交
    2025-10-10
  • 安装Debian12后Linux启动SMTP服务的详细指南

    安装Debian12后Linux启动SMTP服务的详细指南

    这篇文章主要为大家详细了在 Win10 上 WSL 安装 Debian 12 后,Linux 如何启动 SMTP 服务,文中的示例代码简洁易懂,有需要的可以了解下
    2025-06-06
  • 详解CentOS 6.5如何安装Realtek无线网卡驱动

    详解CentOS 6.5如何安装Realtek无线网卡驱动

    相信大家都应该知道CentOS6.5不像CentOS7和Unbuntu那样自动安装好了无线网卡驱动,如果想要在CentOS 6.5上实现无线上网,我们就需要折腾一下,这篇文章给大家介绍了详细的步骤,感兴趣的朋友们下面来一起看看吧。
    2016-10-10
  • CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置

    CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置

    CentOS 6.1 环境中部署nginx、php(包括fastcgi)、虚拟主机配置,需要的朋友可以参考下
    2012-08-08
  • Linux中的systemd与SysVinit使用

    Linux中的systemd与SysVinit使用

    这篇文章主要介绍了 Linux中的systemd与SysVinit使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Ubuntu20.04安装Python3的虚拟环境教程详解

    Ubuntu20.04安装Python3的虚拟环境教程详解

    这篇文章主要介绍了Ubuntu20.04安装Python3的虚拟环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Centos中如何设置IP地址

    Centos中如何设置IP地址

    这篇文章主要介绍了Centos中如何设置IP地址问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Linux操作系统之逻辑卷管理LVM详解

    Linux操作系统之逻辑卷管理LVM详解

    文章介绍了Linux系统中的逻辑卷管理(LVM)技术,包括LVM的基本概念、卷类型(线性卷、条带卷)、操作(创建物理卷、卷组、逻辑卷,挂载等)和扩容等方法,以及常用命令总结,Lvm提供灵活的的存储管理方式,适用于需要动态扩展存储空间的场景
    2026-04-04
  • Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)

    Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)

    这篇文章主要给大家介绍了关于Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-10-10
  • 确保Linux VPS及服务器更加安全之Xshell设置密钥登录

    确保Linux VPS及服务器更加安全之Xshell设置密钥登录

    这篇文章主要介绍了Xshell设置密钥登录确保Linux VPS及服务器更加安全,需要的朋友可以参考下
    2016-10-10

最新评论