2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

これは何?

セキュリティに関連するnginxの設定ミスをまとめました。
GitHub Repository


脆弱な設定とその対処方

GitHub Repository
サンプルリポジトリを作成したのでこれをベースに説明します。

cd vulnerable_server_settings
docker compose up

ディレクトリリスティング

http://localhost:8080/list/にアクセスするとディレクトリリスティングされているのがわかります。これにより,攻撃者はディレクトリ配下にあるファイルすべてのパスがわかってしまうため,万が一ユーザに公開する予定のないファイルが公開されている場合にアクセスされやすくなってしまいます。
(ディレクトリリスティングが無効な場合パスがわからない限りは当該ファイルを閲覧されない)

directory_listing.png

How to fix

nginx.confの以下の部分を削除します。

nginx.conf
# FIXME: ディレクトリリスティング
autoindex on;
autoindex_exact_size off; # ファイルサイズを簡易表示
autoindex_localtime on;   # ファイルのタイムスタンプをローカルタイムで表示

エラー画面からnginxのバージョンがわかる

http://localhost:8080/hogeにアクセスするとversion情報が見えます。version情報がわかることで攻撃者はそのバージョンに対応した脆弱性を探しやすくなります。

How to fix

nginx.confに設定を追加します。

nginx.conf
server_tokens off; # エラーページ,レスポンスのServerヘッダにnginxのバージョンを表示しない

レスポンスヘッダからバージョン情報がわかる

ブラウザの開発者機能やcurl等でレスポンスを見るとServer: openresty/1.21.4.1が確認できます。

curl -v http://localhost:8080 2>&1 | grep '< '

< HTTP/1.1 200 OK
< Server: openresty/1.21.4.1
< Date: Sat, 21 Dec 2024 10:22:30 GMT
< Content-Type: text/html
< Content-Length: 601
< Last-Modified: Sat, 21 Dec 2024 10:14:57 GMT
< Connection: keep-alive
< ETag: "67669521-259"
< Accept-Ranges: bytes

How to fix

nginx.confに設定を追加します。

nginx.conf
server_tokens off; # FIXME: エラーページ,レスポンスのServerヘッダにnginxのバージョンを表示しない

robots.txtからパス構成がわかる。 (参考)

http://localhost:8080/robots.txtにアクセスすることで管理者ページadmin.htmlのパスが存在することがわかります。これにより,攻撃者にヒントを与える可能性があります。

robots.png

How to fix

Google検索セントラル

公開したくないファイルパスはrobots.txtの代わりに以下の設定をすることでクローラーからのアクセスを拒否できます。

  • 代替策1: htmlにmeta情報を追加する
<meta name="robots" content="noindex"> <!--robots.txtの代わり-->
  • 代替策2: レスポンスにX-Robots-Tag: noindexを追加する
location = /admin.html {
    add_header X-Robots-Tag "noindex";
}
# check
curl -v http://localhost:8080/admin.html 2>&1 | grep '< '
< HTTP/1.1 200 OK
< Server: openresty/1.21.4.1
< Date: Sat, 21 Dec 2024 11:02:34 GMT
< Content-Type: text/html
< Content-Length: 93
< Last-Modified: Sat, 21 Dec 2024 10:52:36 GMT
< Connection: keep-alive
< ETag: "67669df4-5d"
< X-Robots-Tag: noindex
< Accept-Ranges: bytes
2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?