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

企业级防火墙与NAT网关配置

在这里插入图片描述

实训背景

某公司需部署一台Linux网关服务器,要求实现以下功能:

  1. 基础防火墙:仅允许SSH(22)、HTTP(80)、HTTPS(443)入站,拒绝其他所有流量。
  2. 共享上网(NAT):允许内网(192.168.10.0/24)通过该网关访问互联网。
  3. 端口转发(DNAT):将公网IP的TCP 8080端口映射到内网Web服务器(192.168.10.100:80)。
  4. 支持FTP服务:内网FTP服务器(192.168.10.200:21)需允许被动模式数据传输。

环境准备

硬件/软件要求
  • 三台虚拟机(VirtualBox/VMware):
    1. 网关服务器:双网卡(eth0: NAT模式模拟公网,eth1: 内部网络 192.168.10.1)
    2. 内部服务器:单网卡(内部网络 192.168.10.100,部署Apache)
    3. 外部客户端:单网卡(NAT模式模拟公网)
  • 操作系统:Ubuntu 22.04/CentOS 8
  • 工具iptables, iproute2, curl, ftp-client
网络拓扑
外部互联网 (eth0:NAT)  
    ↓  
网关服务器 (eth1:192.168.10.1)  
    ↓  
内部网络 (192.168.10.0/24)  
    ├── Web服务器 (192.168.10.100:80)  
    └── FTP服务器 (192.168.10.200:21)  

实训步骤


任务1:基础防火墙配置

目标:保护网关服务器,仅开放必要端口。

  1. 清空规则并设置默认策略

    iptables -F  
    iptables -X  
    iptables -P INPUT DROP  
    iptables -P FORWARD DROP  
    iptables -P OUTPUT ACCEPT  
    
  2. 允许本地回环接口

    iptables -A INPUT -i lo -j ACCEPT  
    iptables -A OUTPUT -o lo -j ACCEPT  
    
  3. 允许已建立的连接和关联流量

    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  
    
  4. 开放SSH、HTTP、HTTPS

    iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT  
    iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT  
    iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT  
    

验证

  • 从外部客户端执行 nmap -p 22,80,443 网关公网IP,应显示开放端口。
  • 尝试连接其他端口(如telnet 网关公网IP 3306),应被拒绝。

任务2:配置NAT(共享上网)

目标:允许内网通过网关访问互联网。

  1. 启用IP转发

    echo 1 > /proc/sys/net/ipv4/ip_forward  
    # 永久生效(编辑/etc/sysctl.conf)  
    sysctl -w net.ipv4.ip_forward=1  
    
  2. 配置SNAT(源地址转换)

    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE  
    
  3. 允许内网流量转发

    iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT  
    iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT  
    

验证

  • 在内网服务器执行 ping 8.8.8.8,应能连通。
  • 在内网服务器执行 curl ifconfig.me,返回的IP应为网关的公网IP。

任务3:配置端口转发(DNAT)

目标:将公网IP的8080端口映射到内网Web服务器的80端口。

  1. 添加DNAT规则

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.10.100:80  
    
  2. 允许转发到内网Web服务器

    iptables -A FORWARD -d 192.168.10.100 -p tcp --dport 80 -j ACCEPT  
    

验证

  • 在外部客户端执行 curl http://网关公网IP:8080,应返回内网Web服务器的页面。

任务4:支持FTP被动模式

目标:允许外部访问内网FTP服务器(被动模式)。

  1. 加载FTP连接跟踪模块

    modprobe nf_conntrack_ftp  
    # 永久生效  
    echo "nf_conntrack_ftp" >> /etc/modules-load.d/modules.conf  
    
  2. 允许FTP控制连接

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT --to-destination 192.168.10.200:21  
    iptables -A FORWARD -d 192.168.10.200 -p tcp --dport 21 -j ACCEPT  
    
  3. 放行动态数据端口(RELATED状态)

    iptables -A FORWARD -m conntrack --ctstate RELATED -j ACCEPT  
    

验证

  • 在外部客户端使用FTP客户端连接 ftp://网关公网IP:21,上传/下载文件应成功。

实训总结

通过本案例,您已掌握以下技能:

  1. 使用iptables配置基础防火墙规则,保护服务器关键端口。
  2. 通过SNAT实现内网共享上网。
  3. 利用DNAT实现公网端口到内网服务的映射。
  4. 结合连接跟踪(Conntrack)支持FTP等动态端口协议。

知识要点

要点说明
Netfilter钩子PREROUTING(DNAT)、POSTROUTING(SNAT)、INPUT/OUTPUT/FORWARD链
四表优先级raw → mangle → nat → filter
有状态过滤-m conntrack --ctstate 匹配连接状态
NAT类型SNAT(源地址转换)、DNAT(目标地址转换)
动态协议支持加载nf_conntrack_ftp模块,利用RELATED状态

下一步扩展:尝试配置ICMP限速、日志记录(LOG动作)或DDoS防护(如限制并发连接数)。

相关文章:

  • SCimilarity:对人类相似细胞进行可扩展搜索的细胞图谱基础模型
  • 软件反模式全解手册(26种核心模式详解)
  • 【AI提示词】决策专家
  • reid查找余弦相似度计算修正(二)
  • python-64-前后端分离之图书管理系统的Vue前端
  • 面向对象(OOP)
  • 跨浏览器 Tab 通信工具-emit/on 风格 API(仿 mitt)
  • 【Unity】Unity Transform缩放控制教程:实现3D模型缩放交互,支持按钮/鼠标/手势操作
  • Python 快速搭建一个小型的小行星轨道预测模型 Demo
  • 裴蜀定理扩展欧几里得定理
  • ssh密钥连接远程服务器并用scp传输文件
  • QAI AppBuilder 快速上手(8): 图像修复应用实例2
  • 网络带宽测速工具选择指南iperf3 nttcp tcpburn jperf使用详解
  • Vue 3 的<Teleport>功能与用法
  • 代码随想录算法训练营第十二天
  • 【ES系列】Elasticsearch从入门到精通保姆级教程 | 启篇
  • Java9新特性
  • Python 并发编程指南:协程 vs 多线程及其他模型比较
  • SpringBoot集成RedisSearch
  • 深度学习|注意力机制