最短的iptables命令只允许ssh访问

在构build新系统时,我不打开networking,直到我configuration了iptables来阻止除端口22(ssh)以外的所有入站stream量。 稍后,我打开端口并configuration允许的地址范围。

什么是最短的iptables命令我可以键入以禁止所有入站通信,除了连接到(给定)单个IP地址的端口22?

# flush rules iptables -F INPUT iptables -P INPUT DROP # allow loopback traffic iptables -A INPUT -s lo -j ACCEPT # allow established connections iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # allow ssh iptables -A INPUT -s 10.15.10.0/24 -p tcp --dport 22 -j ACCEPT 

我在实际的命令不是很好,但我的iptables文件看起来像这样:

#过滤所有以前的规则

*过滤

#环回地址

-Ainput-i lo -j接受

#build立eth +连接的入站规则

-A INPUT -i eth + -m状态 – 状态RELATED,ESTABLISHED -j接受

#允许SSH访问

-A INPUT -i eth + -s XXXX / Y -p tcp –dport 22 -j ACCEPT

#最后显式的规则

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT ACCEPT [0:0]

承诺

iptables -F
iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -j DROP

非常类似于@pQd(不是我投票),但我讨厌DROP政策 – 我认为他们是不好的做法。