ホワイトリストの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.206
DNSサーバーまたはローカルエントリを照会して/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
。