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
常规操作
这里就是我配置那些没有安全组机器的规则
- 允许访问某些端口
# 单个端口
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
- 允许与已建立的或相关的网络连接相关的数据包通过
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
- 允许内网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
- 允许特定网口流量
iptables -A INPUT -i lo -j ACCEPT
# 纯内网互联网卡
iptables -A INPUT -i eth1 -j ACCEPT
- 允许私有网络流量
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
- 允许udp
iptables -A INPUT -p udp -j ACCEPT
- 丢弃所有
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的机器。