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

ConoHa

前回は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 になる運用とします。

ユーザー作成

  1. 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
  2. SSH接続用ユーザ作成
    # useradd 【ユーザ名】
    # passwd 【ユーザ名】
    ユーザー 【ユーザ名】 のパスワードを変更。
    新しいパスワード:
    新しいパスワードを再入力してください:
    passwd: すべての認証トークンが正しく更新できました。
  3. SSH接続用ユーザを wheel グループに入れる
    # usermod -G wheel 【ユーザ名】

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

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

  1. 作業用ユーザに変更
    # su 【ユーザ名】
  2. ホームディレクトリに移動
    $ cd ~
  3. .sshディレクトリを作成
    $ mkdir .ssh
    $ chmod 700 .ssh
  4. 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]----+
    略
    +-----------------+
  5. id_rsa.pub を authorized_keys に名前変更
    $ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
  6. 本人以外読み取れないように設定
    $ chmod 600 ~/.ssh/authorized_keys
  7. 鍵を保存
    内容をテキストファイルにコピペして自分のPCに 【ユーザ名】.pem として保存

    $ cat id_rsa
  8. 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の画面で説明しますが、項目的にはオーソドックスです。

screenshot_20161126_221825

エントリー/コメント何でも良い
Server AddressサーバのIPアドレス
プロトコルSSH
Socket Port初期値 22
User Nameユーザ名
Passwordパスワード
SSH Identity Keyユーザ名に対応する.pemファイル
デフォルト文字セットUTF-8

ファイヤーウォール(firewalld)の設定変更

サーバー初回設定時はConoHaのコントロールパネル上でSSH, HTTP, HTTPSのみ許可する設定にしました。

しかし、コントロールパネルでは今回のようにSSHのポート番号を変更するといった、きめ細かな制御ができません。
APIを使えば制御できます。

ConoHa VPS 2.0 APIドキュメント|ConoHa API Documantation

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

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

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

とします。

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

ファイヤーウォール起動

# systemctl start firewalld.service

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

  1. 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.
  2. enabledになっていることを確認
    # systemctl list-unit-files | grep firewalld
    firewalld.service enabled

 

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

  1. SSH接続用ポートの開放
    sshdに設定したポート番号を指定します(今回例では55555)。

    # firewall-cmd --add-port=55555/tcp
    success
    # firewall-cmd --permanent --add-port=55555/tcp
    success
  2. 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にwordmoveをインストールする
KUSANAGIにwordmoveをインストールするための手順です。

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

KUSANAGIを設定してWordPressを立ち上げる
ConoHa上のKUSANAGIを初期設定することでWordPressブログを公開できる状態にします。 大まかな段取り:①初期設定②プロビジョニング③WordPressのインストール

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

ConoHaとKUSANAGIで月々630円の格安WordPressサーバを作る方法
ConoHaにKUSANAGIをインストールしてWordPressサーバを立ち上げるときの手順を一通り解説します。 このページが連載の目次ですので、ブックマークするならこのページをおすすめします。
タイトルとURLをコピーしました