IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    NAT用户如何防邻居

    ysicing (i@ysicing.me)发表于 2024-02-29 14:36:37
    love 0

    本文只能说防止邻居扫描或者爆破等行为,而不是阻止邻居违法行为,关键也没法阻止哈。所以本文主要讲讲如何配置iptables

    前因

    黄鸡有客户从事违法行为被逮到了, 然后群里的用户开始扫描领居都跑了些啥服务,然后就扫到了我的默认nginx ingress backend页面, 类似如下这样

    手搓iptables

    从k8s方面能做的相对比较少,另外NAT机器没法配置安全组,当下只能手搓iptables.

    由于集群主要是IPv4单栈,且NAT机器IPv6的不可猜测(成本相对比较高),这里仅考虑IPv4情况

    禁止邻居访问

    iptables -A INPUT -s 172.20.1.1 -j ACCEPT
    iptables -A INPUT -s 172.20.1.0/24  -j DROP
    

    允许网关的流量,丢弃其他子网的流量,确保IPv4能正常使用。
    查看规则 iptables -L -nv, 不知道有没有用,先这样着吧,反正也没啥影响

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
      29M   21G ts-input   all  --  *      *       0.0.0.0/0            0.0.0.0/0
    45520 3801K ACCEPT     all  --  *      *       172.20.1.1           0.0.0.0/0
     9856 2612K DROP       all  --  *      *       172.20.1.0/24        0.0.0.0/0
    

    常规操作

    这里就是我配置那些没有安全组机器的规则

    1. 允许访问某些端口
    # 单个端口
    iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
    # 多端口
    iptables -A INPUT -p tcp -m multiport --dports 22,53,77,80,443,7946,10250 -j ACCEPT
    
    1. 允许与已建立的或相关的网络连接相关的数据包通过
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    1. 允许内网ping
    iptables -A INPUT -p icmp --icmp-type echo-request -s 10.0.0.0/8 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -s 172.16.0.0/12 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.0.0/16 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -s 100.64.0.0/10 -j ACCEPT
    
    1. 允许特定网口流量
    iptables -A INPUT -i lo -j ACCEPT
    # 纯内网互联网卡
    iptables -A INPUT -i eth1 -j ACCEPT
    
    1. 允许私有网络流量
    iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
    iptables -A INPUT -s 172.16.0.0/12 -j ACCEPT
    iptables -A INPUT -s 192.168.0.0/16 -j ACCEPT
    iptables -A INPUT -s 100.64.0.0/10 -j ACCEPT
    
    1. 允许udp
    iptables -A INPUT -p udp -j ACCEPT
    
    1. 丢弃所有
    iptables -P INPUT DROP
    

    如何暴力清理

    这里仅介绍暴力清理全部哈,通常这三者一起用,按如下顺序开始操作

    # 清空计数 zero
    iptables -Z
    # 清除所有规则,将默认策略设置为接受所有数据包,但是会保留用户自定义的链 flush
    iptables -F
    # 清空自定义的链,不会清除预定义的链 delete
    iptables -Z
    

    如何避免机器重启丢失

    apt-get install iptables-persistent
    dpkg-reconfigure iptables-persistent
    # 更新规则
    iptables-save > /etc/iptables/rules.v4
    

    主要是依托这个守护程序。另外就是经常保持规则到git上,即使丢了也能找回生效。

    其他

    尽量组网,使用组网的ip进行监听。

    其他可以参考的,基于ipset和iptables屏蔽某IP访问某些端口, 更适合独立VPS了,NAT可能不太用的上,尤其是IPv4 NAT的机器。



沪ICP备19023445号-2号
友情链接