久しぶりにapacheの設定をしていて、そういやPOODLEもあったし、今新規でapache設定するにはどんな設定がいいか整理してみた。ただ基本的にはPOODLE対策を追加しただけ。
お決まりですが、この設定をしたからって必ずセキュアはわけではありません。基本的にバージョン隠蔽などの攻撃者に提供する情報を減らすことがメインです。アップデートは速やかに実施しましょう。
環境はCentOS 7でやってますが、Red Hatは同じ設定で行けますし、他のディストリ(debian,ubuntu,etc.)でも設定ファイルの場所が違うくらいでやることは一緒です。
まずはお決まりの設定
apacheの情報隠蔽系
1 2 3 |
ServerTokens Prod ServerSignature Off TraceEnable Off |
3行目は情報隠蔽とは違いますが、まとめて設定しておけば良いと思います。
インデックス表示をやめる
index.htmlとかのファイルがない場合、ディレクトリ内の一覧表示してしまう設定を無効にします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<Directory "/var/www/html"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.4/mod/core.html#options # for more information. # #Options Indexes FollowSymLinks Options FollowSymLinks |
Options の Indexesを消します。昔は-Indexesとかでマイナス付けてた気がするけど、最近怒られた気がするので消します。
welcomeページを非表示にする
ここはCentOS(Red Hat)だけかも。ドキュメントルートに、index.htmlを置いてないと、Welcomeページを表示してくれるが、Welcomeページから、使っているOSとかバレそうなんで無効化。
/etc/httpd/conf.d/welcome.conf を全部コメントアウトします。
1 2 3 4 5 6 7 8 9 10 11 |
$ head /etc/httpd/conf.d/welcome.conf #### #### This configuration file enables the default "Welcome" page if there #### is no default index page present for the root URL. To disable the #### Welcome page, comment out all the lines below. #### #### NOTE: if this file is removed, it will be restored on upgrades. #### ###<LocationMatch "^/+$"> ### Options -Indexes ### ErrorDocument 403 /.noindex.html |
autoindex.confを無効にする
CentOS7(Red Hat 7)からだと思う。よく調べて無いけどとりあえず無効にする。
/etc/httpd/conf.d/autoindex.conf を全部コメントアウトします。
1 2 3 4 5 6 7 8 9 10 11 |
$ head /etc/httpd/conf.d/autoindex.conf #### #### Directives controlling the display of server-generated directory listings. #### #### Required modules: mod_authz_core, mod_authz_host, #### mod_autoindex, mod_alias #### #### To see the listing of a directory, the Options directive for the #### directory must include "Indexes", and the directory must not contain #### a file matching those listed in the DirectoryIndex directive. #### |
phpのバージョン表示を無効にする
1 2 3 |
$ grep expose_php /etc/php.ini ;expose_php = On expose_php = Off |
expose_php をOffにします。
POODLE対策で、SSLv3を無効にする
1 2 |
$ grep SSLProtocol /etc/httpd/conf.d/ssl.conf SSLProtocol all -SSLv2 -SSLv3 |
-SSLv3を追加してます。
userdirとかもあったけど、デフォルトで無効になってるっぽいし、最近userdir使う人もいないだろうし。
とりあえず思い付くのはこんなところ。抜けがあるかも。
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)