ApacheサーバーがIPではなくドメインへのリクエストのみを受け入れるようにする


9

CentOSサーバーでApache 2.2.15を実行しています。サーバーのIPアドレスが198.51.100.4であり、ブラウザーhttp://198.51.100.4に書き込んだ場合、それは私のWebサイトに表示されます。

これを防ぎたい。WebサイトにFQDN(http://example.com/など)でのみアクセスできるようにしたい。

IPアドレスにアクセスしたときにWebサイトにアクセスできないようにサーバーを構成するにはどうすればよいですか?



質問は私がリンクした重複と完全には一致しませんが、その質問への答えはこの質問への答えでもあります。
ジェニーD

なぜそうするのか、私は興味があります。リバースDNSは重要です。
njzk2

回答:


7

を使用Alias *して、仮想ホストで許可されているトラフィック以外のトラフィックをキャッチできます。これには、仮想ホストをエイリアスとして最後の位置で使用する必要があります*

そのように定義されたドメインのみが提供されます。

<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>

<VirtualHost *:80>
ServerName another.mywebsite.com
DocumentRoot /var/www/another
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>

私の例では、mywebsite.comとanother.mywebsite.comのみが許可され、他のすべてのドメインまたはIPでトラフィックがキャンセルされます。

トラフィックをキャンセルするには、リダイレクトを使用してから-エラーコードを追加します。たとえば、RewriteRuleを使用して406 Not AcceptableR=406)にリダイレクトします。

ここにリダイレクトコードのリストがあります:https : //fr.wikipedia.org/wiki/Liste_des_codes_HTTP


ありがとう!私はあなたの方法を試してみましたが、うまくいきました。しかし、少し変更しました。新しい仮想ホストを作成し、ServerNameにサーバーのIPアドレス+ RewriteRuleを入力しました:)
antiks

11

「拒否された」エラーなどが発生するだけのデフォルトの仮想ホストを追加できます。その後、ブラウザが他の仮想ホストのいずれServerNameかまたはServerAlias行と一致するURLのホストなしでWebサーバーにアクセスすると、デフォルトの仮想ホストがサービスを提供します。

だからあなたのApache設定では:

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
    ...
</VirtualHost>

<VirtualHost *:80>
    ServerName mywebsite.com
    ...
</VirtualHost>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.