[ITPASS2018]サーバ交換作業 (WWW)
phase 5 (tako, ika の交換: 設定ファイルの変更)
編集の際は元のファイルを hoge_old としてバックアップを取る.
- ika と tako のホスト名を交換 (新 ika には ika, 新 tako には takoと書く)
- www 班が編集するファイル
- /etc/hostname
- /etc/hosts
- 例外 : 新 ika には tako, 新 tako には ika と書く
- /etc/mailname
- /etc/gate/gate.conf
- /etc/exim4/update-exim4.conf.conf
- /etc/init.d/qmail
- このファイルのバックアップは作らないことに注意する
上記の場所以外にも古い名前が残っていないか
# grep tako (または ika) /etc/* # grep tako (または ika) /etc/*/*
などで検索しながら作業する. 検索すると, ディレクトリですとメッセージが大量に出るので /* を増やして検索する.
- ssh の公開鍵は消去されるので, そのままにしておく.
- www 班が編集するファイル
ika と tako の IP アドレスを変更
/etc/hosts と /etc/network/interfaces 内の IP アドレスを入れ替える. # emacs /etc/hosts
- tako にある /hosts の中身のアドレスは 133.30.109.21 にする
- ika にある /hosts の中身のアドレスは 133.30.109.22 にする
# emacs /etc/network/interfaces
- tako にある /interfaces の中身のアドレスは 133.30.109.22 にする
- ローカルホストのアドレスは10/35/19.150 にする
- ika にある /interfaces の中身のアドレスは 133.30.109.21 にする
* ローカルホストのアドレスは10/35/19.151 にする
- dns-nameserversの項目 は ika, tako いずれも 133.30.109.22 とする.
phase 7 (サービスの設定変更)
ika の WWW などの設定変更 (担当: 新 WWW 班)
[TEBIKI]サービスの開始・停止 を参考に, 以下のサービスが永続的に立ち上がるように設定する
- apache2
- openbsd-inetd
$ sudo cd /etc/init.d $ sudo systemctl enable apache2.service $ sudo insserv -d openbsd-inetd
- qmail のバックアップを残していると, エラーメッセージが表示される
- qmail_old を消去する
$ sudo chmod 755 openbsd-inetd
phase 9 (再起動後の動作確認)
サービスの起動確認
ps aux コマンドで以下の確認作業を行う.
- ika
- httpdが起動していることを確認.
- tako
- httpdが起動していないことを確認.
サービスの動作確認
ika
- ssh: root ログインが禁止されているか
- http: ブラウザで https://ika-itpass.scitec.kobe-u.ac.jp/ にアクセスし, 各ページが正常に表示できるか
- 表示できないページがある場合は, /usr/local/apache2/conf/httpd.conf にそのページの領域の行があるか確認する. もしなければ, 書き加える.
- なかった
- 表示できないページがある場合は, /usr/local/apache2/conf/httpd.conf にそのページの領域の行があるか確認する. もしなければ, 書き加える.
- hiki:に書き込めるか
- ssh のテスト
他の情報実験機から存在しないユーザー名でログイン失敗し, ログで ban されているか
# lv /var/log/fail2ban.log
2017-12-05 15:10:41,083 fail2ban.actions [803]: NOTICE [ssh] Ban 133.30.109.78
tako
- ssh: root ログインが禁止されているか
- http: が無効になっているか
Let's encrypt による証明書の設定
Let's Encrypt 総合ポータル (https://letsencrypt.jp/) の Let's Encrypt の使い方 (https://letsencrypt.jp/usage/) に従って作業する.
作業用ディレクトリの作成
作業ディレクトリを作成する.
$ sudo -s # cd /usr/local/src # mkdir certbot # cd certbot
certbot のダウンロード
Let's Encrypt では, Debian 用に certbot のパッケージが用意 されている. しかし, このパッケージは apache2 の Debian パッ ケージに依存しているため, apache をソースから手動で make している itpass サーバでは使えない. そのため, https://certbot.eff.org/ から, 下のようにして certbot をダウンロードしてインストールする.
"Software" に apache を選択. "System" に "Other UNIX" を選択.
当該ページの説明に従って, 下のように作業する.
# wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto
証明書の発行
ダウンロードした certbot-auto を使って itpass.scitec.kobe-u.ac.jp 用の 証明書を発行する.
# ./certbot-auto --webroot certonly \ --email itpadmin@itpass.scitec.kobe-u.ac.jp \ --webroot-path /home/itpass/public_html \ -d itpass.scitec.kobe-u.ac.jp
なお, certbot-auto のオプションの意味は下の通り.
- --webroot 既に動作中のウェブサーバ上で, ウェブサーバを停止せずに証明書を発行する.
- certonly apache の設定ファイルを自動で書き換えずに証明書を取得するのみ. 証明書は /etc/letsencrypt に置かれる.
- --webroot-path RootPath の設定
- --email 初回実行時にメールアドレスを尋ねられなくするためのオプション. つけなくて良かったような気がする.
同様に, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp 用の証明書を発行する.
# ./certbot-auto --webroot certonly \ --email itpadmin@itpass.scitec.kobe-u.ac.jp \ --webroot-path /home/epalab/public_html \ -d epa.scitec.kobe-u.ac.jp # ./certbot-auto --webroot certonly \ --email itpadmin@itpass.scitec.kobe-u.ac.jp \ --webroot-path /home/aoelab/public_html \ -d aoe.scitec.kobe-u.ac.jp
apache への証明書の設定
/usr/local/apache2/conf/extra/httpd-ssl.conf を編集して発行した証明書を設定する.
# vi /usr/local/apache2/conf/extra/httpd-ssl.conf
編集箇所は下の通り.
ServerName itpass.scitec.kobe-u.ac.jp:443 の項目内で下のように書き換える.
SSLCertificateFile "/etc/letsencrypt/live/itpass.scitec.kobe-u.ac.jp/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/itpass.scitec.kobe-u.ac.jp/privkey.pem"
ServerName aoe.scitec.kobe-u.ac.jp:442 の項目内で下のように書き換える.
SSLCertificateFile "/etc/letsencrypt/live/aoe.scitec.kobe-u.ac.jp/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/aoe.scitec.kobe-u.ac.jp/privkey.pem"
ServerName epa.scitec.kobe-u.ac.jp:443 の項目内で下のように書き換える.
SSLCertificateFile "/etc/letsencrypt/live/epa.scitec.kobe-u.ac.jp/fullchain.pem" SSLCertificateKeyFile "/etc/letsencrypt/live/epa.scitec.kobe-u.ac.jp/privkey.pem"
証明書更新のテスト
Let's encrypt の証明書の有効期限は 90 日である. このため, certbot-auto には簡単に証明書を更新する方法が存在する. その方法を設定する.
まずは下のようにして更新をテストする.
# ./certbot-auto renew --dry-run
これを定期的に実行するために cron のためのスクリプトを設定する. 下の内容の /etc/cron.local/daily/240_letsencrypt_renew を作成する.
#!/bin/sh # #= Renew certificate # MAINTAINERS="Yoshiyuki O. Takahashi" UPDATE='2018-04-25' VERSION='1.0' REFERENCES='none' COMMAND='/usr/local/src/certbot/certbot-auto' DRYRUN='--dry-run' DRYRUN='' /bin/echo -e "**** Renew certificate ****" $COMMAND renew $DRYRUN 2>&1 /bin/echo -e ""
実行権限を与える.
下のように動作テストを行い, 問題なく動作することを確認する. (ただし, この時点では証明書が新しいため更新されない.)
# /etc/cron.local/daily/240_letsencrypt_renew
動作チェック
apache を停止
# /usr/local/apache2/bin/apachectl -k graceful-stop
- 停止したかどうかを確認する.
- apache を起動
apache は /usr/local/apache2/bin/apachectl で起動/停止する
# /usr/local/apache2/bin/apachectl -k start
起動したかどうかを以下のコマンドで確認する.
# ps aux | grep http
画面左端に www-data と表示されている行があることを確認する.
- ブラウザで https://itpass.scitec.kobe-u.ac.jp にアクセスし, ページを正常に見ることができることを確認する.
Keyword(s):
References:[[ITPASS2018]2018年度サーバ構築マニュアル]