web-dev-qa-db-ja.com

すべてをドロップするiptablesによるapt-getを許可する[Ubuntu]

INPUT、OUTPUT、およびFORWARDルールブックのすべてをデフォルトで削除するようにiptablesを設定しています。しかし、私はポート80を介した接続を許可する(HTTP)およびポート53でのすべての着信TCP/UDP要求(DNS)する必要があります。次の設定があります。

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http  
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      udp  --  anywhere          anywhere           udp dpt:http
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http  
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain

ただし、Sudo apt-get install Apache2を実行しようとすると、パッケージが見つかりますが、実際にパッケージをダウンロードするとハングします。私の調査によると、apt-getはほとんどの場合、HTTPポートとDNSポートのみで機能します。 何か足りないのですか?参照しようとしました この投稿 しかし役に立ちませんでした。

Err:1 http://us.archive.ubuntu.com/ubuntu xenial/main AMD64 libapr1 AMD64 1.5.2-3
  Temporary failure resolving ‘us.archive.ubuntu.com’
Err:2 http://us.archive.ubuntu.com/ubuntu xenial/main AMD64 libaprutil1 AMD64 1.5.4-1build1
  Temporary failure resolving ‘us.archive.ubuntu.com’
0% [Connecting to us.archive.ubuntu.com]

システム情報:
ディストリビューターID:bunt
説明:buntu 16.04.3 LTS
リリース:16.04
コード名:xenial


更新:ソリューションが機能しない

以下のtomaszの答えをもう一度たどりましたが、うまくいきませんでした。 apt-getは、上記の例(Apache2など)のようにダウンロードが止まっています(変更なし)。これが私が試した私の新しいiptablesです:

Chain INPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      all  --  anywhere          anywhere           state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target      prot opt source            destination 

Chain OUTPUT (policy DROP)
target      prot opt source            destination 
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:http state NEW,RELATED,ESTABLISHED
ACCEPT      tcp  --  anywhere          anywhere           tcp dpt:domain state NEW,RELATED,ESTABLISHED
ACCEPT      udp  --  anywhere          anywhere           udp dpt:domain state NEW,RELATED,ESTABLISHED

OUTPUTルールブックのバージョンを試しましたありとなし状態情報は成功しませんでした。

2
Code Doggo

53と80でINPUTを開く必要がある理由はわかりませんが、DNSとHTTPの応答を受信するための場合は、それは間違いです。これは次の行で行われます。

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

この答え と同じように、あなたが言及した投稿に。)

2
user147505

私はテストシステムでこれの詳細を掘り下げました。

次のルールセットを使用してiptablesを適切に構成し、apt-getを適切にアウトバウンドすることができました。

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53 state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53 state NEW,RELATED,ESTABLISHED

これは、上記で述べた最新の構成を反映しています。 apt-getを正常に動作させ、問題なくDNSクエリを実行することができます。

ただし、システムでホスト名をIPアドレスに解決する際に問題が発生し、解決エラーが発生することに注意することが重要です。

/etc/resolv.confが適切に構成されており、少なくとも次のようなものが含まれていることを確認してください。

nameserver 8.8.8.8
nameserver 8.8.4.4

/etc/resolv.confをこのように設定すると、同じiptablesルールセットを使用することで、問題なく、インターネットに接続しているシステムとその内部で問題なく連絡を取り、適切なDNS解決を得ることができますネットワークの内部からインターネットに出て行くことができる私自身のLANサブネット。

/etc/resolv.confが正しく設定されておらず、設定が間違っていると、システムがDNSを正しく設定できなくなっているように思われます。

1
Thomas Ward