前回はKUSANAGIのセットアップとWordPressをインストールしてブログを公開できる状態まで持っていきました。
今回はKUSANAGIのリモート操作環境を準備します。
これで好きなターミナルソフトでKUSANAGIにアクセスできるようになります。
(いつまでもコンソール画面のスクリーンショットを取るのは大変ですし…(^^ゞ)
SSH接続できるようにするのと同時にSSHポートのセキュリティを強化します。
目次(クリックで項目に飛びます)
作業目的
作業目的は2点です。
- ターミナルソフトでサーバにリモート接続できるようにする
- リモート接続のセキュリティ強化
セキュリティ強化は下記内容を実施します。
- リモートログインはrootによる直接接続を禁止。
作業用ユーザで接続するようにする - リモートログインはSSH鍵を必須にする
- サーバ側でファイヤーウォールを制御できるようにする
- ファイヤーウォールを起動するようにする
- SSHのポート番号を変更する
- HTTPとHTTPSのみ許可する
なぜSSHのポート番号を変更するのかというと、 grep "sshd" /var/log/secureを実行するとSSHのログが表示されますが、ごく普ッ通~に、中国からクラックの為と思わしきアクセスが頻繁に記録されていました。インターネット怖い。
1 2 | 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
になる運用とします。
ユーザー作成
- wheel グループが root になれるようにする
/etc/pam.d/su
を開いて、コメントを外す。1# vim /etc/pam.d/su123#auth required pam_wheel.so use_uid↓auth required pam_wheel.so use_uid - SSH接続用ユーザ作成123456# useradd 【ユーザ名】# passwd 【ユーザ名】ユーザー 【ユーザ名】 のパスワードを変更。新しいパスワード:新しいパスワードを再入力してください:passwd: すべての認証トークンが正しく更新できました。
- SSH接続用ユーザを wheel グループに入れる1# usermod -G wheel 【ユーザ名】
SSH接続用ユーザのSSH鍵を準備する
リモートログイン用のSSH鍵を作成します。
- 作業用ユーザに変更1# su 【ユーザ名】
- ホームディレクトリに移動1$ cd ~
- .sshディレクトリを作成12$ mkdir .ssh$ chmod 700 .ssh
- SSH鍵を作成12345678910111213$ ssh-keygen -t rsaGenerating 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-228The key's randomart image is:+--[ RSA 2048]----+略+-----------------+
- id_rsa.pub を authorized_keys に名前変更1$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
- 本人以外読み取れないように設定1$ chmod 600 ~/.ssh/authorized_keys
- 鍵を保存
内容をテキストファイルにコピペして自分のPCに【ユーザ名】.pem
として保存1$ cat id_rsa - root に戻る1$ exit
SSHデーモン(sshd
)の設定変更
設定ファイルの修正
/etc/ssh/sshd_config
を開き、
1 | # vim /etc/ssh/sshd_config |
以下の設定をします。
項目自体は元からあり、コメントアウトしてゆくだけです。
- ポートを55555にする22以外なら何でも良いです。123#Port 22↓Port 55555
自由に振って良い範囲は大体5万番以降です。 - SSH2をON123#Protocol 2↓Protocol 2
- rootログイン禁止コンソール(ConoHaの管理画面)からならrootログインできます。123#PermitRootLogin yes↓PermitRootLogin no
- 公開鍵接続可能にする123#PubkeyAuthentication yes↓PubkeyAuthentication yes
- パスワードログインを禁止123PasswordAuthentication yes↓PasswordAuthentication no
- sshdの再起動1systemctl 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で設定したいと思います。
ファイヤーウォール起動
1 | # systemctl start firewalld.service |
- systemdのフラグを立てる123# systemctl enable firewalld.serviceCreated 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.
- enabledになっていることを確認12# systemctl list-unit-files | grep firewalldfirewalld.service enabled
SSH接続用ポートの切り替え
- SSH接続用ポートの開放
sshdに設定したポート番号を指定します(今回例では55555)。1234# firewall-cmd --add-port=55555/tcpsuccess# firewall-cmd --permanent --add-port=55555/tcpsuccess - SSH標準ポートの閉鎖1234# firewall-cmd --remove-service=sshsuccess# firewall-cmd --permanent --zone=public --remove-service=sshsuccess
HTTP, HTTPSのポートを開放
HTTPとHTTPSのポートを開きます。
1 2 3 4 5 6 7 8 | # 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 |
ファイヤーウォール再起動
1 | # systemctl restart firewalld.service |
インフラ側ファイヤーウォールの設定変更
ConoHaのコントロールパネルを開き、接続許可ポートを「すべて許可」に変更します。
つまり、
- インフラ側では全部通すが、
- KUSANAGI側でSSH, HTTP, HTTPSに制限
という状態にします。
連載目次
次はKUSANAGIにwordmoveをインストールします。
KUSANAGIのインストール手順の全体はこちらの記事を参照ください。
また、こちらの記事では「ConoHaにKUSANAGIをインストールしてWordPressサーバーを公開するまで」を一通り辿れます。