需要帮助来弄清楚 iptables 规则

需要帮助来弄清楚 iptables 规则

我有这个 iptable 规则列表

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  127.0.0.1            0.0.0.0/0           tcp dpt:3306
acctboth   all  --  0.0.0.0/0            0.0.0.0/0
VZ_INPUT   all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
ACCEPT     tcp  -- 94.101.25.40      0.0.0.0/0           state NEW tcp dpt:3306

Chain FORWARD (policy DROP)
target     prot opt source               destination
VZ_FORWARD  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy DROP)
target     prot opt source               destination
acctboth   all  --  0.0.0.0/0            0.0.0.0/0
VZ_OUTPUT  all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     tcp  --  94.101.25.40      0.0.0.0/0           state NEW tcp dpt:3306

我只希望 localhost 和我的 ip 访问 tcp 3306。我可以删除上面显示的所有其他规则吗?我不知道是否应该保留其中任何一个

答案1

acctboth 目标可能是 bandmin 自动放置在那里的。如果您删除它,它可能会重新出现。您可以使用“chkconfig bandmin off”禁用 bandmin,但它实际上除了计数数据包之外什么也不做。

VZ_INPUT 看起来像一个我不熟悉的防火墙包。

除此之外,你似乎有三个条目接受全部端口 3306 的流量,并且只允许来自我认为是您的 IP 的新连接。

我建议您删除 INPUT 上的最后 4 条规则并替换如下:

iptables -A INPUT -p tcp --dport 3306 -s 94.101.25.40 -j ACCEPT
iptables -A INPUT -p tcp -i l0 --dport 3306 -j ACCEPT

拥有 DROP 的 OUTPUT 策略有点棘手,并且可能会弄乱很多东西,所以如果我是你,我会将其更改为 ACCEPT:

iptables -p OUTPUT ACCEPT

如果你坚持保持现状,你只会让新的SQL 连接中断,因此删除规则并添加:

iptables -A OUTPUT -p tcp -s 94.101.25.40 --sport 3306 -j ACCEPT
iptables -A OUTPUT -p tcp -i l0 -sport 3306 -j ACCEPT

这假设 94.101.25.40 是机器自己的 IP 地址之一,而不是某个远程 IP。

您如何访问您的服务器?除非您的其他链中有它,否则我甚至看不到允许 SSH 流量进入的规则。您真的应该发布完整的 iptables -L 输出。您仍然可以访问您的机器的唯一原因可能是因为其他链中的规则。

如果您再次发帖,请使用 iptables -L -v。这会添加一些有用的额外信息,例如规则在哪个接口上运行。

相关内容