从入门到精通,Linux防火墙设置全指南,管控IP访问权限守护系统网络安全

susu
《Linux防火墙设置全指南:从入门到精通,守护系统网络安全》聚焦IP访问权限管控,是覆盖从基础到进阶的实用手册,它详细讲解iptables、firewalld等主流防火墙工具,从入门级的规则基本概念,到进阶的IP白名单/黑名单配置、特定服务访问限制等实战操作,还包含运维中的规则优化、故障排查技巧,无论新手还是资深管理员,都能通过指南掌握精准管控IP访问的方法,构建稳固的系统网络安全防护屏障,有效抵御非法访问与网络威胁。

在Linux系统中,防火墙是抵御网络攻击、控制流量进出的核心防线,无论是个人服务器还是企业级集群,合理配置防火墙规则都是保障系统安全的关键一步,本文将从基础操作到进阶配置,全面讲解Linux主流防火墙工具的使用方法,帮助你搭建稳固的网络安全屏障。

Linux防火墙概述:主流工具与适用场景

Linux生态中有多款成熟的防火墙工具,不同发行版默认工具略有差异,常见的有以下三种:

从入门到精通,Linux防火墙设置全指南,管控IP访问权限守护系统网络安全

  • firewalld:CentOS 7+、RHEL 7+等发行版默认工具,基于iptables,支持动态规则更新、区域(Zone)管理,适合需要灵活调整规则的场景。
  • ufw(Uncomplicated Firewall):Ubuntu、Debian等发行版默认工具,简化了iptables的复杂语法,适合新手快速上手。
  • iptables:传统底层防火墙工具,规则直接作用于内核网络栈,适合需要精细化控制的高级用户(部分老系统仍在使用)。

基础操作:主流防火墙工具实战

firewalld:动态规则与区域管理

(1)基础状态管理
# 查看防火墙状态
systemctl status firewalld
# 启动防火墙
systemctl start firewalld
# 设置开机自启
systemctl enable firewalld
# 停止防火墙(不推荐,除非调试)
systemctl stop firewalld
(2)核心规则配置
  • 开放端口:允许外部访问80(HTTP)、443(HTTPS)端口
    # 临时生效(重启后失效)
    firewall-cmd --add-port=80/tcp
    firewall-cmd --add-port=443/tcp

永久生效(需重载规则)

firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=443/tcp --permanent

重载规则使永久配置生效

firewall-cmd --reload


- **允许特定IP访问**:仅允许192.168.1.100访问SSH(22端口)
```bash
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept' --permanent
firewall-cmd --reload
  • 封禁恶意IP:拒绝192.168.1.200的所有流量

    firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject' --permanent
    firewall-cmd --reload
  • 查看当前规则

    # 查看所有生效规则
    firewall-cmd --list-all

查看永久规则

firewall-cmd --list-all --permanent


### 2. ufw:新手友好的简化工具
#### (1)基础状态管理
```bash
# 启用ufw
ufw enable
# 查看状态(带编号规则)
ufw status numbered
# 禁用ufw
ufw disable
(2)核心规则配置
  • 允许常用服务:允许SSH、HTTP访问

    ufw allow ssh
    ufw allow http
    ufw allow https
  • 开放/关闭端口:开放8080端口,关闭3306端口

    ufw allow 8080/tcp
    ufw deny 3306/tcp
  • 精准控制IP:允许192.168.1.0/24网段访问,拒绝单个IP

    ufw allow from 192.168.1.0/24
    ufw deny from 192.168.1.200
  • 删除规则:根据编号删除规则(先通过ufw status numbered查看编号)

    ufw delete 3  # 删除编号为3的规则

iptables:底层规则精细化控制

(1)基础规则配置
# 允许本地回环接口(必备,否则系统可能异常)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接(避免中断现有会话)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP/HTTPS访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 默认拒绝所有入站流量
iptables -P INPUT DROP
# 默认允许所有出站流量
iptables -P OUTPUT ACCEPT
(2)规则保存与恢复
# CentOS/RHEL保存规则
service iptables save
# Debian/Ubuntu保存规则
iptables-save > /etc/iptables/rules.v4
# 恢复规则
iptables-restore < /etc/iptables/rules.v4

进阶配置:提升安全与灵活性

配置默认策略

默认策略是防火墙的基础逻辑,建议遵循“最小权限”原则:

  • firewalld:设置默认区域为public(仅允许必要服务)
    firewall-cmd --set-default-zone=public
  • ufw:默认拒绝所有入站,允许所有出站
    ufw default deny incoming
    ufw default allow outgoing

端口转发(端口映射)

将外部访问的80端口转发到内部的8080端口(需开启IP伪装):

# firewalld开启IP伪装
firewall-cmd --add-masquerade --permanent
# 配置端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --reload

区域(Zone)精细化管理

firewalld的区域功能可根据网络环境切换安全策略,

  • trusted:信任所有流量(适合内部局域网)
  • internal:允许内部服务访问
  • public:仅允许必要的公共服务
# 查看所有区域
firewall-cmd --get-zones
# 将网卡eth0加入internal区域
firewall-cmd --zone=internal --add-interface=eth0 --permanent
firewall-cmd --reload

开启防火墙日志

开启日志可帮助排查攻击行为:

# firewalld开启拒绝日志
firewall-cmd --set-log-denied=all --permanent
firewall-cmd --reload
# iptables开启日志(记录拒绝的流量)
iptables -A INPUT -j LOG --log-prefix "IPTABLES_DENY: " --log-level 4

实战案例:Web服务器防火墙配置

假设你搭建了一台Web服务器,需要允许SSH远程管理、HTTP/HTTPS访问,同时拒绝其他无关流量:

方案1:使用firewalld

# 设置默认区域为public
firewall-cmd --set-default-zone=public
# 允许SSH、HTTP、HTTPS服务
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
# 重载规则
firewall-cmd --reload

方案2:使用ufw

# 启用ufw
ufw enable
# 允许SSH、HTTP、HTTPS
ufw allow ssh
ufw allow http
ufw allow https
# 查看规则
ufw status

注意事项与最佳实践

  1. 先保障远程访问:修改防火墙规则前,务必确保SSH端口已被允许,避免远程连接断开无法恢复。
  2. 临时规则测试:先使用临时规则(如firewalld不加--permanent)测试,确认无误后再改为永久规则。
  3. 定期备份规则:将防火墙规则保存到文件,避免系统重启后丢失。
  4. 监控日志:定期查看防火墙日志,及时发现异常流量和攻击尝试。
  5. 避免过度开放:仅允许必要的端口和IP访问,遵循“最小权限”原则,减少攻击面。

通过本文的讲解,你可以根据自己的Linux发行版和需求,选择合适的防火墙工具,从基础配置到进阶优化,为系统搭建一道坚实的网络安全防线,防火墙配置并非一劳永逸,需根据业务变化和安全形势持续调整,才能始终保持系统安全。

文章版权声明:除非注明,否则均为麻团原创文章,转载或复制请以超链接形式并注明出处。

目录[+]