許可されたIPアドレスを除くすべてのトラフィックをブロックします。

許可されたIPアドレスを除くすべてのトラフィックをブロックします。

ホワイトリストのIPアドレスを除いて、ファイアウォールからの着信および発信接続をすべてブロックする必要があります。現在、仮想マシンでUbuntuを使用しています。私はこのコマンドを試しましたこれsite: しかし、このサイトに接続できません。 Googleですが、pingは動作します。 Linuxの使用経験がなく、他のサイトも機能しません。

iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

ベストアンサー1

iptables最初のゲームに基づいています。あなたの例を分析してみましょう。

iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

最初の行は、IPアドレスからこれらのルールが適用されるコンピュータへのすべてのトラフィックがiptables許可されることを示します。172.217.23.206文字通り、すべてのトラフィックはすべてのトラフィック。したがって、ソースが一致する限り、プロトコル、ポート、オプションなどは重要ではありません172.217.23.206

2行目はコンピュータからのすべてのトラフィックを許可します172.217.23.206。繰り返しますが、プロトコル、ポートなどが何であるかは重要ではありません。172.217.23.206ターゲットが一致する限り許可されます。

3行目がiptables教えてくれます減らす最初の 2 つのルールに一致しないすべての着信トラフィック、4 行目と最後の行は、次のことをiptables示します。減らす上記の3行と一致しないすべての発信トラフィック。


トラフィックがいくつかのウェブサイトにしか移動できないようなシナリオを構築したいとします。あなたが作成したルールセットはこの状況には適用されません。

  • お使いのコンピュータは、google.comがどのような問題を解決するのかわかりません。通常、コンピュータは172.217.23.206DNSサーバーまたはローカルエントリを照会して/etc/hostsこの情報を取得できます。
  • iptablesこの場合、接続を追跡して応答を許可するのに十分スマートであるため、着信トラフィックを許可する理由はありません。このプロセスをステートフルと呼びます。
  • ただウェブサイトを得るためにあらゆる種類のトラフィックを許可する172.217.23.206ことは意味がありません。
  • ICMPトラフィック(含むping)は特別な種類のトラフィックです。具体的にブロックする必要があります。

このルールセットは、次の状況に適しています。

iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

このルールセットを使用すると、コンピュータはポート53 / udpを使用してDNSサーバーにクエリできます。次に、unix.stackexchange.com、ポート80(http)、および443(https)へのTCPトラフィックを許可します。接続を追跡し、他のすべてのトラフィックを破棄します。

で一致するエントリを構成する限り、DNSクエリを許可するルールを削除できます/etc/resolv.conf

おすすめ記事