web-dev-qa-db-ja.com

apt(apt-get、aptitude)が機能(更新、アップグレード、検索、インストール)できるように、どのINPUTルールをiptablesに追加する必要がありますか?

ソフトウェアの更新とインストールにaptitudeを使用する必要がありますが、失敗します。それは言います...

0% [Connecting to archive.ubuntu.com]

...そして停止します。 CTRL-Cと入力して移動する必要があります。 Ubuntu Server 10.04 LTS(Lucid Lynx)を使用しています。

これは、私のiptablesルールが原因で発生しています。 iptablesをデフォルトに復元すると(ルールを削除し、ポリシーをACCEPTに設定して)、aptitude期待どおりに動作します。もうエラーはありません。

しかし、ちょっと、私はiptablesルールを使用したい...知っておく必要があるのは、作成するために正確にオープンにしておく必要があるものapt動作しますか?

私のルールは非常に単純です。 OUTPUTポリシーはACCEPTです。 FORWARDポリシーはACCEPTです。そして、出力と転送のルールはありません。 INPUTポリシーはDROPです。したがって、問題はINPUTチェーンにあります! FTP、SSH、HTTPなどのサービスを実行するために必要な特定のTCPポートを開くための11のINPUTルールがあります。ICMP(ping)を受け入れる追加ルールと、すべてを受け入れるその他のルールlocalhost入力。これがすべてです:

iptables -F
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp --dport 1008 -j ACCEPT
iptables -A INPUT -p tcp --dport 2812 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -P INPUT DROP

aptitudeを機能させるために、多くのルールを試しました。もちろん、単純なiptables -P INPUT ACCEPTで機能しますが、すべてを受け入れたくありません。私は適性がその仕事をするために必要なものだけを開きたいです。

INPUTチェーンが問題であることは私には奇妙に聞こえます...しかし、そうです。

別の問題は、iptablesログにアクセスできないことです...使用しているカーネルにバグがあることを発見したところです( https://serverfault.com/questions/159818/iptables-logging- not-working )...だから、ログの内容を聞かないでください。

ありがとうございました!

3
J. Bruni

HTTP要求を他のサーバーに送信するときは、TCPを使用しています。最初に、SYNパケットがランダムな上位ポートから他のサーバーに送信され、次にACK応答を受信します。最後に、SYN/ACKをサーバーに送信すると、サーバーは要求されたドキュメント(複数のパケット)で応答します。ルールではACKパケットの受信が許可されていないため、接続を確立できません。次のようなルールを追加します。

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

Iptablesログを無料で入手することはできません。ルールは次のようになります。

# if no rule matched, the input should be dropped
-P INPUT DROP

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# etc

# the limit prevents your logs from being flooded if there are a lot packets being captured
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied" --log-level debug

コマンドの前にiptablesを省略していることに注意してください。ルールの適用に失敗した場合にロックアウトされないように、iptables-restore(またはテストにはiptables-apply)を使用することをお勧めします。コマンドに渡されるファイルは次のようになります。

*FILTER
# your rules here, for example:
-P INPUT DROP
-P INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT

COMMIT行の後の改行は必須です。

デフォルトでは、エントリは/var/log/kern.logに移動します。カーネルとiptablesのメッセージを区別したい場合はよくないので、次を含む/etc/rsyslog.d/iptables.confにrsyslogのフィルターを作成します。

:msg,contains,"iptables denied" /var/log/iptables.log
& ~

これにより、iptablesエラーがフィルタリングされ、/var/log/iptables.logに送信されます。

6
Lekensteyn

Ubuntu 18では、ループバックを許可するまで(-i lo ACCEPTを使用して)apt更新は機能しませんでした。だから、私の「安全なルール」リストは

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT
0
user10635