KUSANAGIにSSHでつなぐためにセキュリティを強化する

全体のインストール手順は👇を参照ください。

前回はKUSANAGIのセットアップとWordPressをインストールしてブログを公開できる状態まで持っていきました。

今回はKUSANAGIのリモート操作環境を準備します。

これで好きなターミナルソフトでKUSANAGIにアクセスできるようになります。
(いつまでもコンソール画面のスクリーンショットを取るのは大変ですし…(^^ゞ)

SSH接続できるようにするのと同時にSSHポートのセキュリティを強化します。

もくじ(押すと各章に飛ぶ)

作業目的

作業目的は2点です。

  1. ターミナルソフトでサーバにリモート接続できるようにする
  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 になる運用とします。

ユーザー作成

STEP
wheel グループが root になれようにする

/etc/pam.d/su を開いて、

# vim /etc/pam.d/su

コメントを外す。

#auth required pam_wheel.so use_uid
↓
auth required pam_wheel.so use_uid
STEP
SSH接続用ユーザ作成
# useradd 【ユーザ名】
# passwd 【ユーザ名】
ユーザー 【ユーザ名】 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
STEP
SSH接続用ユーザを wheel グループに入れる
# usermod -G wheel 【ユーザ名】

SSH接続用ユーザのSSH鍵を準備する

リモートログイン用のSSH鍵を作成します。

STEP
作業用ユーザに変更
# su 【ユーザ名】
STEP
ホームディレクトリに移動
$ cd ~
STEP
.sshディレクトリを作成
$ mkdir .ssh
$ chmod 700 .ssh
STEP
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]----+
略
+-----------------+
STEP
id_rsa.pub を authorized_keys に名前変更
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
STEP
本人以外読み取れないように設定
$ chmod 600 ~/.ssh/authorized_keys
STEP
鍵を保存

内容をテキストファイルにコピペして自分のPCに 【ユーザ名】.pem として保存

$ cat id_rsa
STEP
root に戻る
$ exit

SSHデーモン(sshd)の設定変更

設定ファイルの修正

/etc/ssh/sshd_config を開き、

# vim /etc/ssh/sshd_config

以下の設定をします。
項目自体は元からあり、コメントアウトしてゆくだけです。

変更箇所
ポートを55555にする
#Port 22
↓
Port 55555

22以外なら何でも良いです。
自由に振って良い範囲はだいたい5万番以降です。

変更箇所
SSH2をON
#Protocol 2
↓
Protocol 2
変更箇所
rootログイン禁止
#PermitRootLogin yes
↓
PermitRootLogin no

コンソール(ConoHaの管理画面)からならrootログインできます。

変更箇所
公開鍵接続可能にする
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes
変更箇所
パスワードログインを禁止
PasswordAuthentication yes
↓
PasswordAuthentication no

さいごに、sshdを再起動します。

systemctl restart sshd.service

動作確認

RLoginで下記2点を確認します。

  1. 新しく作ったユーザとSSH鍵の組み合わせで55555ポートにつながること
  2. 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を使えば制御できます。

が…うん、覚えるの面倒臭え。画面無いと無理。

そこで、とりあえずはインフラ側ではなくサーバ側でファイヤーウォール制御することにします。
手順は切り替え中にセキュリティが手薄にならないよう、

  1. サーバ側ファイヤーウォールを起動
  2. インフラ側ファイヤーウォールを全開放

とします。

格安ケチケチサーバ的にはインフラ側で処理してもらえばリソースが浮くので、ゆくゆくはAPIで設定したいと思います。

ファイヤーウォール起動

# systemctl start firewalld.service

また、OS起動時にファイヤーウォールを自動起動するように設定しておきます。

STEP
systemdのフラグを立てる
# 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.
STEP
enabledになっていることを確認
# systemctl list-unit-files | grep firewalld
firewalld.service enabled

SSH接続用ポートの切り替え

STEP
SSH接続用ポートの開放

sshdに設定したポート番号を指定します(今回例では55555)。

# firewall-cmd --add-port=55555/tcp
success
# firewall-cmd --permanent --add-port=55555/tcp
success
STEP
SSH標準ポートの閉鎖
# 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に制限

という状態にします。

screenshot_20161126_222518

連載目次

次はKUSANAGIにwordmoveをインストールします。

KUSANAGIのインストール手順の全体はこちらの記事を参照ください。

また、こちらの記事では「ConoHaにKUSANAGIをインストールしてWordPressサーバーを公開するまで」を一通り辿れます。

お役に立てたらシェアお願いします(^O^)/
  • URLをコピーしました!
もくじ(押すと各章に飛ぶ)