二度目の人生リセット

ジェネラリストをめざすポンコツWebエンジニアの戯言

SSH の設定でセキュリティ強化 for お名前.com VPS

SSH のポート番号を変更しても意味がない

VPS 初心者向けに初期設定の手順を公開しているサイトの多くが「セキュリティー強化のため SSH の Port は10022 に変更」と書かれていますがほぼ無意味である。数分程度の時間稼ぎは出来ると思いますが 0 から 65535 のポートすべてをスキャンすれば SSH のポートは判別可能。結論は SSH の Port はデフォルトの 22 のままで良いということ。

じゃぁ、不正アクセスの対策はどうすればいいかというと…。

  • SSH 接続は鍵認証方式(2048 bit以上推奨)のみ受け入れる
  • root での SSH 接続は拒否する
  • iptables で 接続可能なホストを指定する(固定IP推奨)
  • Fail2Ban などの不正アクセス対策ツールを導入

この4つを実践するだけで不正アクセスを大幅に防げます。

開発用の一般ユーザーを準備

一般ユーザーを作成 for お名前.com VPS を参考にユーザーを作成する。

鍵認証方式の準備

ここからは Mac OS X での作業を前提とする。Windows を利用している場合は下記のサイトを参考に設定する。

  SSH接続の設定変更方法|さくらのVPS|さくらインターネット公式サポートサイト

公開鍵と秘密鍵の生成(Mac

Mac で 公開鍵と秘密鍵を生成する場合は ssh-keygen コマンドで作成する。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxxxx/.ssh/id_rsa): onamae_rsa # ファイル名を指定
Enter passphrase (empty for no passphrase): # パスワード入力
Enter same passphrase again: # パスワード入力(確認用)
Your identification has been saved in onamae_rsa.
Your public key has been saved in onamae_rsa.pub.
The key's randomart image is:
+--[ RSA 2048]——+
    :
    : (省略)
    :
+-----------------+

鍵ファイルの確認(Mac

$ ls -al ~/.ssh
total 184
    : (省略)
-rw-------   1 xxxxxxx  staff   1766  8 21 20:14 onamae_rsa
-rw-r--r--   1 xxxxxxx  staff    426  8 21 20:14 onamae_rsa.pub

公開鍵である onamae_rsa.pub秘密鍵である onamae_rsa が作成される。

公開鍵の保存場所を作成(CentOS

公開鍵を保存するための .ssh ディレクトリを作成する。

$ mkdir ~/.ssh

公開鍵をサーバーに転送(Mac

サーバーにファイルを転送する場合は scp コマンドを使って送信する。

$ scp ~/.ssh/onamae_rsa.pub sample@[ host name ]:~/.ssh/
sample@[ host name ]'s password:
onamae_rsa.pub                              100%  426     0.4KB/s   00:00

公開鍵のファイル名を変更(CentOS

SSH の設定時に全ユーザー共通のファイル名にしないといけないので変更する。

$ mv ~/.ssh/onamae_rsa.pub ~/.ssh/authorized_keys

~/.ssh と authorized_keys のパーミッションを変更

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

鍵認証方式で SSH 接続できるように設定を変更

SSH の設定ファイルを変更(CentOS

SSH の設定ファイル「/etc/ssh/sshd_config」を編集する。

# vim /etc/ssh/sshd_config

RSA 認証関連を有効化

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
    :
    : (省略)
    :
-#RSAAuthentication yes
+RSAAuthentication yes
-#PubkeyAuthentication yes
+PubkeyAuthentication yes
-#AuthorizedKeysFile     .ssh/authorized_keys
+AuthorizedKeysFile     .ssh/authorized_keys

SSH の再起動(CentOS

SSH を再起動する場合は service コマンドの restart を実行する。

# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

鍵認証方式で SSH 接続できるかを確認(Mac

ssh コマンドの -l オプションでユーザー名を指定、 -i オプションで秘密鍵を指定する。

Mac の場合は作成した鍵のパスワードを訪ねてきます。以降、パスワード入力を省略したい場合はチェックボックスにチェックを入れて接続すれば良い。

$ ssh [ host name ] -i ~/.ssh/onamae_rsa -l sample
Identity added: /Users/macuser/.ssh/onamae_rsa (/Users/macuser/.ssh/onamae_rsa)
Last login: Thu Aug 21 19:30:50 2014 from [ client ip address ]
[sample@[ host name ] ~]$

SSH のパスワード認証を拒否

SSH の設定ファイルを変更(CentOS

SSH の設定ファイル「/etc/ssh/sshd_config」を編集する。

# vim /etc/ssh/sshd_config

パスワード認証を拒否

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
    :
    : (省略)
    :
-asswordAuthentication yes
+asswordAuthentication no

SSH の再起動(CentOS

SSH を再起動する場合は service コマンドの restart を実行する。

# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

パスワード形式で SSH 接続が拒否されるか確認(Mac

新たに hoge をいうユーザーを作成しパスワード認証で SSH 接続できるかを試すもログインできず。

$ ssh [ host name ] -l hoge
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

鍵認証方式を使ってログインできるか確認(Mac

sample ユーザーを利用して 鍵認証方式でログインする。

$ ssh [ host name ] -i ~/.ssh/onamae_rsa -l sample
Last login: Thu Aug 21 19:57:23 2014 from [ client ip address ]
[sample@[ host name ] ~]$

root での SSH 接続を拒否

鍵認証方式を使って root で SSH 接続できるか確認(Mac

$ ssh [ host name ] -i ~/.ssh/onamae_001.key -l root
Last login: Thu Aug 21 19:57:23 2014 from [ client ip address ]
[root@[ host name ] ~]#

SSH の設定ファイルを変更(CentOS

SSH の設定ファイル「/etc/ssh/sshd_config」を編集する。

# vim /etc/ssh/sshd_config

パスワード認証を拒否(CentOS

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
    :
    : (省略)
    :
-# PermitRootLogin yes
+PermitRootLogin no

SSH の再起動(CentOS

SSH を再起動する場合は service コマンドの restart を実行する。

# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

鍵認証方式を使ってログインできないか確認(Mac

$ ssh [ host name ] -i ~/.ssh/onamae_001.key -l root
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

所感

鍵認証に必要な鍵の作成や SSH の設定がめんどくさいかもしれないがセキュリティを担保するためには必須の作業だと思います。慣れれば15分程度で終わるので絶対に行いましょう。

複数のマシンで秘密鍵を利用する場合には USB メモリーなど紛失する恐れのある媒体ではなく Google DriveDropbox などのクラウドストレージに暗号化を施して保管していれば問題ないかと思います。