私は(mod_pagespeedキャッシュエントリを参照して)、これまで聞いたことのない完全にランダムなドメインがWebサイトに解決されていることを発見しました。
このドメインにアクセスすると、ウェブサイトが読み込まれます。そのドメインのDNSは私のサーバーのIPを指しています。
今私のvhost設定には*:80があります。これは私が間違っているところだと思います。
これをすぐにexample.com:80に変更しました。example.comは私のドメインです。これは、サーバーがポート80での要求ではなく、私のドメイン名の要求にのみ応答して実行することを意味すると仮定します。
私の元のvhost設定。
<VirtualHost *:80>
DocumentRoot "/var/www/example.com"
<Directory "/var/www/example.com">
Order allow,deny
Allow from all
Allowoverride all
</Directory>
</VirtualHost>
私が試した設定。
Listen 80
ServerName example.com
<VirtualHost example.com:80>
DocumentRoot "/var/www/example.com"
<Directory "/var/www/example.com">
Order allow,deny
Allow from all
Allowoverride all
</Directory>
</VirtualHost>
新しい構成でApacheを再起動しようとすると、次のエラーが発生しました。
* Restarting web server Apache2 [Fri Mar 28 08:55:47.821904 2014] [core:error] [pid 5555] (EAI 2)Name or service not known: AH00549: Failed to resolve server name for 152.155.254.241 (check DNS) -- or specify an explicit ServerName
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
注:上記のエラーで152で始まるIPはわずかに編集されていますが、元のIPアドレスはサーバーのIPアドレスではありませんでした。
誰もがこの問題についてアドバイスを提供できますか?無邪気に私のウェブサイトに解決されているドメイン(実際にはいくつかあります)は、専用サーバーの以前のユーザーだけですか?そのDNSはまだそれを指しているだけですか? Apache仮想ホストの構成の問題を解決するにはどうすればよいですか。その他のアドバイスは大歓迎です。
ありがとう。
もちろん、他のドメインがホストをポイントしていることに害はありませんが、サーバーの負荷が増加することは当然です。それらをブロックする場合は、新しい仮想ホストを設定します。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
# example.com configuration
</VirtualHost>
<VirtualHost *:80>
ServerName baddomain.com
Deny from all
</VirtualHost>
の代わりに Deny from all
使用できますRedirect permanent /error.html
カスタムエラーメッセージを表示します。
ブロックするドメインごとに2番目のVirtualHostを繰り返すか、それらが多数ある場合は、最初にそれをデフォルトのVirtualHostにして、ドメインに例外を作成します。
NameVirtualHost *:80
<VirtualHost *:80>
# default VirtualHost
Deny from all
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
# example.com config
</VirtualHost>
エラーメッセージについては、Apacheが起動したときにホスト名example.comを解決できなかったか、ServerName
ディレクティブを見つけられなかったようです。なぜだかわかりません。 2番目のエラーは、ポート80がホストですでに使用されていることを示しています。 Apacheの以前のインスタンスをすべてシャットダウンしましたか?
「このウェブサイトのこの別の名前はどこから来たのか」については、誰でも、自分が管理するドメインの下に任意の名前で好きなAレコードを付けることができます。 whois
を使用して少し調べれば、問題のDNS名を含むセカンドレベルドメインを誰が登録したかがわかります。
Apacheは、最初に定義する最初のドメインの一種として機能します。
Myowndomain.comに必要なコンテンツと他のすべてのドメインのいくつかの動作(おそらく、優先ドメインの対応するページにリダイレクトする)を提供する場合は、最初に「キャッチオール」ドメインを定義し、トラフィックを適切に処理します(実際のドメイン)、その後、後続のVirtualHostsで実際のドメインなどを定義します。
ここであなたの最善の策は、ランダムなドメインがあなたのウェブサイトを指すのを本当に避けたいなら、おそらくAndrew Schulmanが答え、BeowulfNode42がコメントしたとおりです:
デフォルトの仮想ホストを提供します。ここにはいくつかのオプションがありますが、後でトラブルシューティングが面倒になる可能性があるため、わかりやすくするために、単純なエラーページを表示することはお勧めしません。
したがって、vhostの設定をそのままにしますですが、実際のWebサイト用に新しいvhostを作成し、ディレクトリを入れ替えて続行します。
最近サーバーを引き継ぐことについてあなたが言ったことを踏まえて、(ドメインが明らかにあなたのものではない場合を除いて)これが自動更新を削除する必要がある残りの忘れ物ではないこと、またはそうでないことを確認することを検討しますまだ完成していないか、放棄されたプロジェクトの一部。
@Andrew Schulmanの2番目のソリューションのように、常にデフォルトのVirtualHostを最初に置く必要があります。
そうすることで、構成にCustomLogとErrorLogを使用して、サイトにないすべてのリクエストを異なるログファイルに保存できます。AWStatsまたは別のプログラムを使用して統計を作成している場合は、ログにそれを残したくないです。
また、多くの(ほとんどの)攻撃は、ホスト名ではなくIPで行われます。繰り返しますが、これにより、実際のサイトのログがクリーンに保たれ、すべての拒否で直接拒否されます。