apacheのバージョンとOSを隠す

環境

  • ubuntu16.04
  • apache 2.4.18

問題点

サーバーのOSとバージョンがNotFoundページに表示されている

これの何が問題かというと例えばapacheのバージョンにOSを操作できるレベルのセキュリティ脆弱性が発見された際にその脆弱性を使ってサーバーを攻撃されるかもしれない。

それを防ぐために上記の環境のバージョンでは以下の設定を行った。

$vim /etc/apache2/conf-available/security.conf
-ServerTokens OS
+ServerTokens Prod

-ServerSignature On
+ServerSignature Off

するとこうなる。これでOS、apacheバージョンともにわからなくなるので多少セキュリティ的にマシになったことだろう。

WordPressをインストールした後に真っ先に行ったこと

内容に関しては掲題のとおり。
WordPressをインストールして真っ先にinstall系のファイルを消した。
理由はこれを悪用して不正なアクセスによりサイトを改ざんされるのを防ぐため。

$ sudo rm wp-admin/install.php wp-admin/install-helper.php

また、/wp-adminへのアクセス制限もかけた。
ただしawsで構築しelbを挟んでる関係で通常の書き方ではリモートIPを取ることが出来ない。
そのため例として下記のようにenvを介して制限をかけた

SetEnvIf X-Forwarded-For "^000\.000\.000\.000$" allowed_access
<Location "/wp-admin">
order deny,allow
deny from all
allow from env=allowed_access
</Location>

ただしこの方法、一つ問題があって悪意ある攻撃者がX-Forwarded-Forに我が家のIPを入れて送ってくると管理画面が表示できる。
が、そもそも我が家のIPを知る方法がないだろうから問題ないと思われる。
企業が公開しているサービスなんかだと企業のIPで試行して攻撃できると思うので過信は禁物。