Ubuntu iptablesはwgetをブロックしません

Ubuntu iptablesはwgetをブロックしません

私が間違っていることを理解するのを手伝ってください。iptablesUbuntu 14.04で。

iptables -F
ip6tables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

# allows the outgoing traffic of established connections, necessary if the OUTPUT policy is not set to ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -j DROP

iptables-nvL

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
10574   17M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    2    88 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
  260 14124 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
10317  623K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0

上記では、sshを除くすべてをブロックしてみました。だから私はwgetが何もダウンロードできないと予想しましたが、うまくいきますが、apt-get updateは(予想どおり)動作しません。すべて(受信/送信)をブロックする方法を説明してください。または、この設定が問題ない場合、wgetがまだ機能するのはなぜですか?

編集:また、2行を1行に変更しようとしましたが、役に立ちませんでした。

iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

結果:wgetは機能しますが、apt-getアップデートは機能しません。誰かが理由を明確にすることができますか?ありがとうございます。

答え1

ルールと要件をブロックごとに見てみましょう。基本的なポリシーがあるため、DROP最終ルールは必要ありません。 (それでも悪い考えではありません。)

SSHを除くすべてをブロックしてみました。だからwget何もダウンロードできないと予想していましたが、apt-get update(予想どおり)動作することもできないかもしれません。

ルールを入力してください:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

つまり、発信接続に関連するすべてのトラフィックが許可されます。 tcp/22 (たとえば ) へのインバウンドsshも許可されます。他のすべては捨てなければなりません。これには出てきて要請するのに邪魔になるものはありませんのでご参考wgetくださいapt-get update

出力ルール:

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -j DROP

これは、以前に許可されたインバウンド接続に関連するすべてのトラフィックが許可されることを意味します。宛先 tcp/22 (たとえば tcp/22 ssh) へのすべてのアウトバウンドも許可されます。結局、他のものはすべて捨てなければなりません。

観察結果:

アウトバウンドセクションのいかなるアイテムもあなたまたは要求wgetapt-get update許可しません。したがってwget、機能している場合に使用しているサンプルコマンドを提供してください。 (たとえば、対応する各プロトコルのプロキシを定義するなど、set | grep _proxy1つ以上の定義を表示できます。)http_proxy


しかし、推奨されるアプローチiptablesは、すべてのループバックトラフィックを許可することです。次の2つのコマンドを使用してこれを実行できます。

iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT

関連情報