サーバが存在しないかのように見せることは可能ですか?リクエストに特定のフレーズが提供されない限り、host-name が解決されないと信じるすべてのリクエストを持つことは可能ですか?サーバーの所有者が隠すことのできない、サーバーの存在を示す何らかの証拠があるのでしょうか?実用的なセキュリティの強化は可能でしょうか?
通常はすべての受信パケットをドロップし、特定のポートシーケンスを指定した一連のパケットを取得/参照して初めてポートを開くようにサーバーを設定することができます(これはポートノックと呼ばれます)。私はこの手法を自分のサーバーで使っている。サーバーはすべての受信パケットをドロップするので、普段はサーバーを見ることができない。ポートノッキングパケットがサーバーに到達すると、サーバーは 'knocking' アドレスからのパケットを受け入れ、他のアドレスからのパケットをドロップし続けるのです。
この方法では、IPスキャンやブルートの試行があまり問題にならないので、セキュリティはより優れています。サーバをハックするには、どのようなサービスが実行されているか、どのようなOSを使用しているかなどを調べるために、偵察する必要があります。攻撃者にこの情報を与えないことで、攻撃者があなたのデバイスを攻撃することを難しくします。この防御方法の弱点は、もし攻撃者が受信するノックパケットを見ることができれば、そのポートも開くことができることです。
サーバは存在しないかのように見せることは可能でしょうか?
どのようなリクエストを指しているのかが明示されていませんが、おそらく HTTP (つまり Web) と HTTP リクエストについて述べているのだと思います。HTTPリクエストの場合、HTTPはTCPの上のアプリケーションプロトコルであるため、このような隠蔽は不可能です。つまり、クライアントはアプリケーションデータ (つまり HTTP リクエスト) を送信する前に、まずサーバからの応答を含む TCP 接続を確立する必要があり、HTTP サーバの存在がリクエストとは無関係に明らかになります。
これは他のプロトコルと異なる場合があります。例えば、DNS(ホスト名からIPアドレスへの解決)は通常、TCPとは逆にコネクションレス型のUDPで処理されます。つまり、ペイロードを含むリクエストは、クライアントが送る最初のパケットとなります。したがって、DNSリクエストが特定のドメインに対するものである場合にのみ返信し、それ以外のリクエストをドロップするUDPを使ったサーバーを作成することができる。このようにして、サーバーは、適切なリクエストが送られた場合に のみ、その存在を明らかにすることができる。同様のことはSIP(telephony over internet)でも可能で、これも通常UDPで行われます。
ホスト名が解決されなかったと思われるリクエストを全て解決させることは可能ですか?
ホスト名からIPアドレスへの解決は、そのIPアドレスのサーバにリクエストを送る前に行われ、通常、サーバ自身はこのDNS解決プロセスには関与していません。つまり、コネクションレス型プロトコルであっても、リクエストが誤っていた場合、クライアントは名前を解決できないという情報を得ることができない。クライアントが得られるのは、ターゲットが応答しないという情報だけで、それは、このIPアドレスにサーバがセットアップされていないとか、サーバがダウンしているとか、ファイアウォールに守られているとか、単に予期しないパケットをドロップしていると解釈できるかもしれない。
サーバーが存在しないように見せることは可能でしょうか?
はい、可能です。サーバーが存在しない場合の ISP の動作に依存します。ISPによっては、パケットが到達しようとするIPが存在しない場合にパケットをドロップするようにルータを設定したり、送信者に拒否パケットメッセージを送り返すものもあります。また、ルーターの中には、攻撃を受けていると判断した場合に動作を変更するアダプティブな動作をするものもある。ISPによっては、プローブパケットがどこから来たかによって差別する場合があります(例えば、悪意のある顧客をよく受け入れる国/ISPから来たパケットは、良いネットワーク習慣を持つ企業よりも敵対的に扱われる場合があります)。
もしあなたが、認識できないパケットをすべて単純にドロップするようにサーバを設定した場合、あなたのISPが通常拒否メッセージを送るなら、それは実際にサーバが存在する証拠になるかもしれません。もし、あなたのISPのルーターが攻撃を受けている間、適応的にその動作を変え、あなたのサーバーがISPの動作についていけなければ、それは実際にサーバーの証拠となるかもしれません。さらに、あなたのISPは独自のバックホールISPを持っているかもしれません、それは彼ら自身の動作のセットを持っているかもしれません。
また、ISPがバックホールで独自に動作している場合もあります。
ホスト名をパブリック DNS システムに登録しないだけです。パブリック DNS システムのホスト名は、意図的に公開記録になっています。パブリックDNSに登録されると、誰でもDNSレコードを照会して、そのホスト名に関連するIPアドレスを調べることができます。ただし、自分のマシンでのみ認識されるホスト名を定義したり(hostsファイルを使用)、独自のプライベートDNSサーバーを実行したりすることは可能です。
サーバーの所有者が隠せないような、サーバーの存在を示す何らかの証拠があるのでしょうか?
一般に公開されているIPアドレスには、所有者の記録があり、whoisツールを使って、あなたのインターネットサービスプロバイダが誰であるかを問い合わせることができます。あなたのISP(あるいは、あなたのISPを攻撃する敵対者)は、彼らのネットワークを通過するすべてのパケットを監視することができ、彼らは、サーバーの証拠として、以前の送信パケットを持たないインバウンドパケットを見ることができます。
実用的なセキュリティの追加はあるのでしょうか?
そもそもセキュリティ対策が不十分な場合、見えないようにすることで、多くの単純なボットや素直でない攻撃者を効果的に追い払うことができるかもしれません。しかし、より巧妙な攻撃者は、不可視化を回避する方法を見つけることができます。強力な認証と暗号化を使用した優れたセキュリティ対策を行っているのであれば、セキュリティの観点からは、見えないということはそれほど重要ではありません。
おそらく、葉っぱを隠すには、木や森の中に隠すのが一番でしょう。一般に知られたサーバーを運営し、サーバーへのトラフィックをすべて暗号化(HTTPSのみ)していれば、外部の人間が表のサイトへのトラフィックと隠されたサイトへのトラフィックを区別することはほとんど不可能である。唯一考慮しなければならないのは、TLS は SNI ヘッダで宛先ホスト名を漏らすということだ。SNIヘッダを偽装するか、フロントサーバーのホスト名を使用する限り、あなたの隠しサーバーは隠されたままであろう。