web-dev-qa-db-ja.com

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が更新をダウンロードできるようにするには、何を追加すればよいですか?ありがとう

12
anthony01

apt-getはほとんど常にHTTP経由でダウンロードしますが、FTPも使用する可能性があるため、簡単な答えはおそらく発信HTTP接続を許可することです...もちろんDNSも許可します。

現在の設定では、すべての発信ネットワークトラフィックが許可されていません(ESTABLISHEDチェーンにあるOUTPUTルールは、セッションが確立されないため、有効ではありません)。 [〜#〜] only [〜#〜] 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ソースが含まれている場合、それらのポートも追加する必要があります。

次に、戻りトラフィックを許可する必要があります。これは、確立された接続を許可する次の1つのルールで実行できます。

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

(接続追跡を使用している場合は、確立されたすべての受信接続を許可しても安全です。そうでない場合は許可した接続のみがESTABLISHED状態になるためです。)

17
Celada