多租户网络隔离与安全组策略

实训背景

某云计算平台需为不同租户提供独立的网络环境,具体要求如下:

  1. 网络隔离:租户A(VLAN 100)与租户B(VLAN 200)的流量完全隔离。
  2. 安全组策略
    • 租户A:允许HTTP(80)、HTTPS(443)、SSH(22)入站,禁止ICMP。
    • 租户B:允许RDP(3389)、MySQL(3306)入站,限制SSH仅允许特定IP段(192.168.30.0/24)。
  3. 流量监控:记录所有被拒绝的流量,并统计各租户的带宽使用。
  4. ARP防护:防止同一VLAN内的ARP欺骗攻击。

环境准备

硬件/软件要求
  • 四台虚拟机
    1. 网关服务器:三网卡(eth0: 公网IP,eth1.100: VLAN 100,eth1.200: VLAN 200)
    2. 租户A服务器:单网卡(VLAN 100,IP 10.100.1.10)
    3. 租户B服务器:单网卡(VLAN 200,IP 10.200.1.10)
    4. 监控客户端:单网卡(VLAN 100,IP 10.100.1.50)
  • 操作系统:Ubuntu 22.04
  • 工具iptablesvconfig(VLAN配置)、arptablesvnstattcpdump
网络拓扑
公网 (eth0)  
    ↓  
网关服务器  
    ├── VLAN 100 (eth1.100:10.100.1.1) → 租户A服务器 (10.100.1.10)  
    └── VLAN 200 (eth1.200:10.200.1.1) → 租户B服务器 (10.200.1.10)  

实训步骤


任务1:配置VLAN网络隔离

目标:通过VLAN实现租户网络分离。

  1. 创建VLAN接口

    # 安装VLAN工具  
    apt install vlan  
    # 配置VLAN 100  
    vconfig add eth1 100  
    ifconfig eth1.100 10.100.1.1/24 up  
    # 配置VLAN 200  
    vconfig add eth1 200  
    ifconfig eth1.200 10.200.1.1/24 up  
    
  2. 禁止VLAN间路由

    iptables -A FORWARD -i eth1.100 -o eth1.200 -j DROP  
    iptables -A FORWARD -i eth1.200 -o eth1.100 -j DROP  
    

验证

  • 在租户A服务器执行 ping 10.200.1.10,应无法连通。

任务2:定义租户安全组规则

目标:按需求定制入站流量策略。

  1. 租户A规则(VLAN 100)

    # 允许HTTP/HTTPS/SSH  
    iptables -A INPUT -i eth1.100 -p tcp -m multiport --dports 22,80,443 -j ACCEPT  
    # 禁止ICMP  
    iptables -A INPUT -i eth1.100 -p icmp -j DROP  
    
  2. 租户B规则(VLAN 200)

    # 允许RDP/MySQL,限制SSH源IP  
    iptables -A INPUT -i eth1.200 -p tcp --dport 3389 -j ACCEPT  
    iptables -A INPUT -i eth1.200 -p tcp --dport 3306 -j ACCEPT  
    iptables -A INPUT -i eth1.200 -p tcp --dport 22 -s 192.168.30.0/24 -j ACCEPT  
    
  3. 默认拒绝策略

    iptables -P INPUT DROP  
    

验证

  • 从监控客户端访问租户A的80端口应成功,但ping请求被拒绝。
  • 从非192.168.30.0/24网段尝试SSH到租户B应失败。

任务3:流量监控与日志审计

目标:记录被拒绝的流量并统计带宽。

  1. 记录丢弃的流量

    iptables -N LOG_REJECT  
    iptables -A LOG_REJECT -j LOG --log-prefix "[IPTABLES REJECT] " --log-level 4  
    iptables -A LOG_REJECT -j DROP  
    iptables -A INPUT -j LOG_REJECT  
    
  2. 安装带宽统计工具

    apt install vnstat  
    vnstat -u -i eth1.100  
    vnstat -u -i eth1.200  
    

验证

  • 触发拒绝规则后,检查日志:
    tail -f /var/log/kern.log | grep "IPTABLES REJECT"  
    
  • 查看带宽统计:
    vnstat -i eth1.100  
    

任务4:防御ARP欺骗攻击

目标:防止同一VLAN内的ARP缓存投毒。

  1. 安装并配置arptables

    apt install arptables  
    # 仅允许合法ARP响应  
    arptables -A INPUT --source-ip 10.100.1.10 --source-mac xx:xx:xx:xx:xx:xx -j ACCEPT  
    arptables -A INPUT -j DROP  
    
  2. 持久化规则

    arptables-save > /etc/arptables.conf  
    systemctl enable arptables  
    

验证

  • 在攻击机伪造ARP响应,目标服务器应无法被欺骗。

实训总结

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

  1. 使用VLAN和iptables实现多租户网络隔离。
  2. 基于安全组定制精细化入站规则。
  3. 结合日志与监控工具实现流量审计。
  4. 通过arptables防御ARP欺骗攻击。

知识要点

要点 说明
VLAN配置 vconfig创建虚拟接口,隔离广播域
安全组设计 利用multiport模块简化多端口规则
流量监控 vnstat统计带宽,LOG动作记录丢弃流量
ARP防护 arptables过滤非法ARP包
规则持久化 iptables-savearptables-save备份配置

扩展挑战

  1. 使用ebtables增强二层安全防护。
  2. 集成Prometheus+Grafana实现流量可视化。
  3. 编写Shell脚本自动同步安全组规则至多台网关。

你可能感兴趣的:(Linux,系统攻略,网络,安全,linux,iptables,netfilter,网络隔离,安全组策略)