当前位置: 代码网 > 服务器>服务器>Linux > Linux系统下防火墙配置的详细指南

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

2025年07月01日 Linux 我要评论
以下是 linux 系统下防火墙配置的详细指南,涵盖 iptables、ufw、firewalld 等主流工具的使用方法和实战场景!1. 防火墙工具对比工具适用场景特点iptables传统 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防火墙配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Nginx报错403问题排查与解决办法

    前言今天领导让我部署一个前端项目,一顿操作报错访问报错403,让我们一起搞定他。环境centos 7 x86 的服务器上部署了 nginx 服务器。配置文件我把前端项目打包后的 d…

    2025年06月27日 服务器
  • Linux下的进程控制解读

    进程创建在linux环境下,我们使用系统调用接口 fork()函数,来创建进程!参数:无参;返回值:创建失败,返回负值;创建成功,对于子进程返回0,对于父进程返回子进程的pid;f…

    2025年06月27日 服务器
  • Linux程序替换方式

    创建子进程的目的?目的:为了帮助父进程完成一些特定的任务;子进程帮助父进程完成任务的方式有那些?1、执行一段父进程的代码;(这是我们初学者经常使用子进程的方式):2、让子进程执行一…

    2025年06月27日 服务器
  • Linux nmcli设置bond的过程

    Linux nmcli设置bond的过程

    1、介绍nmcli是networkmanager提供的网络管理工具,nmcli设置的bond可以持久化,因为会写入配置文件,下面我们就来通过nmcli来配置bo... [阅读全文]
  • Linux进程信号的使用解读

    什么是信号信号是进程之间事件异步通知的一种方式,属于软中断。信号的处理能力是进程的内置功能的一部分进程即便没有收到信号也知道要如何处理信号当进程收到一个信号时可能不会立刻处理,而是…

    2025年06月25日 服务器
  • Linux线程概念和控制方式

    linux线程概念linux中线程如何理解线程<=执行流<=进程linux中的线程模拟进程实现(线程就是轻量级进程)与独立的进程相比,线程创建和销毁的开销较小,因为它们…

    2025年06月25日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com