-1

试图理解 iptables(我在 VPS 上安装了 cPanel)并玩了一点游戏,所以这听起来像是一个愚蠢的问题,我在做什么。

我已将默认 iptables 配置复制到备份(以防万一恢复出错)并创建自定义 iptables 配置(/etc/sysconfig/iptables),如果我 DROP INPUT/OUTPUT/FORWARDING(所以一切)。

然后,除了电子邮件(:25)之外,我设法获得了我想要访问所需工作的所有端口(传入/传出 HTTP/s/SSH/FTP 等)。我正在使用 Roundcube 并使用以下配置发送电子邮件,但无法在我的服务器上发送/接收电子邮件(如果我恢复默认配置(接受所有内容)则有效,因此除了端口:25 之外,我还需要允许访问的任何其他端口吗?在知道所有内容都已丢弃的情况下发送邮件?)。我在我的自定义(/etc/sysconfig/iptables)中使用下面的电子邮件配置:-

-A INPUT -p tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp --dport 25 -j ACCEPT
-A INPUT -p tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
4

1 回答 1

0

IP 是双向通信,当您收到邮件时,数据包会在您的服务器上的 25 端口上发送,您将在任意分配的端口号(在连接建立期间确定)发送响应数据包。

因此,iptables 的常见规则是:无论连接状态如何,都接受来自指定端口(邮件为 25)输入的数据包 -A INPUT -p tcp --dport 25 -j ACCEPT

无论目标端口如何,都接受为所有已建立的连接发回数据包。-A OUTPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

现在,如果您想向服务器发送邮件,您必须允许数据包发送到端口 25 并允许传入所有已建立的连接。

-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -p tcp --dport 25 -j ACCEPT

另一个想法是记录应该丢弃的数据包。将日志行 a 放在所有链规则的末尾。

iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT PACKET DROPPED"
iptables -A OUTPUT -p tcp -j LOG --log-prefix "OUTPUT PACKET DROPPED"

这样,您将在 /var/log/message(或使用 dmesg)中看到到达链规则末端并被丢弃的每个数据包的一行。

于 2013-04-18T10:05:41.750 回答