目次
- .htaccess の利用
- .htaccess の記述例
.htaccess の記述例
.htaccess の代表的な記述例をご紹介します。
.htaccess の記述方法はインターネットや書籍にてお調べください。
- ■ファイル一覧の表示を拒否する
ホームページを設置したアドレスにファイル名を指定せずにアクセスすると、そのディレクトリにある index.html などのインデックスファイルが表示されますが、index.html などのインデックスファイルを設置していない場合、そのディレクトリ内にあるファイルの一覧を表示してしまいます。
記述例
.htaccess を設置することで403エラーを返し、ファイル一覧の表示を拒否することで、セキュリティを高めることができます。Options -Indexes- ※ ファイル一覧を表示したい場合は、「Options +Indexes」と記述します。
- ■重要なデータファイルへのブラウザからのアクセスを拒否する
アドレスを公開していなくても、ブラウザのアドレス欄に特定のファイルのアドレスを直接入力すると、閲覧できてしまいます。そのファイルにパスワードや顧客データなどの重要なデータが記述されていたら情報が漏えいしてしまいます。
記述例
.htaccess を設置することでデータファイルへのブラウザからのアクセスを拒否することができます。
データファイルによくある'.dat''.log''.csv'といった拡張子のついたファイルへの
ブラウザからのアクセスを拒否する場合<Files ~ "\.(dat|log|csv)$"> deny from all </Files>
- ■特定のドメインからのみアクセスを許可する
特定のドメインを他のドメイン下のディレクトリに設定する場合、特定のドメインのページを他のドメインのURLで表示できてしまいます。
記述例
例えば、home/アカウント名/public_html に独自ドメインのアドレス(http://www.example.com/)を設定しても、KAGOYA Internet Routing のセレクトドメインのアドレス(http://アカウント名.kir.jp/など)で表示することが可能です。
.htaccess を設置することで、他のドメインからのアクセスを拒否することができます。
http://www.example.com/ からのみアクセスを許可する場合SetEnvIf Host "^www\.example\.com$" hos_ok order deny,allow deny from all allow from env=hos_ok
- ■他のドメインのアドレスにリダイレクトする
特定のドメインを他のドメイン下のディレクトリに設定する場合、特定のドメインのページを他のドメインのURLで表示できてしまいます。
記述例
例えば、home/アカウント名/public_html に独自ドメインのアドレス(http://www.example.com/)を設定しても、KAGOYA Internet Routing のセレクトドメインのアドレス(http://アカウント名.kir.jp/など)で表示することが可能です。
.htaccess を設置することで、他のドメインのアドレスにリダイレクトすることができます。
http://abc.kir.jp/ へのアクセスを http://www.example.com/ にリダイレクトする場合RewriteEngine on RewriteCond %{HTTP_HOST} abc\.kir\.jp [NC] RewriteRule .* http://www.example.com%{REQUEST_URI} [L,R=301]
- ■常時SSLを有効にする( https リダイレクト )
SSLを設置しても、通常の http でのアクセスでは、SSLは有効になりません。https でアクセスする必要があります。
記述例
例えば、SSLを有効にしたいアドレス(https://www.example.com/)に対して、SSLが有効にならないアドレス(http://www.example.com/)でも表示できてしまいます。
常時SSLを有効にしたいドメインの割り当てディレクトリに .htaccess を設置することで、SSLが有効にならないアドレスでアクセスがあった場合に、SSLが有効なアドレスでのアクセスに切り替えることができます。
http://www.example.com/ へのアクセスを https://www.example.com/ にリダイレクトする場合# 共用サーバー S12,S22,S32・マネージド専用サーバー 4シリーズ(044,044s,084s,124s,164s)をご利用中の場合 RewriteEngine on RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# それ以外のプランをご利用中の場合 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
サービスプランを確認するには、当社コントロールパネルで、以下の画面を開きます。
◇コントロールパネル > (アカウント名) > 基本情報
- ■常時SSLを有効にする( HSTS 有効化 )
IPAのTLS暗号設定ガイドラインでは、HTTP Strict Transport Security(HSTS)の設定有効化が推奨されています。http でのアクセスを https でのアクセスにリダイレクトするよう設定していても、最初に http でアクセスした時点で攻撃者がユーザーの Cookie を傍受し個人情情報を収集したり、フィッシングサイトへリダイレクトしたりする可能性があり、セキュリティ上の問題が残ります。こうした危険を減らすことができるのが HSTS です。
記述例
ブラウザ側に https でのアクセスを強制するヘッダ情報をキャッシュさせる期間を365日に設定する場合Header add Strict-Transport-Security "max-age=31536000"
■参考URL TLS暗号設定ガイドライン(IPA発行)
https://www.ipa.go.jp/security/vuln/ssl_crypt_config.html
- ■SSL証明書とは異なるホスト名に https でアクセスがあった場合に http に切り替える
IPベースのバーチャルホスト設定をしているサーバーでは、SSLを設置していないホスト名に https でアクセスすると、SSLが設置されている異なるホスト名にアクセスされてしまいます。
記述例
例えば、SSLを設置していないホスト名(www.example.com)に https://www.example.com/ でアクセスしようとすると、SSLが設置されている異なるホスト名(www.first-ssl.com)のコンテンツが表示されてしまいます。
.htaccess をSSLが設置されているホスト名の割り当てディレクトリに設置することで、SSL証明書とは異なるホスト名に https でアクセスがあった場合に、http でのアクセスに切り替えることができます。
SSLが設置されている www.first-ssl.com とは異なるホスト名で https にアクセスがあったら http にリダイレクトさせる場合RewriteEngine on RewriteCond %{HTTP_HOST} !first-ssl\.com$ [NC] RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
- ※ SSLが設置されているホスト名の割り当てディレクトリに .htaccess を設置してください(上記例の場合は、SSLが設置されている www.first-ssl.com の割り当てディレクトリに .htaccess を設置します)。
- ■特定のIPアドレスからのアクセスを拒否する
特定のIPアドレスから過度なアクセスのため、お客様サーバーの転送量やアクセス数が浪費されてしまい、最悪の場合はお客様サーバーが帯域調整や同時接続数制限の対象となり、お客様サイトの表示が遅くなるなどの影響が生じます。
記述例
.htaccess を設置することで、特定のIPアドレスからのアクセスを拒否することができます。
123.456.789.123 からのアクセスを拒否する場合order allow,deny allow from all deny from 123.456.789.123
- ※ 例示した 123.456.789.123 は、実在しないIPアドレスです。IPアドレスは、「.(ドット)」で区切られた 0 ~ 255 の数字4組で表記されます。
- ■特定のIPアドレスからのアクセスのみ許可する
Webサーバーでグループウェアなどを利用して情報共有をする場合、インターネットに接続できる環境であればどこからでもアクセスできてしまうため、情報漏えいのリスクが伴います。
記述例
.htaccess を設置することで、特定のIPアドレスからのアクセスのみ許可することができます。
123.456.789.123 からのアクセスを許可する場合order deny,allow deny from all allow from 123.456.789.123
- ※ 例示した 123.456.789.123 は、実在しないIPアドレスです。IPアドレスは、「.(ドット)」で区切られた 0 ~ 255 の数字4組で表記されます。
- ■画像ファイルへの直リンクを拒否する
お客様サイトの画像が、直リンクなどで他人のサイトで引用されると、他人のサイトによってお客様サーバーの転送量やアクセス数が浪費されてしまい、最悪の場合はお客様サーバーが帯域調整や同時接続数制限の対象となり、お客様サイトの表示が遅くなるなどの影響が生じます。
記述例
.htaccess を画像ファイルのディレクトリに設置することで、お客様サイト以外からのリンクを拒否することができます。
お客様サイト http://www.example.com/ からのリンクのみ許可する場合SetEnvIf Referer "^http://www\.example\.com" ref_ok order deny,allow deny from all allow from env=ref_ok
- ■特定のディレクトリに Basic 認証を設定する
お客様サイト内の特定のディレクトリを、特定のユーザーだけに公開したい場合には、 .htaccess を設置することで、ユーザー名とパスワードによる Basic 認証をかけることができます。
.htpasswd ファイルの作成方法
Basic 認証には .htaccess ファイルの他に認証に使用するユーザー名とパスワードを設定する .htpasswd ファイルが必要です。以下の手順で .htpasswd ファイルを作成し、所定の場所にアップロードします。
認証に使用するユーザー名とパスワードを次のフォームに入力し「Basic 認証用パスワードを作成」をクリックします。
生成された文字列をコピーします。
テキストエディタを開き、生成された文字列を記述したテキストファイルを任意の名前で保存します。
- 作成したファイルを、FTPソフトを使って、所定のディレクトリにアップロードします。
このマニュアルでは /home/(アカウント名)/ 直下の非公開ディレクトリにアップロードします。 - アップロードしたファイル名を、「.htpasswd」に変更します。
記述例
.htpasswd ファイルを /home/(アカウント名)/.htpasswd に設置する場合AuthType Basic AuthName "secret area" AuthUserFile /home/(アカウント名)/.htpasswd Require valid-user
当社コントロールパネルのアクセス制限機能を利用するとより簡単に設定できます。
◇コントロールパネル > システム > Webサイト > アクセス制限
設定方法に関しては、「アクセス制限」をご確認ください。
- ■特定のファイルのみに Basic 認証を設定する
WordPress や EC-CUBE の管理画面、グループウェアなどのログイン画面をインターネット上に公開している場合、インターネットに接続できる環境であればどこからでもアクセスできてしまうため、ブルートフォース攻撃などにより不正ログインされるリスクが伴います。
記述例
.htaccess を設置することで、ログイン画面にユーザー名とパスワードによる Basic 認証をかけることができます。
wp-login.php に Basic 認証を設定する場合<Files wp-login.php> AuthType Basic AuthName "secret area" AuthUserFile /home/(アカウント名)/.htpasswd Require valid-user </Files>
- ※ Basic 認証には .htaccess ファイルの他に認証に使用するユーザー名とパスワードを設定する .htpasswd ファイルが必要です。以下の手順で .htpasswd ファイルを作成し、所定の場所にアップロードします。
⇒ .htpasswd ファイルの作成方法
- ※ Basic 認証には .htaccess ファイルの他に認証に使用するユーザー名とパスワードを設定する .htpasswd ファイルが必要です。以下の手順で .htpasswd ファイルを作成し、所定の場所にアップロードします。
- ■トップページとなるファイル名を設定する
URL にファイル名までを含めずに、http://www.example.com/ のようにディレクトリへ直接アクセスしたときに表示するファイル名は、サーバー側であらかじめ設定されています。
記述例
.htaccess を設置することで、あらかじめ設定されたファイル名以外の名前のファイルを表示するように設定を変更することができます。
お客様サイト http://www.example.com/ にアクセスしたときに、http://www.example.com/top.html を表示させる場合DirectoryIndex top.html
- ■拡張子が .shtml だけでなく、.html でも SSI を使用する
SSIをご利用いただく場合、そのHTML文書の拡張子は、.shtml とする必要があります。
.htaccess を設置することで、拡張子が .html でも SSI を使用することができます。- ※ この設定をした場合、すべての .html ファイルに対して SSI 処理を行うことなり、サーバーに負荷がかかる原因となりますので、おすすめはいたしません。
記述例
拡張子が .html でも SSI を使用する場合# Apache1.3.x の場合
AddHandler server-parsed .html
# Apache2.x の場合
AddOutputFilter includes .html
Apache バージョンを確認するには、当社コントロールパネルで、以下の画面を開きます。
◇コントロールパネル > システム > Webサイト > サーバー情報
- ■PHP のエラーログを出力する
PHP のエラーログを出力するには、PHP の設定で log_errors を ON にする必要があります。
記述例
「PHP マニュアル > php.ini ディレクティブのリスト」を確認すると、このディレクティブは「PHP_INI_ALL」なので、.htaccess ファイルを設置することで設定を変更できます。
php_flag log_errors On
PHP のエラーは Apache のエラーログに出力されます。エラーログを確認するには、当社コントロールパネルで、以下の画面を開きます。
◇コントロールパネル > システム > Webサイト > ログサービス > エラーログ
目次
- .htaccess の利用
- .htaccess の記述例