18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お名前.comが勝手にWebサーバのセキュリティ診断してくれたので、解決してみた。

Last updated at Posted at 2025-02-23

勝手な事やってくれたなぁ、お名前.com

スクリーンショット 2025-02-23 112523.png

お名前.comからドメイン等を購入すると、怒濤のごとく「ドメイン買いませんか?」メールが大量に送られてくる、曰く付きのサイトなのですが、
自分が使用しているドメインが元々お名前.comなので、そのサービスの一環なのか、新サービスのPRが目的なのか、勝手にセキュリティ診断を行い、一方的に診断結果が送られてきました。

診断結果はD判定でした。
まぁ、ちょっと時間的にも余裕が出来たので、こいつの対処をやってみたいと思います。

nginxのバージョンが古くてサポート切れしている。

スクリーンショット 2025-02-23 093249.png

そもそもOSのバージョンがubuntu 22.04なので、LTSのサポート期間中なのに最新のnginxが古いのはどうなのか、と思いますが。
結局はOSをubuntu 24.04にアップグレードし、さらにリポジトリなどを弄って、nginx 1.24にバージョンアップしました。

それでも、nginx 1.24は現在サポート切れているようです。。。

HTTPヘッダにHSTSが無い。

スクリーンショット 2025-02-23 105431.png

よくわからんけど、これが無いとサイトにアクセスした人が悪意あるサイトに誘導されてしまうらしい。

対策はnginxの設定ファイルに以下を追加すれば良い。

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

設定例

server {
    listen 443 ssl;
    server_name diet.taki-lab.site;

    ssl_certificate /etc/letsencrypt/live/diet.taki-lab.site/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/diet.taki-lab.site/privkey.pem;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}

X-Frame-Optionsが無い

スクリーンショット 2025-02-23 105632.png

これを設定しないと、悪意あるサイトのiframeの中に、自分のサイトが埋め込まれてしまうらしい
対策はnginxの設定ファイルに以下を追加すれば良い。

add_header X-Frame-Options "DENY" always;

X-Content-Type-Options が無い

スクリーンショット 2025-02-23 105941.png

これが無いと、テキストファイルや画像ファイルを、謝ってスクリプトとして実行可能になってしまうらしい。

対策はnginxの設定ファイルに以下を追加すれば良い。

add_header X-Content-Type-Options "nosniff" always;

Content-Security-Policy(CSP)が無い

スクリーンショット 2025-02-23 110138.png

これが無いと、XSS(クロスサイトスクリプティング)やクリックジャッキング攻撃のリスクがあるらしい。

対策はnginxの設定ファイルに以下を追加すれば良い。

add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; object-src 'none'; frame-ancestors 'none'; base-uri 'self'; form-action 'self';" always;

ChatGPT曰く、これらの設定には、

  • default-src 'self' → すべてのリソースは自サイト (self) からのみ許可
  • script-src 'self' → JavaScript の読み込みを自サイトのみに限定
  • style-src 'self' → CSSも自サイトのもののみ許可
  • img-src 'self' → 画像も自サイトのもののみ許可
  • font-src 'self' → フォントも自サイトのもののみ許可
  • object-src 'none' → FlashやJavaアプレットの読み込みを禁止
  • frame-ancestors 'none' → iframe で埋め込まれないようにする(クリックジャッキング対策)
  • base-uri 'self' → タグの悪用を防ぐ
  • form-action 'self' → フォーム送信を自サイトのみに制限

という意味があるらしい。

これを入力したら、wordpressのブログサイトの表示がおかしくなった。
消したら元に戻ったので、現在消したままの状態にしている

nginxのバージョンが見えてしまう

スクリーンショット 2025-02-23 110320.png

nginxのバージョンが見えてしまうと、どんな脆弱性を突くことが可能かが分かってしまうので、バージョンが分からないようにする方がセキュリティ的に良いらしい。

対策はnginxの設定ファイルに以下を追加すれば良い。

http {
    server_tokens off;
}

最終的にこうなった。

スクリーンショット 2025-02-24 084953.png

これまでは「Webが動けばいいや」みたいに考えていた(7年間)けど、
Web関連の仕事を通してきて、少しセキュリティについても知識を身につけないと、と考えていて、
今回の一連の作業を通じて色々学ぶ機会が合って、結果的に良かったかなと思います。

18
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?