どうしてこれをやったの?
ドメイン移管: 誰かが自分のドメイン名をあるホスティング プロバイダーから別のホスティング プロバイダーに移管することを決定した場合、移管プロセス中に Web サイトにアクセスできるようにするために、ドメイン名を一時的に Web サイトに解決することがあります。
攻撃: 悪意のあるユーザーは、フィッシング、詐欺、またはその他の悪意のある行為を通じて Web サイトのユーザーを攻撃しようとして、管理しているドメイン名を Web サイトに解決する可能性があります。
テスト: ドメイン名解決およびその他の関連設定の正確さをテストするために、ドメイン名を Web サイトに解決する人もいます。
どうやって?
誰かが自分のドメイン名を Web サイトに解決するときは、ドメイン名リゾルバー (DNS) の DNS レコードを変更します。ドメイン名がサーバーの IP アドレスを指すようにするか、Web サイトにリダイレクトする CNAME レコードを指定する必要があります。
どうやって守るのか?
IP フィルタリング: サーバー上で IP フィルタリング ルールを構成し、特定の IP アドレスのみが Web サイトにアクセスできるようにします。このように、サーバーのIPアドレスが分からない限り、たとえドメイン名がサーバーに解決されていても、他人はWebサイトにアクセスすることはできません。
ドメイン名の検証: ホワイトリスト内のドメイン名のみが Web サイトにアクセスできるようにドメイン名検証メカニズムを設定します。認証メカニズムは、アクセス要求の Host ヘッダー フィールドをチェックし、それを事前定義された許可されたドメイン名と照合します。ホワイトリストにないドメインはエラー ページを返すか、別のページにリダイレクトされます。
TLS 証明書検証: HTTPS を使用するように Web サイトを構成し、TLS 証明書検証を有効にします。ドメイン名が Web サイトに解決されても、有効な TLS 証明書が正しく構成されていない場合、ブラウザーは証明書エラーの警告メッセージを表示し、ユーザーに注意を促します。
アクセスの制限: 認証、アクセス制御リスト、またはその他のアクセス制御メカニズムを使用して、認証または許可されたユーザーのみがサイトにアクセスできるようにします。これにより、悪意のあるユーザーがドメイン名をサーバーに解決した場合でも、Web サイトにアクセスするのを防ぐことができます。
デフォルトのサーバー設定: どのドメイン名にも一致しないリクエストを処理するデフォルトのサーバー ブロックを構成します。そうすることで、誰かが不明なドメイン名をサーバーに解決した場合に、不正アクセスを防ぐためにそれらのリクエストを処理する方法を選択できます。
構成例
# IP过滤
location / {
allow 192.168.1.100; # 允许特定IP地址访问
deny all; # 拒绝其他IP地址访问
}
# 域名验证
server {
if ($host !~* ^(yourdomain\.com)$) {
return 403; # 拒绝访问
}
# 其他配置项...
}
# TLS证书验证
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
# 其他配置项...
}
# 限制访问
location / {
auth_basic "Restricted";
auth_basic_user_file /path/to/your/.htpasswd;
# 其他配置项...
}
# 默认服务器设置
server {
listen 80 default_server;
return 403; # 拒绝未知域名的访问
}