NAT用户如何防邻居

本文最后更新于 296 天前, 如有失效请评论区留言.

本文只能说防止邻居扫描或者爆破等行为,而不是阻止邻居违法行为,关键也没法阻止哈。所以本文主要讲讲如何配置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进行监听。

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

Sponsor

Like this article? $1 reward

Comments