Security
允許 apt-get 下載程序的正確 iptables 規則是什麼?
當我輸入類似的內容時
sudo apt-get install firefox
,一切正常,直到它問我:After this operation, 77 MB of additional disk space will be used. Do you want to continue [Y/n]? Y
然後顯示錯誤消息:
Failed to fetch: <URL>
我的 iptables 規則如下:
-P INPUT DROP -P OUTPUT DROP -P FORWARD DROP -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
我應該添加什麼以允許 apt-get 下載更新?謝謝
apt-get 幾乎總是通過 HTTP 下載,但也可能使用 FTP,所以簡短的回答可能是允許出站 HTTP 連接……當然還有 DNS。
您現在的配置不允許所有傳出網路流量(
ESTABLISHED
您在OUTPUT
鏈上的規則無效,因為永遠不會建立會話)。您是否需要只允許apt -get 更新,同時仍不允許其他所有內容?iptables
可能是該工作的錯誤工具,因為它不會真正解釋 URL 並有選擇地允許 HTTP 傳輸。您希望為這項工作使用 HTTP 代理伺服器。您可以使用更簡單的設置來允許 apt-get 下載,但請注意,這也允許所有其他傳出 DNS 和 HTTP 連接,這可能不是您想要的。
iptables -F OUTPUT # remove your existing OUTPUT rule which becomes redundant iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
如果您的 APT 源在 80 以外的埠上包含 HTTPS 或 FTP 源或 HTTP 源,則您也必須添加這些埠。
接下來,您必須允許返回流量。您可以使用允許任何已建立連接的單個規則來做到這一點:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
(使用連接跟踪時允許所有入站建立的連接是安全的,因為只有您允許的連接才會進入 ESTABLISHED 狀態。)