• 利用iptables做网络转发


    常见的网络拓扑图结构如下:

    但是内网服务器偶尔有上网需求,比如yum工具,wget文件。而我们又不能让重要业务直接暴露在公网上。

    好用的安全策略有:三层交换机、路由器做nat映射,防火墙做安全策略。

    由于种种原因接触不到上层网络设备,采用临时iptables代理方案:

    一、在内网服务器设置网关为web服务器ip地址

    二、在web服务器设置iptables转发

    iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -o ens161 -j MASQUERADE
    

    或者

    iptables -t nat -A POSTROUTING -i ens192 -o ens161 -j MASQUERADE
    

    或者修改iptables文件,加到nat表中,不要加到filter表中

    *nat
    -A POSTROUTING -s 172.16.1.0/24 -o ens161 -j MASQUERADE
    COMMIT

    精简版iptables配置文件,其他端口自行添加

    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT DROP [0:0]
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH -j DROP
    -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    #公司,XXXXX替换成ssh端口
    -A INPUT -p tcp -m multiport --dport 22,XXXXX -j ACCEPT
    
    
    -A OUTPUT -p tcp -m multiport --dports 80,443,21,XXXXX,22 -j ACCEPT
    -A OUTPUT -p udp -m multiport --dports 123,53,161 -j ACCEPT
    -A OUTPUT -p icmp -j ACCEPT
    -A OUTPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    COMMIT
    #由于部分内网服务器没有公网ip,采用nat代理
    *nat
    -A POSTROUTING -s 172.16.1.0/24 -o ens192 -j MASQUERADE
    COMMIT
    

      

     题外话,内容详解

    iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport  80  -j DNAT --to-destination 192.168.66.10
    解释这条规则如下:
    
    在防火墙的nat表当中的PRETROUTING链上添加(-A)一条规则,规则是一个请求进来时(-i INPUT),请求我eth1(即目标地址是200.200.200.10)的,而且访问请求的端口是80的,那么我做的动作(-j)是将他的目标地址修改(DNAT)为192.168.66.10
    
    iptables -t nat -A PREROUTING -i eth1 -d 200.200.200.10 -p tcp --dport  80  -j DNAT --to-destination 192.168.66.10:8000
    如果客户访问的是正常的apache服务,那么到达我内网服务器时实际访问的是一个叫8000的端口的东东。
    
  • 相关阅读:
    Fusion access
    组网架构
    DHCP中继
    Vxlan配置
    redis多实例
    ansible实现redis角色
    ansible如何ssh免密链接(基于key验证)
    MySQL主从复制
    MySQL范例
    Ubuntu2004安装
  • 原文地址:https://www.cnblogs.com/guoyabin/p/12074759.html
Copyright © 2020-2023  润新知