全体のインストール手順は👇を参照ください。
前回はKUSANAGIのセットアップとWordPressをインストールしてブログを公開できる状態まで持っていきました。
今回はKUSANAGIのリモート操作環境を準備します。
これで好きなターミナルソフトでKUSANAGIにアクセスできるようになります。
(いつまでもコンソール画面のスクリーンショットを取るのは大変ですし…(^^ゞ)
SSH接続できるようにするのと同時にSSHポートのセキュリティを強化します。
作業目的
作業目的は2点です。
- ターミナルソフトでサーバにリモート接続できるようにする
- リモート接続のセキュリティ強化
セキュリティ強化は下記内容を実施します。
- リモートログインはrootによる直接接続を禁止。
作業用ユーザで接続するようにする - リモートログインはSSH鍵を必須にする
- サーバ側でファイヤーウォールを制御できるようにする
- ファイヤーウォールを起動するようにする
- SSHのポート番号を変更する
- HTTPとHTTPSのみ許可する
なぜSSHのポート番号を変更するのかというと、
grep "sshd" /var/log/secure
を実行するとSSHのログが表示されますが、ごく普ッ通~に、中国からクラックの為と思わしきアクセスが頻繁に記録されていました。 インターネット怖い。
Nov 21 22:48:08 163-44-169-228 sshd[19434]: Received disconnect from 125.88.158.220: 11: Bye Bye [preauth]
Nov 25 21:03:19 163-44-169-228 sshd[5116]: Received disconnect from 221.194.44.224: 11: [preauth]
ポート番号を変更してカジュアルハックを抑制するのが狙いです。
作業手順
ConoHa管理画面のコンソールでrootログインします。
SSH接続用ユーザーの準備
rootによるSSH接続を禁止するので、SSH接続用のユーザーを準備します。
ユーザーをwheelグループに所属させ、管理者権限が必要な場合に su
コマンドで root
になる運用とします。
ユーザー作成
/etc/pam.d/su
を開いて、
# vim /etc/pam.d/su
コメントを外す。
#auth required pam_wheel.so use_uid
↓
auth required pam_wheel.so use_uid
# useradd 【ユーザ名】
# passwd 【ユーザ名】
ユーザー 【ユーザ名】 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
# usermod -G wheel 【ユーザ名】
SSH接続用ユーザのSSH鍵を準備する
リモートログイン用のSSH鍵を作成します。
# su 【ユーザ名】
$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/【ユーザ名】/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/【ユーザ名】/.ssh/id_rsa.
Your public key has been saved in /home/【ユーザ名】/.ssh/id_rsa.pub.
The key fingerprint is:
**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:** 【ユーザ名】@163-44-169-228
The key's randomart image is:
+--[ RSA 2048]----+
略
+-----------------+
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
内容をテキストファイルにコピペして自分のPCに 【ユーザ名】.pem として保存
$ cat id_rsa
$ exit
SSHデーモン(sshd
)の設定変更
設定ファイルの修正
/etc/ssh/sshd_config
を開き、
# vim /etc/ssh/sshd_config
以下の設定をします。
項目自体は元からあり、コメントアウトしてゆくだけです。
#Protocol 2
↓
Protocol 2
#PermitRootLogin yes
↓
PermitRootLogin no
コンソール(ConoHaの管理画面)からならrootログインできます。
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes
PasswordAuthentication yes
↓
PasswordAuthentication no
さいごに、sshdを再起動します。
systemctl restart sshd.service
動作確認
RLoginで下記2点を確認します。
- 新しく作ったユーザとSSH鍵の組み合わせで55555ポートにつながること
- rootユーザではつながらないこと
おすすめSSHクライアント
Windows用ターミナルソフトといえばTera Term、PuTTYがメジャーどころかも知れませんが、私のお勧めはRLoginです。
- 最初から日本語なのが安心
- 最新版を追っかけやすい
派生版とか私家版とか独自パッチいったものが無いので分かりやすい - 右クリックでいきなり貼り付けないので誤作動で爆死せずに済む
こういった点が入門中の私にシックリきました。
SSHクライアントの接続設定
RLoginの画面で説明しますが、項目的にはオーソドックスです。
エントリー/コメント | 何でも良い |
---|---|
Server Address | サーバのIPアドレス |
プロトコル | SSH |
Socket Port | 初期値 22 |
User Name | ユーザ名 |
Password | パスワード |
SSH Identity Key | ユーザ名に対応する.pemファイル |
デフォルト文字セット | UTF-8 |
ファイヤーウォール(firewalld
)の設定変更
サーバー初回設定時はConoHaのコントロールパネル上でSSH, HTTP, HTTPSのみ許可する設定にしました。
しかし、コントロールパネルでは今回のようにSSHのポート番号を変更するといった、きめ細かな制御ができません。
APIを使えば制御できます。
が…うん、覚えるの面倒臭え。画面無いと無理。
そこで、とりあえずはインフラ側ではなくサーバ側でファイヤーウォール制御することにします。
手順は切り替え中にセキュリティが手薄にならないよう、
- サーバ側ファイヤーウォールを起動
- インフラ側ファイヤーウォールを全開放
とします。
格安ケチケチサーバ的にはインフラ側で処理してもらえばリソースが浮くので、ゆくゆくはAPIで設定したいと思います。
ファイヤーウォール起動
# systemctl start firewalld.service
また、OS起動時にファイヤーウォールを自動起動するように設定しておきます。
# systemctl enable firewalld.service
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/basic.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl list-unit-files | grep firewalld
firewalld.service enabled
SSH接続用ポートの切り替え
sshdに設定したポート番号を指定します(今回例では55555)。
# firewall-cmd --add-port=55555/tcp
success
# firewall-cmd --permanent --add-port=55555/tcp
success
# firewall-cmd --remove-service=ssh
success
# firewall-cmd --permanent --zone=public --remove-service=ssh
success
HTTP, HTTPSのポートを開放
HTTPとHTTPSのポートを開きます。
# firewall-cmd --add-service=http
success
# firewall-cmd --add-service=https
success
# firewall-cmd --permanent --zone=public --add-service=http
success
# firewall-cmd --permanent --zone=public --add-service=https
success
ファイヤーウォール再起動
# systemctl restart firewalld.service
インフラ側ファイヤーウォールの設定変更
ConoHaのコントロールパネルを開き、接続許可ポートを「すべて許可」に変更します。
つまり、
- インフラ側では全部通すが、
- KUSANAGI側でSSH, HTTP, HTTPSに制限
という状態にします。
連載目次
次はKUSANAGIにwordmoveをインストールします。
KUSANAGIのインストール手順の全体はこちらの記事を参照ください。
また、こちらの記事では「ConoHaにKUSANAGIをインストールしてWordPressサーバーを公開するまで」を一通り辿れます。