短い答え
安全ですか /etc/hosts
を使用するには 「null」アドレスをブロックする Web サイトとしてファイルしますか?
答えは いいえ です。
リクエストが実際に「null」にならない以外の理由がない場合。それらはまだアクティブなリクエストです。そして、OP が示すように、要求は正当なインターネット ホストに対するものであるため、要求を localhost
にリダイレクトするこの種のショートカット メソッド 開発環境でのネットワーク コードのテストを妨げる可能性があります。
おそらく、特定のインターネット ホストとの間のトラフィックをブロックするより良い方法は、iptables
を利用することです。 これは Linux カーネルのファイアウォールへのインターフェースです。 iptables
は、ほとんどの GNU/Linux システムのデフォルトのネットワーク ルール テーブルです。一部のディストリビューションでは ufw
を使用しています iptables
のフロントエンドとして .
iptables
を使用する場合 、これは DROP
する簡単なスクリプトです ~/blocking.txt
というプレーン テキスト ファイルに 1 行に 1 つのアドレスまたはホスト名が含まれる IP アドレスまたはホスト名のリストのすべての着信および発信パケット
## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
echo "Blocking all traffic to and from $i"
/sbin/iptables -I INPUT -s $i -j DROP
/sbin/iptables -I OUTPUT -d $i -j REJECT
done
サンプル ~/blocking.txt
websiteiwanttoblock.com
anotherone.com
ip.add.of.net/mask
localhost
を配置しないでください このファイル内の IP アドレス。
長い答え
localhost
へのインターネット ホストの再割り当て中 /etc/hosts
で file はブロックするための一般的なショートカット テクニックです。 不要なインターネット ホストを保護するため、この方法には深刻なセキュリティ上の欠点があります。
着信リクエスト
特定のユーザー リクエストによって意図的に開始されたものではない着信リクエスト。最も一般的な例は、Web ページ上の広告です。入ってくるパケットをたどってみましょう...
まず、wireshark
を起動します .次に、最大のインターネット広告会社を /etc/hosts
に配置します。 次の行を含むファイル:
127.0.0.1 google.com
次に、ブラウザですべての広告ブロッカーを無効にし、youtube
に移動します 任意のビデオをランダムに再生します。
Google の IP アドレス空間を広く含むパケットをフィルタリングすると:
ip.addr==172.217.0.0/16
Google からまだパケットを受信しています。
これはどういう意味ですか?
これは、悪意のあるサーバーがマルウェアを挿入し、ローカルホストにまだ到着して送信されているパケットを介してコンピューティング プラットフォームを攻撃できる可能性があることを意味します。 /etc/hosts
の使用 ファイアウォール ルールを介してパケットをドロップまたは拒否するのではなく、不十分なセキュリティ対策です。 ブロックしません 悪意のある可能性のあるホストからの着信パケットも、トラブルシューティングのための効果的なフィードバックも提供しません。
送信リクエスト
localhost
に送信される発信リクエスト ファイアウォールルールによって拒否またはドロップされるのではなく、カーネルによって引き続き処理されます。 /etc/hosts
のときに発生する望ましくないアクションがいくつかあります。 ファイアウォールではなく使用されます:
-
送信パケットが localhost に到達すると、余分な処理が発生します。たとえば、ウェブサーバーがホスト上で実行されている場合、localhost に送信されたパケットはウェブサーバーによって処理される可能性があります。
-
/etc/hosts
の場合、発信リクエストからのフィードバックが混乱する可能性があります 特定のドメインが取り込まれています。
iptables は多くのルールを処理できます
一部によると:
ServerFault:iptables がサポートできるルールの数
32 ビット マシンで考えられる理論上の制限は、3,800 万ルールです。ただし、参照された投稿に記載されているように、 iptables
ルール リストが拡張され、必要なカーネル メモリも拡張されます。
<ブロック引用>
[...] シンプルな OS レベルの Web サイト ブロック手法を探しているときに、Linux のホスト ファイルを使用する解決策にたどり着きました [...]
明確にするために、/etc/hosts
ホスト名を IP アドレスにマップするだけです。 127.0.0.1
のエントリ サーバーへのアクセスをブロックするのではなく、コンピュータがその特定の名前をローカルで 127.0.0.1
に解決するようにするだけです。 .あなたとサーバーは制限なしでパケットを交換している可能性があります.
127.0.0.1
をよく使う場合 Web 開発の目的で、これは危険ですか?少なくとも、私が現在取り組んでいる Web 開発プロジェクトを台無しにする可能性はありますか?
いいえ、127.0.0.1
に解決します あなたをさらなる危険にさらすことはありません。これは、Web サイトの名前が 127.0.0.1
を含む任意の IP に解決される可能性があるためです。 (DNS サーバーがそれをブロックしない限り)。 evilpage.example
の場合 127.0.0.1
に解決したかった 、それぞれの DNS A
を指定するだけで済みます /etc/hosts
に頼る必要はありません。 . (参照:DNS レコードが 127.0.0.1 を指していても安全ですか?)
127.0.0.1
で何かを実行していることに注意してください DNS リバインディング攻撃に対して脆弱になる可能性があります。
ウェブサーバーがローカル マシンのポート 80 または 443 (127.0.0.1
) で実行されている場合を除きます。 )、それはあなたの Web プロジェクトに影響を与えるべきではありません。もしそうなら、それは迷惑かもしれません。 http://example.com/api/
にリクエストを送信した場合 、その後 http://127.0.0.1/api/
にリクエストを送信することになります . /api/
というリソースがある場合 、その後、リクエストを受け取り、アプリに干渉することになります.しかし、@Arminusが言及したことを強調したい最大のポイントは、 /etc/hosts/
ファイルは、IP アドレスをホスト名にマッピングするためのものです。特定のホストをブロックする場合は、UFW などのファイアウォールをインストールするか、デフォルトの Linux ファイアウォールである iptables を使用することをお勧めします。開始に役立つリンクを次に示します:
UFW:https://www.linux.com/learn/introduction-uncomplicited-firewall-ufw
iptables:https://www.howtogeek.com/177621/the-beginners-guide-to-iptables-the-linux-firewall/