京都大学では、ウェブサイトのためのホスティングサービスを、さくらインターネットのレンタルサーバー(以後、さくらレンタルサーバーと呼ぶ)へ移行しました。しかしながら、自由にカスタマイズ可能な占有サーバーのためのサービス「VMホスティングサービス」はそのままです。
占有サーバーの利用目的はデータベースやその他ウェブホスティングサービスでは動作しないシステム等です。一定規模であればVMホスティングサービスでもよいですが、たとえばプロジェクト管理に redmine (ruby on railsが必要)を使いたい程度であれば、資源的に勿体ない場合もあります。またWAFなども使えないため、セキュリティ対策もより大変です。また今後クラウドサービスへ移行される可能性もあります。
そこで、redmine を学内等特定ネットワーク内でのみ動作させることを目標に、さくらVPSのセットアップについて実証実験した過程で得た知見ついて TiPSという形でまとめました。
今回、CentOS Stream8 で実験しました。まだこのOSに関する情報は少ないこと。CentOSのサポートは終了もしくは終了に向かっており、今後は Stream8 のみになることもあったためです。
実証実験した環境
- さくらVPS 1GBコース
- OS: CentOS Stream8
- さくらコントロールのパケットフィルタ機能で、京都大学ネットワークに限定
- Let’s Encrypt + Nginx による Basic 認証(暗号化)による利用ユーザー限定
- redmine 4.1.2
- ホスト:◯◯.cseas.kyoto-u.ac.jp (DNSのAレコードをさくらVPSのIPアドレスに設定しておく)
初期設定
OSとSSHログインの方法は割愛します。これらは、さくらVPSのマニュアルにも掲載されているためです。逆に言えば、これができなければ占有サーバーをセキュアに管理運用できるスキルがないため、少なくても本番利用のための運用はスキルのある誰かに任せるのがよいです。
- OSのインストール(CentOS Stream8を選択)
- SSHログイン
- 自身の公開鍵でログインできた後に、パスワード認証をオフにしましょう。
/etc/ssh/sshd_config のPasswordAuthentication yes → PasswordAuthentication no にして、サービスの 再起動(systemctl restart sshd)をするということです。 - rootへの直接ログインをこの時点でやめるかどうかは運用ポリシー次第です。セットアップ途上はパケットフィルタで接続を制限した上でセットアップし、完了したら rootへの接続を切るという手もあります。ただしその場合には、事前にログインするユーザーを作成し、そのユーザーで sshログイン(公開鍵・秘密鍵方式)できること、そして su – などで root へのログインができることを確認してください。さもなくばOSの再インストールが必要になるかもしれません!
- 自身の公開鍵でログインできた後に、パスワード認証をオフにしましょう。
- さくらコントロールパネルのパケットフィルタを変更する(10件登録可能)
京都大学学内限定にするには:http://www.iimc.kyoto-u.ac.jp/ja/services/kuins/external/use/proxy.html#ipaddress- 22/tcp, 80/tcp, 443/tcp の3つのみ上記のIPアドレス群を許可します。
途中、Let’s Encrypt 登録のために、一時的に 80/tcp を全許可する必要がでてきます。
- 22/tcp, 80/tcp, 443/tcp の3つのみ上記のIPアドレス群を許可します。
- ロケール設定(ファイル名などに日本語を取り扱う場合)
- dnf install glibc-langpack-ja で言語パッケージをインストールします。
- localectl コマンドを実行すると下記になっていることを確認
System Locale: LANG=en_US.UTF-8
VC Keymap: jp
X11 Layout: jp - localectl set-locale LANG=ja_JP.UTF-8 を実行した後に
localectl を実行した場合、下記のように言語設定が日本語に変更になっていることを確認。
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
- パッケージ管理システム(DNF)の自動アップデート設定(参考:https://aulta.co.jp/archives/7685)
- dnf install dnf-automatic で自動アップデートツールをインストール
- vi /etc/dnf/automatic.conf でファイルを編集
upgrade_type = default
apply_updates = yes - systemctl enable dnf-automatic.timer
systemctl start dnf-automatic.timer という2つのコマンドを実行して、サービスの常駐化とサービスの起動を行う。
- Redmine を導入する方法(Postfix, MariaDB, Nginx, Let’s Enctypt)
*かなりやることがあるので1日がかりになると思います。
- Rootによる sshログインを禁止設定する
- root以外のユーザーによる SSHログインが完了して、su – でrootログインできることを確認後、/etc/ssh/sshd_config の PermitRootLogin yes → PermitRootLogin no にして、サービスの 再起動(systemctl restart sshd)して、rootでのsshログインが拒否されることを確認してください。
関連情報
- RedmineをCentOS 8上で動かすーUnicornとNginx編
https://www.torutk.com/projects/swe/wiki/Redmine%E3%82%92CentOS_8%E4%B8%8A%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%99%E3%83%BCUnicorn%E3%81%A8Nginx%E7%B7%A8 - WAFのインストール方法(さくら)
https://manual.sakura.ad.jp/vps/server/etc/siteguard.html - CentOS 8に無料SSL「Let’s Encrypt」を設定する
https://aulta.co.jp/archives/8008 - 自宅サーバを さくらVPS(石狩リージョン) + CentOS 8 Stream に移行する
https://riatw.me/blog/centos_8_stream_transition.html - さくらVPSに KUSANAGIぽい構成で WordPressブログを構築した作業まとめ
https://runble1.com/centos7-wordpress-kusanagi/ - さくらのVPSにRedmineをインストールしてみた
https://water2litter.net/rum/post/pc_redmine_sakura_install/
2021年4月19日