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

Linux 脚本案例:适用iptables构建不同场景下的防火墙规则

一、iptables 基础概念

1.1 iptables 四表五链

  • 四表

    • filter表:过滤数据包(默认表)
    • nat表:网络地址转换
    • mangle表:修改数据包
    • raw表:连接跟踪
  • 五链

    • INPUT:进入本机的数据包
    • OUTPUT:从本机出去的数据包
    • FORWARD:经过本机转发的数据包
    • PREROUTING:路由前(用于DNAT)
    • POSTROUTING:路由后(用于SNAT)

二、实战案例讲解

案例1:Web服务器防护

# 1. 清空所有规则iptables -F iptables -X iptables -Z# 2. 设置默认策略(拒绝所有,按需开放)iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT# 3. 允许本地回环接口iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT# 4. 允许已建立的连接和相关的连接iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT# 5. 开放SSH服务(限制源IP)iptables -A INPUT -p tcp --dport22-s192.168.1.0/24 -j ACCEPT# 6. 开放Web服务(HTTP/HTTPS)iptables -A INPUT -p tcp --dport80-j ACCEPT iptables -A INPUT -p tcp --dport443-j ACCEPT# 7. 允许ping(ICMP)iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT# 8. 记录被拒绝的数据包(最后一条规则)iptables -A INPUT -j LOG --log-prefix"IPTABLES-DROP: "

案例2:NAT网关服务器

# 1. 开启IP转发echo1>/proc/sys/net/ipv4/ip_forward# 2. 设置SNAT(内网访问外网)# eth0: 公网接口,eth1: 内网接口iptables -t nat -A POSTROUTING -o eth0 -s192.168.1.0/24 -j MASQUERADE# 或使用固定公网IPiptables -t nat -A POSTROUTING -o eth0 -s192.168.1.0/24 -j SNAT --to-source 公网IP# 3. 设置DNAT(外网访问内网服务器)# 将公网IP的80端口映射到内网Web服务器iptables -t nat -A PREROUTING -i eth0 -p tcp --dport80-j DNAT --to-destination192.168.1.100:80# 4. 允许转发流量iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s192.168.1.0/24 -j ACCEPT

案例3:DDoS防护

# 1. 限制同一IP的连接数# 防止CC攻击,限制每个IP最多10个HTTP连接iptables -A INPUT -p tcp --dport80-m connlimit --connlimit-above10-j DROP# 2. 限制连接速率# 限制每个IP每秒最多10个新连接iptables -A INPUT -p tcp --dport80-m limit --limit10/second --limit-burst20-j ACCEPT iptables -A INPUT -p tcp --dport80-j DROP# 3. 阻止异常数据包iptables -A INPUT -p tcp!--syn -m state --state NEW -j DROP# 阻止无效的SYN包iptables -A INPUT -f -j DROP# 阻止分片包iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP# 阻止Xmas扫描iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP# 阻止Null扫描# 4. 屏蔽恶意IPiptables -A INPUT -s 恶意IP -j DROP# 或使用ipset管理黑名单ipset create blacklist hash:ip ipsetaddblacklist 恶意IP iptables -A INPUT -mset--match-set blacklist src -j DROP

案例4:端口转发和负载均衡

# 1. 本地端口转发# 将访问本机8080端口的数据转发到本机80端口iptables -t nat -A PREROUTING -p tcp --dport8080-j REDIRECT --to-port80# 2. 简单负载均衡(轮询)# 将80端口的请求分配到3台后端服务器iptables -t nat -A PREROUTING -p tcp --dport80-m statistic --mode nth --every3--packet0\-j DNAT --to-destination192.168.1.101:80 iptables -t nat -A PREROUTING -p tcp --dport80-m statistic --mode nth --every2--packet0\-j DNAT --to-destination192.168.1.102:80 iptables -t nat -A PREROUTING -p tcp --dport80\-j DNAT --to-destination192.168.1.103:80

案例5:高级应用 - VPN服务器

# OpenVPN服务器配置iptables -t nat -A POSTROUTING -s10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A INPUT -p udp --dport1194-j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

三、实用脚本示例

3.1 防火墙初始化脚本

#!/bin/bash# firewall_init.sh# 定义变量SSH_PORT=22ALLOWED_NETWORKS="192.168.1.0/24 10.0.0.0/8"PUBLIC_INTERFACE="eth0"# 清空规则iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X# 设置默认策略iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT# 基本规则iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT# 开放服务端口fornetworkin$ALLOWED_NETWORKS;doiptables -A INPUT -p tcp --dport$SSH_PORT-s$network-j ACCEPTdoneiptables -A INPUT -p tcp --dport80-j ACCEPT iptables -A INPUT -p tcp --dport443-j ACCEPT# 防止端口扫描iptables -N PORTSCAN iptables -A PORTSCAN -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit1/s -j RETURN iptables -A PORTSCAN -j DROP# 保存规则(根据系统选择)# CentOS/RHEL: service iptables save# Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4

3.2 动态阻止暴力破解

#!/bin/bash# block_ssh_bruteforce.sh# 分析日志,自动屏蔽尝试失败的IPLOG_FILE="/var/log/auth.log"ATTEMPTS=5# 尝试次数BLOCK_TIME=3600# 封锁时间(秒)# 提取失败IP并加入黑名单grep"Failed password"$LOG_FILE|awk'{print $(NF-3)}'|\sort|uniq-c|awk-vlimit=$ATTEMPTS'$1 > limit {print $2}'|\whilereadip;doif!iptables -L INPUT -n|grep-q$ip;theniptables -A INPUT -s$ip-j DROPecho"$(date): Blocked$ipfor$ATTEMPTSfailed attempts">>/var/log/iptables.log# 一小时后自动解封(sleep$BLOCK_TIME&&iptables -D INPUT -s$ip-j DROP)&fidone

四、调试和监控

4.1 查看规则

# 查看所有规则iptables -L -n -v# 查看NAT规则iptables -t nat -L -n -v# 查看规则编号iptables -L --line-numbers# 实时监控iptables日志tail-f /var/log/kern.log|grepiptables

4.2 规则管理

# 插入规则(第2条位置)iptables -I INPUT2-p tcp --dport3306-j ACCEPT# 删除规则(按编号)iptables -D INPUT2# 删除规则(按内容)iptables -D INPUT -p tcp --dport3306-j ACCEPT# 清空计数器iptables -Z

五、最佳实践建议

  1. 先放行后拒绝:规则顺序很重要
  2. 最小权限原则:只开放必要的端口
  3. 使用状态检测-m state --state ESTABLISHED,RELATED
  4. 记录重要事件:使用LOG链记录异常
  5. 定期备份规则iptables-save > iptables.backup
  6. 测试规则:在应用前先测试,避免被锁
  7. 使用ipset管理大量IP:提高性能
  8. 结合fail2ban:动态防护暴力破解

六、常见问题排查

# 1. 检查规则是否生效iptables -L -n -v# 2. 检查连接跟踪cat/proc/net/nf_conntrack# 3. 检查内核参数sysctl -a|grepnet.ipv4# 4. 测试端口telnet IP PORTnc-zv IP PORT# 5. 查看被拒绝的包dmesg|grepiptables
http://www.jsqmd.com/news/356034/

相关文章:

  • 系统思考:业务创新与组织重构
  • 【小程序毕设源码分享】基于springboot+小程序的共享雨伞租赁系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • Costa Coffee 咖啡点单攻略:美团优惠,6.9元起,省钱秘籍大公开! - Top品牌推荐
  • wifi密码pj工具(Aircrack-ng/​WiFiCrackTool​)
  • 700cc 的省钱秘籍:美团,你的省钱“饮”力者! - Top品牌推荐
  • wsl中改了 /etc/resolv.conf,一重启就没了?
  • 【小程序毕设源码分享】基于springboot+小程序的高校二手商品交易平台的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 700cc容量红包,美团“拼好饭”与“半价周末”带你领略超值新春! - Top品牌推荐
  • Grafana Enterprise SCIM漏洞利用工具(CVE-2025-41115)
  • 2026年2月PVD设备厂家最新推荐,镀膜设备全产业链能力与品牌口碑深度解析 - 品牌鉴赏师
  • 【小程序毕设源码分享】基于springboot+小程序的涪陵区特色农产品交易系统小程序的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 有你!我的git有救了
  • 700cc外卖配送费怎么减?美团省钱攻略大揭秘! - Top品牌推荐
  • 在工业视觉检测、设备智能监控等场景中,C#上位机凭借其稳定性强、硬件对接便捷的优势,成为工业控制系统的主流开发语言
  • Windows版Redis本地后台启动 - 详解
  • 聚焦“值类型 vs 引用类型”在高频采集、实时监控、长时间运行中的实际影响
  • 2026年2月磁控溅射镀膜设备厂家最新推荐,镀膜设备环保性与产能数据多维透视 - 品牌鉴赏师
  • CoCo都可全国“薅羊毛”攻略:美团平台多重优惠,省钱秘籍大公开! - Top品牌推荐
  • CoCo都可全国无门槛红包怎么领?解锁美团超值饮品攻略,一杯咖啡仅需6.9元起! - Top品牌推荐
  • Costa Coffee 暖心之选,美团红包大揭秘:多重优惠,省钱攻略一网打尽! - Top品牌推荐
  • 在CUDA中使用汇编语言
  • CoCo都可全国点单攻略:美团“拼好饭”与“半价周末”,一杯饮品省下半杯钱! - Top品牌推荐
  • CoCo都可外卖配送费减免攻略:美团平台超值体验,省钱又省心! - Top品牌推荐
  • 玩转1点点,美团APP薅羊毛攻略:省钱秘籍大公开! - Top品牌推荐
  • stl 右引用
  • CoCo都可新年红包大揭秘:美团平台,高面额红包与超值优惠,让你新年饮品不停歇! - Top品牌推荐
  • 一个普通煤矿工人的一生
  • 为什么 goroutine 比线程轻?
  • 已有安全措施确认(上)
  • 薅羊毛攻略:1点点奶茶怎么喝划算?美团活动揭秘,省钱吃到飞起! - Top品牌推荐