如何正确配置 iptables

如何正确配置 iptables

我是 linux 的新手。我刚刚在iptables这是我在一个安全网站上找到的(我不太了解每个规则是如何工作的)。命令如下:

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

$IPTABLES -A OUTPUT -m state --state INVALID -j DROP

$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

$IPTABLES -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A OUTPUT -f -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A OUTPUT -p tcp --tcp-flags ALL NONE -j DROP  

$IPTABLES -A INPUT -m state --state INVALID -j DROP

$IPTABLES -A INPUT -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -f -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP  

实施这些后,我无法浏览任何内容。如何纠正可能的错误?

答案1

您必须了解,第三行默认禁用了来自、到和通过您的计算机的所有流量(-P DROP)。

如果您要使用这些默认规则的 IP 表,则后续规则将允许流量。这是使用ACCEPT某处的规则完成的。

例如,您可以允许传入端口 80 数据包:

-A INPUT -p tcp --dport 80 -j ACCEPT

另一方面,您可以采用另一种方式,也就是说,默认允许所有流量-P ACCEPT,然后写入您需要禁止的特定内容。

我能为你做的不多,但建议你阅读 iptables 手册以了解其工作原理。你不会通过 iptables 获得现成的安全性。

答案2

当你刚开始时,我建议你放弃现在拥有的一切,从一些能给你带来最大胜利的基础开始。

例如:

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Drop a persistent nuisance
-A INPUT -s 89.163.185.170 -j DROP

# Accept established connections and loopback traffic

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT

# Allow ssh from our IP address 1.2.3.4 (but also use hosts.allow and hosts.deny files)
-A INPUT -s 1.2.3.4 -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT

# Allow web traffic on port 80 and 443 from everywhere
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# Block everything else
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

您可以轻松地在此基础上进行构建。

答案3

您忘记允许ESTABLISHED连接。请尝试在脚本末尾添加此内容

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

此外,我会首先开始限制传入的数据。您的输出规则仅阻止发送特殊的“手工制作”数据包。当您担心恶意软件时,这并没有多大帮助,因为这些恶意软件通常只是使用普通的“正确”数据包连接到远程服务器。

相关内容