当前位置: 首页 > news >正文

Linux防火墙配置指南:限制特定IP访问并允许其他所有流量

概述

本指南展示如何配置 Linux 防火墙(firewalld),实现仅限制特定IP/网段的访问,同时允许其他所有IP自由访问任意端口的方案。这种配置适用于需要隔离恶意IP但保持其他客户端无限制访问的场景。

在 blocked_ips 列表
不在 blocked_ips 列表
所有网络流量
来源IP检查
拒绝访问 DROP
允许所有流量 ACCEPT

完整配置脚本

#!/bin/bash
# ==============================================
# Linux 防火墙配置脚本
# 功能:限制特定IP访问,允许其他所有IP自由访问
# 版本:1.2
# ==============================================# 1. 启动并启用 firewalld 服务
echo "[1/6] 启动并启用防火墙服务..."
sudo systemctl start firewalld
sudo systemctl enable firewalld# 2. 设置默认区域为 trusted(允许所有流量)
echo "[2/6] 配置默认区域为 trusted..."
sudo firewall-cmd --set-default-zone=trusted
echo "默认区域已设置为: $(sudo firewall-cmd --get-default-zone)"# 3. 创建新区域用于管理被禁止的IP
echo "[3/6] 创建 blocked_ips 区域..."
sudo firewall-cmd --permanent --new-zone=blocked_ips
sudo firewall-cmd --reload# 4. 将网络接口分配到 trusted 区域(关键步骤!)
echo "[4/6] 分配网络接口到 trusted 区域..."
# 获取活动接口(自动适配不同服务器)
INTERFACE=$(sudo firewall-cmd --get-active-zones | grep -v '^[[:space:]]' | head -1 | awk '{print $1}')
sudo firewall-cmd --permanent --zone=trusted --change-interface=$INTERFACE
echo "接口 $INTERFACE 已分配到 trusted 区域"# 5. 配置 blocked_ips 区域
echo "[5/6] 配置 blocked_ips 区域规则..."
# 设置区域目标为 DROP(拒绝所有流量)
sudo firewall-cmd --permanent --zone=blocked_ips --set-target=DROP# 添加要禁止的IP或网段(按需修改)
BANNED_IPS=("10.132.0.0/24" "10.0.0.50")
for ip in "${BANNED_IPS[@]}"; do
echo "禁止IP访问: $ip"
sudo firewall-cmd --permanent --zone=blocked_ips --add-source="$ip"
done# 6. 应用配置并验证
echo "[6/6] 应用防火墙配置..."
sudo firewall-cmd --reload# 验证配置
echo -e "\n=== 验证配置 ==="
echo "默认区域: $(sudo firewall-cmd --get-default-zone)"
echo "活动区域:"
sudo firewall-cmd --get-active-zones
echo -e "\n被阻止的IP列表:"
sudo firewall-cmd --zone=blocked_ips --list-all --permanent

关键配置说明

1. 区域策略说明

区域名称目标策略功能描述
trustedACCEPT允许所有传入和传出流量
blocked_ipsDROP拒绝指定来源IP的所有流量

2. 配置步骤详解

  1. 启用防火墙服务
    启动 firewalld 并设置为开机自启:
sudo systemctl start firewalld
sudo systemctl enable firewalld
  1. 设置默认区域为 trusted
    使所有流量默认被允许:
sudo firewall-cmd --set-default-zone=trusted

注意:此命令无需 --permanent 参数,直接生效且持久化

  1. 创建专用区域 blocked_ips
    用于管理被禁止的IP地址:
sudo firewall-cmd --permanent --new-zone=blocked_ips
sudo firewall-cmd --reload
  1. 分配网络接口到 trusted 区域
    关键步骤:确保网络接口使用正确的区域策略:
# 获取活跃接口(自动适配)
INTERFACE=$(sudo firewall-cmd --get-active-zones | grep -v '^[[:space:]]' | head -1 | awk '{print $1}')
sudo firewall-cmd --permanent --zone=trusted --change-interface=$INTERFACE
  1. 配置 blocked_ips 拒绝规则
    设置区域策略并添加被禁IP:
# 设置DROP策略
sudo firewall-cmd --permanent --zone=blocked_ips --set-target=DROP# 添加被禁IP(支持IP和CIDR网段)
sudo firewall-cmd --permanent --zone=blocked_ips --add-source=10.132.0.0/24
sudo firewall-cmd --permanent --zone=blocked_ips --add-source=10.0.0.50

3. 管理被禁IP的命令

添加新IP到禁止列表

sudo firewall-cmd --permanent --zone=blocked_ips --add-source=192.168.1.100
sudo firewall-cmd --reload

从禁止列表移除IP

sudo firewall-cmd --permanent --zone=blocked_ips --remove-source=10.0.0.50
sudo firewall-cmd --reload

禁止整个子网

sudo firewall-cmd --permanent --zone=blocked_ips --add-source=192.168.2.0/24
sudo firewall-cmd --reload

配置验证方法

  1. 检查区域配置
# 查看默认区域
firewall-cmd --get-default-zone# 查看活动区域
firewall-cmd --get-active-zones
  1. 列出被禁IP
firewall-cmd --zone=blocked_ips --list-sources
  1. 测试连接
# 从被禁IP测试(应失败)
ping -c 4 10.0.0.50# 从其他IP测试(应成功)
ping -c 4 8.8.8.8# 测试端口访问
telnet your-server-ip 22

常见问题解决

1. 配置后无法访问服务器

原因:接口未分配到 trusted 区域
解决

# 查看接口分配情况
sudo firewall-cmd --get-active-zones# 手动分配接口
sudo firewall-cmd --permanent --zone=trusted --change-interface=eth0
sudo firewall-cmd --reload

2. 被禁IP仍能访问

原因:IP未正确添加到 blocked_ips
解决

# 检查IP是否在列表
sudo firewall-cmd --zone=blocked_ips --list-sources# 添加后重载
sudo firewall-cmd --permanent --zone=blocked_ips --add-source=problem_ip
sudo firewall-cmd --reload

3. 防火墙规则丢失

原因:未使用 --permanent 参数
解决办法:所有规则变更都应包含 --permanent 参数,变更后执行 sudo firewall-cmd --reload

安全建议

  1. 定期备份配置
sudo cp -a /etc/firewalld /etc/firewalld-backup-$(date +%F)
  1. 监控被阻止的IP
# 查看实时阻止日志
sudo journalctl -u firewalld -f | grep DROP
  1. 结合堡垒机使用
  • 将堡垒机IP加入白名单
  • 其他管理访问通过堡垒机跳转

重要提示:trusted 区域会允许所有流量,仅推荐在内网环境或测试环境中使用。面向公网的服务器应使用更严格的默认策略(如 public 区域)。


文章转载自:

http://o8ebWFzw.kyjyt.cn
http://nnXFHmU4.kyjyt.cn
http://6GANbG3W.kyjyt.cn
http://zUfYRQ1B.kyjyt.cn
http://afO9ulMg.kyjyt.cn
http://behTJWFq.kyjyt.cn
http://fvOl0HaN.kyjyt.cn
http://x1W53yJD.kyjyt.cn
http://Ex8xaLYT.kyjyt.cn
http://gkEHsBBq.kyjyt.cn
http://bAMuYpjm.kyjyt.cn
http://Z2ObQZ6C.kyjyt.cn
http://IYtrlXd1.kyjyt.cn
http://zj3fbugC.kyjyt.cn
http://GdbNPoAB.kyjyt.cn
http://NhZbMa6Y.kyjyt.cn
http://0QiqA0YK.kyjyt.cn
http://Rp264KLp.kyjyt.cn
http://9t8dsLTX.kyjyt.cn
http://ZzKteawp.kyjyt.cn
http://OFEjtxFG.kyjyt.cn
http://8LIMX3hi.kyjyt.cn
http://I1GOxebm.kyjyt.cn
http://gf7Ts4mU.kyjyt.cn
http://nfgbtH0e.kyjyt.cn
http://5ISgYikN.kyjyt.cn
http://9XUGm6fZ.kyjyt.cn
http://jzeQ6ilF.kyjyt.cn
http://S7TJOzL9.kyjyt.cn
http://7tsCg7ib.kyjyt.cn
http://www.dtcms.com/a/378922.html

相关文章:

  • 使用动态IP 需要注意什么
  • 2025年- H128-Lc205. 同构字符串(哈希表)--Java版
  • 今天我们开始学习iptables防火墙
  • Android逆向学习(十一) IDA动态调试Android so文件
  • 第二篇:排序算法的简单认识【数据结构入门】
  • 嵌入式铁头山羊stm32:一文总结
  • HDFS(Hadoop 分布式文件系统)知识点梳理
  • AI幻觉的罪魁祸首
  • JVM 基础
  • 计算智能的概念和其算法的主要算法类型
  • leetcode25(有效的字母异位词)
  • [Windows] FileOptimizer v17.1.0_一款文件批量压缩工具
  • 淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
  • Java优选算法——二分查找
  • leetcode380:RandomizedSet - O(1)时间插入删除和获取随机元素(数组+哈希表的巧妙结合)
  • 经典蓝牙的 BR(Basic Rate(基础速率))
  • 牛客周赛 Round 108题解
  • Rocky9.0去堆叠双发arp(支持“ARP 广播双发”)
  • 「京墨」1.15.0 诗词、成语、对联、句子、诗歌…
  • AWS TechFest 2025: 风险模型的转变、流程设计的转型、生成式 AI 从实验走向实施的三大关键要素、评估生成式 AI 用例的适配度
  • 【Blender】二次元人物制作【二】:五官的制作
  • MinIO集群部署详细步骤(高性能的分布式对象存储系统)
  • 带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
  • 使用 Spring AI Alibaba Graph 实现工作流
  • 【Debug日志 | DDP 下 BatchNorm 统计失真】
  • linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)
  • 综合文化信息管理系统|基于java和小程序的综合文化信息管理系统设计与实现(源码+数据库+文档)
  • 20250911_10.1.11.46车辆定位aidata-01_Apache Doris分布式数据库全量备份(本地+异地)Python脚本
  • DenseNet网络
  • 2025胶水分装机服务商技术解析:聚焦高精度、智能化应用