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. 常见问题

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

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

  3. 服务无法访问:
    • 确认防火墙区域(如 public)包含目标端口。
    • 检查 SELinux/AppArmor 是否拦截流量(需额外配置)。


附录:工具选择建议

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

通过合理配置防火墙,可以有效保护服务器安全,同时保持服务的可用性!如果有具体场景(如云服务器安全组配置),欢迎进一步讨论。 🔒

内容概要:本文档全面介绍了Linux的基础知识,涵盖了系统目录结构、命令行工具、网络配置、磁盘管理、软件安装等多个方面。首先介绍了Linux的基本目录结构及其功能,如/bin、/etc、/home等重要目录的作用。接着讲述了常用的命令行工具及其用法,例如创建、删除、移动文件和目录的方法。文档还重点讲解了网络配置的步骤,包括使用ifconfig命令配置网络接口,以及编辑配置文件实现静态或动态IP设置。此外,文中涉及磁盘管理和常见文件系统的操作,比如使用fdisk命令进行分区,mkfs进行格式化。对于新手来说,还包含了如何配置防火墙和SELinux的安全措施。关于软件安装部分,则着重比较了编译安装、rpm包管理和yum在线仓库的优势与操作流程,并给出了安装常用服务(如MySQL、Java和Hadoop)的实际步骤,确保用户可以在自己的环境中进行操作实践。 适用人群:适用于想要深入了解Linux系统结构和常用命令的新手用户和技术入门者。 使用场景及目标:适合用于Linux初学者的学习和实验,目的是帮助他们掌握Linux的基本操作技能和关键概念。学习完本文档后,学员应该能够熟练运用命令行进行简单的文件管理系统管理和基础服务搭建,包括但不限于建立和管理用户的权限,进行网络连接配置,实施基本的安全设定等。 其他说明:文档提供了丰富的实践例子,特别是对于初次接触Linux的人来说非常友好。通过具体的命令示范和详细的解释,不仅有助于理解抽象的概念,也能让用户更好地适应实际的工作环境。此外,针对常见的问题也给出了解决方法,例如安装过程中遇到错误应该如何排查,以及特定环境下的一些注意事项。总之,这是一个非常好的学习资源,可以帮助任何人迅速而有效地开始他们在Linux世界里的探索之旅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独隅

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值