我有一个 Debian 服务器,我想阻止所有传入和传出端口(尤其是所有传出电子邮件端口),除了我专门添加到 iptables 中的那些。我目前的设置正在工作并且似乎足够严格,但是当我启动一个telnet
会话来测试例如端口 25 的 smtp 时,它似乎连接没有问题,即使我没有专门打开端口 25 作为 OUTPUT 端口。我注意到当我用 刷新 iptables 时iptables -F
,连接被阻止,但是 DNS 解析和 http 流量也不起作用。值得一提的是,我也在这台服务器上运行 Docker,这意味着 Docker 维护自己的 iptables 链,我不会在这个问题中具体列出。所有 Docker 规则中都没有端口 25,
我还没有找到一种简单的方法来实际尝试将电子邮件发送到 smtp 端口 25,但我猜想成功建立 telnet 会话也将允许使用相同的连接来发送邮件。
有人能指出我正确的方向吗?
远程登录输出:
$ telnet smtp-relay.gmail.com 25
Trying 2a00:1450:4013:c03::1c...
Connected to smtp-relay.gmail.com.
Escape character is '^]'.
220 smtp-relay.gmail.com ESMTP k6sm844273wms.37 - gsmtp
我当前 iptables 的 INPUT 和 OUTPUT 链:
Chain INPUT (policy DROP)
target prot opt source destination
DROP all -- anywhere anywhere match-set blacklist src
ACCEPT icmp -- 192.168.4.0/24 anywhere icmp echo-request
ACCEPT tcp -- 192.168.4.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere multiport dports http,https state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp echo-reply state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:domain state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp spt:domain state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport sports http,https state RELATED,ESTABLISHED
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere 192.168.4.0/24 icmp echo-reply state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere 192.168.4.0/24 tcp spt:ssh state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere multiport dports http,https