Security

如何僅使用 IPTables 允許 SSH 和 SMTP?

  • April 28, 2018

我已經設置了一個樹莓派來定期向我發送電子郵件。由於它 24/7 全天候連接到網際網路,因此我需要正確設置 IPTables。

我想允許傳入 SSH 並允許電子郵件通過 SMTP 在埠 587 上發送出去。我想出了這個 IPTables 腳本,對嗎?如果不是,你能告訴我為什麼。謝謝。

sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP

sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

sudo iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 587 -j ACCEPT

像這樣的 iptables 規則可以正常工作

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:156]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -i lo -j ACCEPT 
-A INPUT  -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT  -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT 
-A INPUT -j REJECT --reject-with icmp-host-prohibited 
-A FORWARD -j REJECT --reject-with icmp-host-prohibited 
COMMIT

第一個規則 DROP 預設所有傳入連接 第二個 DROP 預設所有轉發 第三個 ACCEPT 輸出,為什麼要接受?恕我直言,打開輸出連接不是太不安全,關閉它會使防火牆配置有點困難。

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

接受狀態為 RELATED 和已建立狀態的連接

剩下的很簡單

   -A INPUT  -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
   -A INPUT  -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT 
   -A INPUT -j REJECT --reject-with icmp-host-prohibited 
   -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
   COMMIT

接受 22 tcp,接受 587 tcp 並禁止所有其他連接,您可以保存在文件中然後執行

iptables-restore < firewall.file

並與nmap -sS您的主機檢查

引用自:https://unix.stackexchange.com/questions/205072