セキュアなApacheウェブサーバ(SSL 使用)構築ガイド(Ubuntu 上)
【概要】 UbuntuにApacheウェブサーバをSSLに対応させて構築する手順を説明している.まず,Ubuntuの基本設定としてファイアウォールの有効化,システムの更新,NTPの設定,日本語環境の整備を行う.次に,Apacheと関連ソフトウェアをインストールし,基本的な設定を行う.その後,SSL証明書の取得のためにcertbotをインストールし,Let's Encryptから証明書を取得する.最後に,証明書の自動更新を設定することで,セキュアなウェブサーバの運用が可能となる.
前もって決めておくこと
Web サーバの URL を決めておく.このWebページでは,www.hoge.jpとする.
Ubuntu の基本設定
- ファイアウォールを有効化する
端末で次のコマンドを実行する.
sudo ufw enable
- IP アドレス,ゲートウェイ,ネットマスク,DNS サーバの設定を行う
- Ubuntu システムの更新
端末で次のコマンドを実行する.
sudo apt -y update sudo apt -yV upgrade sudo apt -yV dist-upgrade sudo apt -yV autoremove sudo apt autoclean sudo shutdown -r now
- 基本設定
端末で次のコマンドを実行する.
# パッケージのアップデート操作 sudo apt -y update sudo apt -yV upgrade # NTP の設定 sudo apt install ntp sudo apt install ntpdate sudo service ntp stop sudo /usr/sbin/ntpdate ntp.jst.mfeed.ad.jp sudo /usr/sbin/service ntp start sudo timedatectl set-ntp true # 日本語サポートのインストール sudo apt -y install language-selector-common sudo apt -y install $(check-language-support) # fcitx-mozc のインストール sudo apt -y install fcitx-mozc # fcitx-mozc のインストール後,不要なインプットメソッドの削除 im-config -l sudo apt remove -y ibus-mozc sudo apt remove -y ibus-table sudo apt remove -y ibus-gtk sudo apt remove -y ibus-gtk3 # fcitx を使用するように設定 im-config -n fcitx # fcitx の設定 im-config sudo apt -y install fcitx-config-gtk sed -i "/EnabledIMList/s/mozc:False/mozc:True/g" ~/.config/fcitx/profile fcitx-configtool mozc # ユーザディレクトリの言語を英語に変更 sudo apt -y install xdg-user-dirs-gtk export LANG=C LC_ALL=C xdg-user-dirs-gtk-update # GNOME での省電力,サスペンドに関する設定 gsettings set org.gnome.desktop.session idle-delay 0 gsettings set org.gnome.desktop.lockdown disable-lock-screen true gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing gsettings set org.mate.power-manager sleep-computer-ac 0 gsettings set apps.light-locker lock-after-screensaver 0 gsettings set apps.light-locker lock-on-suspend false # ダウンロード元を日本のミラーサーバに変更 sudo sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list sudo sed -i 's/\/\/us.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list sudo sed -i 's/\/\/fr.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list sudo apt -y update echo ============================================================ sudo add-apt-repository -y ppa:ubuntu-desktop/ubuntu-make sudo apt -y update sudo apt -y upgrade # 運用保守用ツール net-tools のインストール sudo apt -y install net-tools # カーネルパッケージの更新 sudo apt -yV dist-upgrade # ログクリア cd /var/log sudo rm `find . -type f` # 終了処理 sudo apt -yV autoremove sudo apt autoclean history -c sudo rm ~/.bash_history sudo shutdown -r now
- Ubuntu システムの更新
Apache 及び関連ソフトウェアのインストール,基本設定
- ufw(ファイアウォール)の設定
sudo ufw enable sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 'Apache Full'
- ufw の設定確認
sudo apt install nmap sudo ufw status nmap localhost
- Apache および関連ソフトウェアのインストール
sudo apt-get --purge remove apache2 sudo apt-get --purge remove apache2-bin apache2-data apache2-mpm-worker sudo apt-get --purge remove libapache2-mod-wsgi sudo apt -y install apache2 sudo apt -y install apache2-bin apache2-data apache2-mpm-worker sudo apt -y install libapache2-mod-wsgi sudo a2enmod ssl sudo a2enmod headers sudo service apache2 reload
- Web ブラウザで「localhost」を開き,動作確認を行う.
Apache の初期画面が表示されればインストールは成功である.
- /etc/apache2/sites-available/000-default.conf の設定
設定例を次に示す.
ServerName www.hoge.jp DocumentRoot /var/www/html ServerAdmin hoge@hoge.ac.jp <Directory /var/www/html> Options FollowSymLinks AllowOverride All AddType text/html .html AddType text/html .htm Require all granted </Directory>
- Apache の設定確認と再起動
sudo apachectl configtest sudo service apache2 restart
- Web ブラウザで「localhost」を開き,設定変更後の動作確認を行う.
Apache の画面が正常に表示されることを確認する.
- SSL 設定ファイル /etc/apache2/sites-available/www.hoge.jp.conf の作成
/etc/apache2/sites-available/default-ssl.conf を /etc/apache2/sites-available/www.hoge.jp.conf にコピーし,次の設定を追加する.
なお,設定内容は 000-default.conf と整合性を保つこと.
設定例を次に示す.
ServerAdmin hoge@hoge.ac.jp DocumentRoot /var/www/html <Directory /home/www> Options FollowSymLinks AllowOverride All AddType text/html .html AddType text/html .htm Require all granted </Directory>
- SSL 設定の有効化
sudo a2ensite www.hoge.jp sudo service apache2 restart nmap localhost
- Web ブラウザで「https://localhost」を開き,SSL 設定の動作確認を行う.
セキュリティ警告は証明書未設定のため発生するが,動作確認では無視して進める.
SSL 証明書の取得
Let's Encrypt の SSL 証明書を certbot を使用して取得する.
参考Webページ: https://certbot.eff.org/lets-encrypt/ubuntuartful-apache.html (現在は公開停止)
- certbot のインストールと設定
sudo apt -y update sudo apt -y install software-properties-common sudo apt -y update sudo apt -y install certbot sudo apt -y install python-certbot-apache -y sudo apachectl configtest sudo service apache2 restart sudo certbot --apache -d www.hoge.jp
設定時に表示される選択肢で「2」を選択する.表示内容は慎重に確認すること.
- SSL モジュールの有効化
sudo a2enmod ssl sudo a2enmod headers sudo systemctl restart apache2
- 証明書の自動更新テスト
sudo certbot renew --dry-run -d www.hoge.jp
- 証明書の自動更新設定
root ユーザで crontab を編集する:
sudo -i crontab -e
次の設定を追加する:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"