-100p

-10p

+10p

+100p

Ubuntu環境、Apacheのセキュリティ設定

Ubuntu環境、Apacheの鉄板セキュリティ設定。
security.confの上書き。

参考記事
Apacheでは概ねこれをやっておけば間違いないというセキュリティ設定がある。
ネットに転がってる記事だけだと、Ubuntu環境ではもうひと手間必要だったので一応メモ。

security.confを上書き

Ubuntu環境でaptを使いApacheをインストールした場合、他Linux環境のようなhttpdファイルやディレクトリが存在しない。
Ubuntuでのセキュリティの設定は
 /etc/apache2/conf-available/security.conf 
で設定する。
下はsecurity.confの初期状態。
# Changing the following options will not really affect the security of the
# server, but might make attacks slightly more difficult in some cases.

#
# ServerTokens
# This directive configures what you return as the Server HTTP response
# Header. The default is 'Full' which sends information about the OS-Type
# and compiled in modules.
# Set to one of:  Full | OS | Minimal | Minor | Major | Prod
# where Full conveys the most information, and Prod the least.
#ServerTokens Minimal

ServerTokens OS
#ServerTokens Full


#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#ServerSignature Off

ServerSignature On

#
# Allow TRACE method
#
# Set to "extended" to also reflect the request body (only for testing and
# diagnostic purposes).
#
# Set to one of:  On | Off | extended

TraceEnable Off
#TraceEnable On
ServerTokens, ServerSignature, TraceEnableを修正していく。

ServerTokens付近の設定

ServerTokens関係を全て#でコメントアウトした上で、下のコード群を書き込む。
#ServerTokens Minimal
#ServerTokens OS
#ServerTokens Full


# バージョン情報の隠蔽

ServerTokens Prod
Header always unset "X-Powered-By"
# httpoxy 対策

RequestHeader unset Proxy
# クリックジャッキング対策

Header always set X-Frame-Options "SAMEORIGIN"
# XSS対策

Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"

# DoS 攻撃対策

LimitRequestBody 10485760
LimitRequestFields 50
# slowloris 対策

RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

<Directory 
 [アクセス制限したいディレクトリのpath] 
>
    
# .htaccess の有効化

    AllowOverride All
    
# ファイル一覧出力の禁止

    Options -Indexes
    
# HTTPメソッドの制限

    Require method GET POST
</Directory>
 [アクセス制限したいディレクトリのpath] 
は、Apacheのみでサイトを運営してるなら多分
 /var/www/html 
辺りになると思う。
自分の場合 リバースプロキシ でTomcatと連携してるので、TomcatのwebappsへのPathを指定している。

備考として、
 Header always set X-Frame-Options "SAMEORIGIN" 
を設定すると外部からiframe設定でリンクを貼れなくなるらしい。
自分のサイトでは全く問題ないので記述しておいた。

ServerSignatureの変更

ServerSignatureはOnをOffに変えるだけ。
#エラー画面に表示されるApacheのバージョン情報等を表示しない

ServerSignature Off
#ServerSignature On

TraceEnableの変更

TraceEnableもOnをOffに変えるだけ。
# XST対策

TraceEnable Off
#TraceEnable On

Headerコードを有効化

ServerTokens付近の設定で
 Header 
というコードを多用したが、あれは実はUbuntuの初期状態では使用できない。
変更したsecurity.confを保存し、下のコードでApacheの文法チェックをしてみる。
apache2ctl configtest
すると下のようなエラー文が出る。
Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration

このエラーを回避するには、下のコードを打ち込んでHeaderのコードを有効化する必要がある。
sudo a2enmod headers
この後にApahceをリスタートすればセキュリティ設定はOK。
sudo service apache2 restart
0
0

-100p

-10p

+10p

+100p