ソフトウェアの更新とインストールに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 )...だから、ログの内容を聞かないでください。
ありがとうございました!
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
に送信されます。
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