.htaccessファイルを使用してApacheのWebディレクトリをパスワードで保護する方法


オンラインプロジェクトを管理する場合、外部の世界からプロジェクトを保護するために、そのプロジェクトへのアクセスを制限する必要があることがよくあります。これにはさまざまな理由が考えられます。たとえば、サイトがまだ開発段階にある間は、検索エンジンのクローラーがサイトにアクセスできないようにする必要があります。

このチュートリアルでは、Apacheウェブサーバーのさまざまなウェブサイトディレクトリをパスワードで保護する方法を紹介します。これを実現する方法はたくさんありますが、最も一般的に使用されている2つの方法を確認します。

最初の方法はApacheの構成ファイルで直接パスワード保護を構成し、2番目の方法は.htaccessファイルを使用します。

要件

Webディレクトリのパスワード保護を設定するには、次のものが必要です。

  • A working Apache web server
  • The AllowOverride AuthConfig directive must be enabled in Apache configuration file.

Apacheパスワードで保護されたディレクトリを設定する

1.このチュートリアルでは、メインのWebルートディレクトリ/var/www/html を保護します。そのディレクトリを保護するには、Apacheの構成を開きます。

---------------- On RedHat/CentOS based systems ----------------
# vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
# nano /etc/apache2/sites-available/000-default.conf

2./var/www/htmlのApacheDocumentディレクトリルートを見つけて、提案されているように次のものを追加します。

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>
<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3.ファイルを保存し、次のコマンドを使用してApacheを再起動します。

--------------- On Systemd -------------------
# systemctl restart httpd         [On RedHat based systems]
# systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
# service httpd restart           [On RedHat based systems]
# service apache2 restart         [On Debian based systems]

4.次に、htpasswdコマンドを使用して、保護されたディレクトリのユーザー名とパスワードを生成します。このコマンドは、基本認証用のユーザーファイルを管理するために使用されます。

コマンドの一般的な構文は次のとおりです。

# htpasswd -c filename username

-c オプションは、暗号化されたパスワードを保持するファイルを指定し、 username は認証のユーザーを指定します。

5.パスワードファイルは、十分に保護されるように、ApacheのWebアクセス可能なディレクトリの外に配置する必要があります。そのために、新しいディレクトリを作成します。

# mkdir /home/tecmint

6.その後、そのディレクトリに保存されるユーザー名とパスワードを生成します。

# htpasswd -c /home/tecmint/webpass tecmint

このコマンドを実行したら、新しいユーザー tecmint のパスワードを2回入力する必要があります。

その後、Apacheが「webpass」ファイルを読み取れることを確認する必要があります。そのためには、次のコマンドを使用してそのファイルの所有権を変更する必要があります。

---------------- On RedHat/CentOS based systems ----------------
# chown apache: /home/tecmint/webpass
# chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
# chown www-data /home/tecmint/webpass
# chmod 640 /home/tecmint/webpass

7.この時点で、新しいユーザーとパスワードの準備ができています。次に、ターゲットディレクトリにアクセスするときにパスワードを要求するようにApacheに指示する必要があります。そのために、/ var/www/htmlに.htaccessというファイルを作成します。

# vi /var/www/html/.htaccess

その中に次のコードを追加します。

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8.ファイルを保存し、セットアップをテストします。ブラウザを開き、WebブラウザにIPアドレスまたはドメイン名を入力します。次に例を示します。

http://ip-address

ユーザー名とパスワードの入力を求められます。

ページに進むために設定したユーザー名とパスワードを入力します。

その他の注意事項

共有ホスティングを使用している場合は、Apache構成ファイルにアクセスできない可能性があります。ただし、ほとんどのホスティング会社はデフォルトで「AllowOverrideAll」オプションを有効にしています。つまり、ユーザー名とパスワードを生成してから、保護するディレクトリを選択するだけで済みます。これにより、タスクが大幅に簡単になります。

結論

このチュートリアルがお役に立てば幸いです。また、目標の達成に役立つことを願っています。ご不明な点やご意見がございましたら、お気軽に下記欄にご投稿ください。