Apache 2.4でmod rewriteを使う

提供: FreeBSD入門
移動: 案内検索
スポンサーリンク

Apache 2.4でmod_rewrite(mod rewrite)を有効にする方法を説明します。mod_rewriteが動かない、というときにも見てください。

読み方

mod_rewrite
もっど りらいと, もどりらいと

概要

Apache 2.4で mod_rewriteを有効にする方法です。

エラー

Apacheの設定が足りないと下記のエラーがでます。 OptionsでFollowSymLinksとSymLinksIfOwnerMatchを設定します。

[Sat Mar 08 23:14:59.722373 2014] [rewrite:error] [pid 16364] [client
192.168.60.1:63091] AH00670: Options FollowSymLinks and SymLinksIfOwnerMatch
are both off, so the RewriteRule directive is also forbidden due to its similar
ability to circumvent directory restrictions :
/home/foo/public_html/security/OpenSSL, referer:
http://localhost/security/index.php?title=nmap

設定

/usr/local/etc/apache24/httpd.conf で mod_rewrite を有効にします。

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Options で SymLink の設定を追加します。

<Directory /home/foo/public_html/>
        Require all granted
        DirectoryIndex index.php index.html index.htm
        AllowOverride All
        Options Indexes FollowSymLinks SymLinksIfOwnerMatch
</Directory>

使い方

Apacheを再起動をして、設定を反映します。

sudo apachectl restart

セキュリティ対策としての使用例

これが本当に意味があるのか、、、ということはあまり考えないでください。

ほんのり XSS 対策っぽい

<script が URI, クエリストリングにある場合に、400を返します。

RewriteEngine on
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC]
RewriteRule .* / [F,L,R=400]

ほんのり ディレクトリトラバーサル 対策っぽい

../.. が URI, クエリストリングにある場合に、400を返します。

RewriteEngine on
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC]
RewriteRule .* / [F,L,R=400]

セキュリティ対策っぽいまとめ

RewriteEngine on
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \<script [NC,OR]
RewriteCond %{REQUEST_URI}?%{QUERY_STRING} \.\./\.\. [NC]
RewriteRule .* / [F,L,R=400]

関連項目





スポンサーリンク