Iptables
iptables + telnet 不阻塞埠
我有一個 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
$ telnet smtp-relay.gmail.com 25 Trying 2a00:1450:4013:c03::1c...
您的系統啟用了 IPv6,並正在使用它連接到遠端伺服器。
您只顯示 IPv4 防火牆的摘錄,所以我猜您沒有正確配置 IPv6 防火牆。