Linux

UFW/Iptables:允許響應 http(s) 請求但阻止其他一切

  • March 26, 2020

我想阻止從我的伺服器傳出的所有內容,同時仍允許響應傳入的 http/https 請求。

一些例子:

使用者使用他的瀏覽器( https://myserver.example.org/test.html )呼叫我的伺服器防火牆應該允許響應並且伺服器應該將 test.html 傳遞給使用者。

我伺服器上的應用程序嘗試連接到https://badguy.example.org/test.html 防火牆應該拒絕這個傳出請求,因為 badguy.example.org 沒有從我的伺服器請求任何內容。

我不希望它基於 IP 或 IP 範圍。只要從 ip 聯繫到伺服器,它就可以響應。如果之前沒有通過這個ip聯繫過他,就不允許在那裡發送任何東西。

這可能使用 ufw 或 iptables 嗎?我怎麼做?

關鍵是 OUTPUT 鏈中的標誌*--state ESTABLISHED*,它只允許 ESTABLISHED 連接而不是新連接。

(可選)允許通過 SSH 登錄以執行管理任務,

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

允許 HTTP 流量

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

允許 HTTPS 流量

iptables -A INPUT -i eth0 -p tcp --dport 443-m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 443-m state --state ESTABLISHED -j ACCEPT

阻止來自您的伺服器的傳出 http/https 請求。

iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j DROP
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j DROP

引用自:https://serverfault.com/questions/1008546