linux – 如何使用iptables删除美国境外的所有子网

前端之家收集整理的这篇文章主要介绍了linux – 如何使用iptables删除美国境外的所有子网前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想阻止美国以外的所有子网.我制作了一个包含所有美国子网的脚本.除了我的清单,我想禁止删除所有内容.有人能给我一个例子,告诉我如何开始拒绝一切吗?

这是-L的输出

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp state NEW
DROP       icmp --  anywhere             anywhere

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

这些都是规则

iptables --F
iptables --policy INPUT DROP
iptables --policy FORWARD DROP
iptables --policy OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT -p icmp -j DROP

为了清楚起见,使用这些规则,我仍然可以在没有子网列表的情况下连接到端口21.我想阻止所有子网,只打开美国境内的子网.

解决方法

如果数据包匹配’接受’,则立即接受.如果它与DROP匹配则立即丢弃.

听起来您只希望美国的主机能够连接到ftp.有几种方法可以实现这一目标.

制定许多像这样的复杂规则.

iptables -P INPUT DROP
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT --src 1.2.3.4/24 -p tcp -i eth0 --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT --src 4.5.6.7/12 -p tcp -i eth0 --dport 21 -m state --state NEW -j ACCEPT
iptables -A INPUT --src 8.9.1.2/31 -p tcp -i eth0 --dport 21 -m state --state NEW -j ACCEPT

创建一个新的链,将所有流量发送到链,对所有美国子网使用RETURN,并在链中使用最终规则DROP其他所有内容.这应该是更好的方法,因为将进行较少的条件检查.

iptables -P INPUT DROP
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -N USNETS
iptables -A USNETS -s 1.2.3.4/24 -j RETURN
iptables -A USNETS -s 4.5.6.7/12 -j RETURN
iptables -A USNETS -s 8.9.1.2/31 -j RETURN
iptables -A USNETS -j DROP # drop everything that isnt in USNETS
iptables -A INPUT -j USNETS # send everything to USNETS
# PERMIT traffic that
iptables -A INPUT -p tcp -i eth0 --dport 21 -m state --state NEW -j ACCEPT

通过使用单独的更改,您甚至可以在USNETS链中添加/删除内容,而无需在分配新地址空间时重置整个防火墙.我认真地质疑这个想法是否值得付出努力.外面的人都可以进入,他们只会使用代理.

你甚至可以反过来做,并在链中做所有的端口/服务.

iptables -P INPUT DROP
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -N SRVCS
iptables -A SRVCS -p tcp -i eth0 --dport 21 -m state --state NEW -j RETURN
iptables -A SRVCS -j DROP # drop everything that isnt in allowed SRVCS
iptables -A INPUT -j SRVCS # send everything to SRVCS
# PERMIT traffic that has been returned from SRVCS
iptables -A INPUT --src 1.2.3.4/24 -j ACCEPT
iptables -A INPUT --src 4.5.6.7/12 -j ACCEPT
iptables -A INPUT --src 8.9.1.2/31 -j ACCEPT

猜你在找的Linux相关文章