セキュリティ設定

1. ファイアウォールの設定

UFWを使用してファイアウォールを設定します。

# UFWの有効化
sudo ufw enable

# Apache(80番ポート)の許可
sudo ufw allow 'Apache'

# HTTPS(443番ポート)の許可
sudo ufw allow 'Apache Secure'

ufw:Uncomplicated Firewall(簡単なファイアウォール)の略
enable:ファイアウォールを起動して有効にする

80番ポートと443番ポートの両方を設定することで ユーザが古いブックマークやリンクから「http://」でアクセスしてきた場合でも、80番ポートで受け付けて、安全な「https://」(443番ポート)に自動的に転送でき、全てのブラウザやデバイスでの互換性を確保できます。

2. Basic認証の設定

特定のディレクトリに認証を設定します。
特定のユーザのみが閲覧できるWebページを作成するためには、ユーザ名とパスワードによる認証を用います。 あらかじめユーザ名とパスワードをApacheに登録し、 特定のディレクトリ内にアクセスする場合に認証を求める、基本認証(BASIC 認証)の設定を行います。

# apache2-utilsのインストール(htpasswdコマンドが使用可能になる。)
sudo apt install apache2-utils

# パスワードファイルの作成(初回のみ -c オプションをつける)
sudo htpasswd -c /etc/apache2/.htpasswd username

これだけでは、ユーザ情報をApacheに登録しただけであるため、 仮想ホストの設定ファイルに認証のためのディレクティブを追加する。

#<VirtualHost *:80>の内部に記述
<Directory "/var/www/protected">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

AuthType Basic: Basic認証を使用
AuthName: 認証時に表示されるメッセージ
AuthUserFile: パスワードファイルの場所
Require valid-user: 有効なユーザのみアクセスを許可

変更後は設定を再度読み込みする。

sudo systemctl reload apache2

「http://localhost」にアクセスして図のような画面になれば設定は成功である。

Basic認証