.htaccessを活用してWebサイトのセキュリティを強化しよう

こんにちは。

アントアントのメルマガ担当です。
いつもメールマガジン「ここだけは知っておきたい編」をご覧いただき、誠にありがとうございます。

Web上の情報は日々増え続けており、それと同時にサイバー攻撃の脅威も高まっています。
Webサイトを運営する方にとってWebサイトのセキュリティ対策は最優先で対策するべき課題です。

万が一、情報漏えいなどの被害に遭ってしまえば、金銭的な損失だけでなく、Webサイトの信頼を失墜させてしまうことにも繋がりかねません。
そこで、本記事ではWebサイトセキュリティの基礎知識として「.htaccess」ファイルに注目し、その重要性と具体的な活用方法をご紹介します!

.htaccessとは?

.htaccessとは?

.htaccessとは、ウェブサイトのサーバーに対して様々な設定を行うことができるファイルです。

このファイルの特徴は、サーバー全体の設定を変更するのではなく、特定のディレクトリ(フォルダ)内のみで設定を適用できる点にあります。

.htaccessファイルの基本的な役割

.htaccessファイルは、Webサイトのセキュリティ対策、SEO対策、パフォーマンス向上など、様々な用途で活用されます。

  • サーバーの設定をディレクトリごとに変更することができる
  • アクセス制限やリダイレクト設定、エラーページのカスタマイズなどの様々な設定を行うことができる

★.htaccessファイルを利用したリダイレクト設定の記述例

.htaccessファイルを利用したリダイレクト設定の記述例については以下のメルマガでご紹介していますので、メルマガを参考の上、.htaccessファイルにコードを追加の上お試しください。
是非リダイレクトを正しく設定し、SEOの改善にも役立ててください。

『URLの正規化とは?必要性と設定方法について』

.htaccessを活用したセキュリティ対策

.htaccessファイルを活用することで、Webサイトを様々な脅威から守ることができます。
今回は、.htaccessファイルを用いたセキュリティ対策として、以下の3つの例をご紹介します。

.htaccessファイルを活用したセキュリティ対策例

  1. 特定のIPアドレスからのアクセス制限
  2. BASIC(ベーシック)認証の設定
  3. エラーページのカスタマイズ

1. 特定のIPアドレスからのアクセス制限

身に覚えのないアクセス元からの攻撃や、特定の国からのアクセスを遮断したい場合などに有効です。
許可するIPアドレス、拒否するIPアドレスを指定することで、Webサイトへのアクセスを制御できます。

設定方法

.htaccessファイルに以下のコードを記述します。

<Limit GET POST>
Allow from 許可するIPアドレス
Deny from all
</Limit>

コードの内容

Allow from
許可するIPアドレスを指定する

Deny from all
上記以外のIPアドレスからのアクセスをすべて拒否する

2. BASIC(ベーシック)認証の設定

特定のページへのアクセスをパスワードで保護し、制限を設けることが可能です。
例えば、開発中のページや、限られたメンバーしかアクセスできないページを保護する際に役立ちます。

設定方法
2-1..htpasswd ファイルを作成する

IDとパスワードを格納するための「.htpasswdファイル」を作成する必要があります。

2-1-1.設定したいIDとパスワードを決める

.htpasswdファイルを作成する前にBASIC認証に設定したいID(ユーザー名)とパスワードを決め、IDとパスワードの暗号化処理を行います。

今回はIDとパスワードの暗号化処理におすすめの以下のツールを使用しての方法をご紹介します。

IDとパスワードの暗号化処理におすすめのツール【.htpasswdファイル作成(外部リンク)】

1.IDとパスワードの入力欄に先ほど決めたIDとパスワードを入力し、【生成ボタン】を押下する

今回は以下の内容で生成しました。

ID:sample
Password:sample1234

2..htpasswdが生成される

2-1-2..htpasswd ファイルを作成し、文字列を記述する

まずは、メモ帳などのテキストエディタを使って「.htpasswdファイル」を作成しましょう。

.htpasswdファイルが作成できたら上記ツールで生成された文字列を記述してファイルを保存しましょう。

記述内容例:sample:NB9x21caSuzD2(ID・パスワード暗号化生成ツールで作成した.htpasswd)

2-2..htaccessファイルを作成する

BASIC認証を設定するためのファイルを作成します。

.htpasswdファイルと同様にメモ帳などのテキストエディタを使って「.htaccessファイル」を作成しましょう。

ファイル内には以下のコードを記述します。

AuthType Basic
AuthName "Input your ID and Password."  
AuthUserFile /home/ユーザー名/ドメイン名/.htpasswd
require valid-user

コードの内容

AuthType Basic
ベーシック認証を使用することを宣言するためのコード

AuthName "Input your ID and Password."
認証時に表示されるメッセージを設定できる ※任意の文言に変更可能

AuthUserFile /home/ユーザー名/ドメイン名/.htpasswd: .htpasswd
ファイルの絶対パスを指定するためのコード ※サーバー環境に合わせて適宜変更する必要あり

require valid-user
有効なユーザーのみアクセスを許可する

2-4.ファイルをアップロードする

作成した .htpasswd ファイルと .htaccessファイルを、BASIC認証を設定したいディレクトリにFTP接続などを利用してアップロードします。

3. エラーページのカスタマイズ

Webサイトにアクセスした際に、サーバーエラーやファイルが存在しない場合に表示されるエラーページをカスタマイズできます。

デフォルトのエラーページでは、ユーザーに不安感を与えてしまうだけでなく、攻撃者にサイトの脆弱性に関する情報を与えてしまう可能性があります。
.htaccessファイルでエラーページをカスタマイズすることで、ユーザーの不安を軽減し、セキュリティリスクを低減することができます。
例えば、404エラーや500エラーに適したカスタムページを設定することができます。

設定方法

.htaccessファイルに以下のコードを記述します。

ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html

コードの内容

ErrorDocument 404 /404.html
404エラーが発生した際に表示するカスタムエラーページのパスを指定する

ErrorDocument 500 /500.html
500エラーが発生した際に表示するカスタムエラーページのパスを指定する


.htaccessファイルを利用しなくてもできる!
ant2 CMSのセキュリティ対策

今回ご紹介した.htaccessファイルを利用したセキュリティ対策ですが、ant2 CMSでは.htaccessを利用せずとも編集画面や管理ツールより簡単に設定することができます。

特定のIPアドレスからのアクセス制限

ant2 OEMサービスをご利用いただく場合、管理ツールよりIPアドレスでの制限を行いたいサイトに対して特定のIPアドレス以外のサイトへのログインを制限することができます。

【管理ツール設定箇所】

【IP制限設定画面】

BASIC(ベーシック)認証の設定

編集サイトログイン後、編集メニューより設定したいページのURLをリストから選択し、BASIC認証を設定することができます。

CMS機能により自動で設定したいディレクトリ以下に.htaccessファイルと.htpasswdファイル(暗号化されたID・パスワード格納済)が作成されるため手動で作成するよりも簡単に設定することができます。

【BASIC認証設定画面】

エラーページのカスタマイズ

ant2 CMSのテンプレートを利用してWebサイトを作成した場合、404ページが自動で作成されているため、ページやファイルが存在しない場合は以下のようなページが自動で表示されます。
また、この404ページはフリーページの編集と同様に自由に編集することができるため、簡単に編集していただくことができます。

コンテンツセキュリティポリシー(CSP)でさらに強固なセキュリティ対策!

コンテンツセキュリティポリシー(CSP)とは?

コンテンツセキュリティポリシー(CSP)は、ブラウザ上でのコンテンツ読み込みを制限して、クロスサイトスクリプティング(XSS)やデータインジェクションなどのリスクを軽減する仕組みです。

CSPを有効にするには、WEBサーバーから「Content-Security-Policy」のHTTP ヘッダーを返すように「.htaccess」に記述することで設定が可能です。

クロスサイトスクリプティング(XSS)とは

クロスサイトスクリプティング(XSS)とは、Webサイトのセキュリティホールを突いて、悪意のあるスクリプトを埋め込み、サイト訪問者のブラウザ上で実行させてしまう攻撃手法です。

XSSの危険性は、攻撃者が埋め込んだスクリプトが、訪問者のブラウザ上で、あたかもWebサイトの一部として動作してしまう点にあります。

例えば、悪意のあるスクリプトによって、以下のような被害が発生する可能性があります。

  • Cookieの盗難
    ログイン状態を維持するためのCookieを盗まれ、攻撃者にアカウントを乗っ取られてしまう。
  • フィッシング詐欺
    偽のログイン画面を表示させ、ユーザーが入力したIDやパスワードを盗み出す。
  • Webサイト改ざん
    Webサイトの表示内容を改ざんしたり、悪意のあるサイトへ転送させたりする。
  • マルウェア感染
    ユーザーのPCにマルウェアをダウンロードさせ、遠隔操作などの被害をもたらす。

XSSは、Webサイトの脆弱性を利用した攻撃であるため、ユーザー側で完全に防ぐことは困難です。
しかし、Webサイト運営者が適切な対策を施すことで、XSSのリスクを大幅に減らすことが可能です。

そこで、有効な対策の1つがコンテンツセキュリティポリシー(CSP)です。

CSPのポリシーの記述(ポリシーディレクティブ)

CSPは、HTTPヘッダーまたはHTMLのmetaタグ内にポリシーを記述することで設定します。
ポリシーは、ポリシーディレクティブとソースリストで構成されており、様々なポリシーディレクティブを設定することで、Webサイトのセキュリティを強化することができます。
主なポリシーディレクティブとしては、以下のようなものがあります。

主なCSPのポリシーの記述

  • JavaScript(ディレクティブ:script-src)
  • CSS(ディレクティブ:style-src)
  • 画像(ディレクティブ:img-src)
  • フォント(ディレクティブ:font-src)
  • データ(ディレクティブ:connect-src)
  • フレーム(ディレクティブ:frame-srcおよびframe-ancestors)
  • Worker(ディレクティブ:worker-src)
  • その他未設定への適用(ディレクティブ:default-src)

CSPを設定するための対応策

CSPは、HTTPヘッダーまたはHTMLのmetaタグ内にポリシーを記述することで設定します。

設定方法

.htaccessファイルの<IfModule mod_headers.c>~</IfModule>の中にコードを記述します。

#---Add-Custom-Header
<IfModule mod_headers.c>
~ここに記述を追加してください。~
</IfModule>
#/---Add-Custom-Header

記述例

#---Add-Custom-Header

<IfModule mod_headers.c>
    # --- Content Security Policy 設定 ---
    # CSP
    Header always set Content-Security-Policy "base-uri 'self'; object-src 'none'; script-src 'self' https://*sample.net https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://use.fontawesome.com https://ajax.googleapis.com https://www.gstatic.com https://yt3.ggpht.com https://i.ytimg.com https://www.google.com https://fonts.googleapis.com https://maps.googleapis.com https://maps.gstatic.com https://maps.google.com https://www.youtube.com https://www.gstatic.com https://yt3.ggpht.com https://platform.twitter.com https://syndication.twitter.com https://abs.twimg.com https://twitter.com 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: https://*.secure-cms.net https://sample-cms.com https://maps.gstatic.com https://maps.googleapis.com https://maps.google.com https://scontent-nrt1-1.cdninstagram.com https://scontent-nrt1-2.cdninstagram.com https://instagram.com https://i.ytimg.com https://i9.ytimg.com; frame-ancestors 'self' https://*.secure-cms.net; upgrade-insecure-requests"
</IfModule>

#/---Add-Custom-Header

記述例のコードの内容

ディレクティブ 内容
base-uri 'self' サイトのベースURIを現在のオリジン(自サイト)に制限する
object-src 'none' <object>, <embed>, <applet> などの要素を通じてのリソースのロードを全て禁止する
script-src 自サイト及び指定された安全なドメインからのJavaScriptのみ実行を許可する
img-src 自サイトと特定の信頼できるドメインからの画像のロードのみを許可する
データURIスキームを用いた画像の埋め込みも許可する
frame-ancestors 'self' 自サイトおよび、特定のドメインからのiframe埋め込みを許可し、
それ以外のサイトからの埋め込みを禁止する(Clickjacking 対策)
upgrade-insecure-requests 非セキュアなHTTP通信をHTTPSへ自動的にアップグレードし、データの保護を強化する
注意事項

上記はあくまで一例です。Webサイトの構成や使用するサービスに合わせて、適切なポリシーを設定する必要があります。
ポリシーの設定を誤ると、Webサイトが正常に表示されなくなる可能性があるため、設定変更を行う際は、十分に注意してください。

CSPの設定不備によるエラーについて

もしCSPの設定が不十分な場合、ブラウザの開発者ツールなどでエラーメッセージが表示されることがあります。
その際は、エラーメッセージの内容を確認し、設定内容を修正する必要があります。

★おすすめのエラー解決方法

ブラウザの開発ツールでエラーメッセージが表示された際はChatGPTにエラー内容を送ると.htaccessファイルに追加するべき記述内容を教えてくれます。
CSPの設定内容に困った際は是非お試しください。

まとめ

今回は、.htaccessを活用したセキュリティ対策と、コンテンツセキュリティポリシー(CSP)について解説しました。
これらの対策を適切に実施することで、Webサイトのセキュリティを強化し、情報漏えいや改ざんといったリスクを低減することができます。
特にコンテンツセキュリティポリシー(CSP)の設定はサイトごとに異なるため、定期的に見直しを行い、新たなセキュリティリスクに備えることが重要です。
.htaccessファイルの活用は、少しの知識と設定で大きな効果を発揮する、Webサイト運営者にとって心強い味方です。
本記事を参考に、.htaccess を活用して安全なWebサイト運営を目指しましょう。