IT pass HikiWiki - [Memo2020][ITPASS]サーバ交換作業(WWW) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
== 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 の公開鍵は消去されるので, そのままにしておく.
* 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 にそのページの領域の行があるか確認する. もしなければ, 書き加える.
# * なかった
* ((*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" に "Debian 10 (buster)" を選択.
当該ページの説明に従って, 下のように作業した.
$ sudo apt update
$ sudo apt install snapd
$ sudo snap install core
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
=== 証明書の発行
ダウンロードした certbot を使って itpass.scitec.kobe-u.ac.jp 用の
証明書を発行した.
$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp
--webroot-path /home/itpass/public_html -d itpass.scitec.kobe-u.ac.jp
なお, certbot のオプションの意味は下の通り.
* --webroot
既に動作中のウェブサーバ上で, ウェブサーバを停止せずに証明書を発行する.
* certonly
apache の設定ファイルを自動で書き換えずに証明書を取得するのみ.
証明書は /etc/letsencrypt に置かれる.
* --webroot-path
RootPath の設定
* --email (-m)
初回実行時にメールアドレスを尋ねられなくするためのオプション.
つけなくて良かったような気がする.
途中以下のようなことが聞かれるので 2 を選んだ.
What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate
同様に, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp 用の証明書を発行した.
$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp
--webroot-path /home/epalab/public_html -d epa.scitec.kobe-u.ac.jp
$ sudo certbot certonly --webroot -m 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:443
の項目内で下のように書き換えた.
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"
前の SSLCertificateFile と SSLCertificateKeyFile はコメントアウトした.
=== 証明書更新のテスト
Let's encrypt の証明書の有効期限は 90 日である.
このため, certbot-auto には簡単に証明書を更新する方法が存在する.
その方法を設定した.
まずは下のようにして更新をテストした.
# ./certbot renew --dry-run
これを定期的に実行するために cron のためのスクリプトを設定した.
下の内容の /etc/cron.local/daily/240_letsencrypt_renew を作成した.
#!/bin/sh
#
#= Renew certificate
#
MAINTAINERS="Yoshiyuki O. Takahashi"
UPDATE='2020-12-01’
VERSION='1.0'
REFERENCES='none'
COMMAND='/usr/bin/certbot'
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 にアクセスし, ページを正常に見ることができることを確認した.
編集の際は元のファイルを 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 の公開鍵は消去されるので, そのままにしておく.
* 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 にそのページの領域の行があるか確認する. もしなければ, 書き加える.
# * なかった
* ((*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" に "Debian 10 (buster)" を選択.
当該ページの説明に従って, 下のように作業した.
$ sudo apt update
$ sudo apt install snapd
$ sudo snap install core
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
=== 証明書の発行
ダウンロードした certbot を使って itpass.scitec.kobe-u.ac.jp 用の
証明書を発行した.
$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp
--webroot-path /home/itpass/public_html -d itpass.scitec.kobe-u.ac.jp
なお, certbot のオプションの意味は下の通り.
* --webroot
既に動作中のウェブサーバ上で, ウェブサーバを停止せずに証明書を発行する.
* certonly
apache の設定ファイルを自動で書き換えずに証明書を取得するのみ.
証明書は /etc/letsencrypt に置かれる.
* --webroot-path
RootPath の設定
* --email (-m)
初回実行時にメールアドレスを尋ねられなくするためのオプション.
つけなくて良かったような気がする.
途中以下のようなことが聞かれるので 2 を選んだ.
What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate
同様に, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp 用の証明書を発行した.
$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp
--webroot-path /home/epalab/public_html -d epa.scitec.kobe-u.ac.jp
$ sudo certbot certonly --webroot -m 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:443
の項目内で下のように書き換えた.
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"
前の SSLCertificateFile と SSLCertificateKeyFile はコメントアウトした.
=== 証明書更新のテスト
Let's encrypt の証明書の有効期限は 90 日である.
このため, certbot-auto には簡単に証明書を更新する方法が存在する.
その方法を設定した.
まずは下のようにして更新をテストした.
# ./certbot renew --dry-run
これを定期的に実行するために cron のためのスクリプトを設定した.
下の内容の /etc/cron.local/daily/240_letsencrypt_renew を作成した.
#!/bin/sh
#
#= Renew certificate
#
MAINTAINERS="Yoshiyuki O. Takahashi"
UPDATE='2020-12-01’
VERSION='1.0'
REFERENCES='none'
COMMAND='/usr/bin/certbot'
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 にアクセスし, ページを正常に見ることができることを確認した.