CentOS7 SSHデーモンのセキュリティ強化

インターネットサーバーの多くは、ssh/sftpでサーバーに接続します。
このsshは、OSをインストールしたときに有効になっていることが多いですが、そのため弱いセキュリティ設定のまま運用されている環境もあります。

今回は、このsshデーモンのセキュリティを強化する設定をしていきます。
本設定では、CentOS7を基本として設定していきます。Ubuntu Server LTSなど、他のディストリビューションの場合には、それぞれ設定ファイルの場所などを確認して設定をお願いいたします。

CentOSでは、次の場所に設定ファイルが保存されています。

/etc/ssh/ssh_config
/etc/ssh/sshd_conf

ssh_configは、サーバー上から他のシステムへssh接続するときの設定になります。
sshd_configは、sshデーモン(sshd)が接続を受ける場合の設定になります。

今回は、主にsshd_configを設定していきます。

基本的なセキュリティ設定

sshd_configで、最低限のセキュリティ設定を追加します。

SSHプロトコルのバージョン指定:必須

SSHでは、Protocol 1 と Protocol 2の2つの接続方式があります。
しかし、Protocol 1には、中間者攻撃の問題があるため、サーバーではProtocol 2のみ接続を受け付けるように設定します。

以下の設定を追加します。

Protocol 2

パスワード認証の無効化:必須

ユーザー名、パスワードによる認証では、脆弱なパスワードを設定していた場合簡単に侵入を許してしまします。

パスワード認証を無効にし、RSA鍵認証のみを受け付けるように設定を変更します。

PasswordAuthentication no

空のパスワードの拒否:必須

ほとんどのOSではインストール時点で無効になっていますが、空のパスワードでの接続を拒否する設定も追加します。

PermitEmptyPasswords no

rootユーザーのログインの禁止:必須

この設定もほとんどのOSではインストール時点で禁止になっていますが、以下の設定を追加し確実にrootユーザーでのログインをできないようにします。

PermitRootLogin no

接続するユーザーの制限

サーバーに接続するユーザーがわかっている場合、ログインするユーザーだけが接続できるように、ログインユーザーを制限します。

AllowUsers username

AllowUsersは以下のような記述ができます。

接続ユーザーを指定AllowUsers username
複数のユーザーを指定AllowUsers user1 user2
特定IPアドレスからユーザー指定AllowUsers user@ipaddress
特定IPアドレスから全ユーザー接続AlllowUsers *@ipaddress

SSH待ち受けポートの変更

SSHのプロトコル ポート22のままの場合、仕様で定義されていますのでポートスキャンですぐにssh接続が有効になっていることを検出されてしまいます。
このポート番号を、別のポート番号に変更することができます。

Port 10022

ポート番号を変更する場合には、0~1023までのWell-known Port以上の値を指定するのが望ましいです。ポート番号の最大値は 65535 となります。

ここまでで基本的な sshデーモン(sshd)の設定が完了となります。

さらに今となっては弱い暗号方式やハッシュアルゴリズムを無効にして対策する場合には、以下の設定を実施します。

弱い暗号を使用しないセキュリティ設定

sshデーモンの基本的な設定は完了していますが、sshでは接続で使用する暗号方式に設定も可能です。

OSで提供されているsshパッケージでは、今では問題が発見されている暗号方式をサポートしたままの場合がありますので、暗号方式を変更することで、よりセキュリティを強化することができます。

現在有効な暗号方式の確認

現在sshがサポートする暗号方式を確認するには、以下のコマンドを実行します。

# ssh -Q cipher

3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
aes192-ctr
aes256-ctr
[email protected]
[email protected]
[email protected]

この中で、CBCモード(Cipher BlockChaining)とRC4(arcfour)ならびに弱い暗号方式を無効にします。

RC4,CBCを無効にした暗号方式の設定

CBC と RC4を削除して、以下の暗号方式を残します。

使用する暗号方式が決まりましたので、/etc/ssh/sshd_config に以下の設定を追加します。

Ciphers [email protected], [email protected], [email protected], aes256-ctr,aes192-ctr,aes128-ctr

現在のハッシュアルゴリズムの確認

同様にsshで使用しているハッシュアルゴリズムを確認します。

#  ssh -Q mac
hmac-sha1
hmac-sha1-96
hmac-sha2-256
hmac-sha2-512
hmac-md5
hmac-md5-96
hmac-ripemd160
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

問題の確認されている MD5 と SHA1が有効になっています。

脆弱なハッシュアルゴリズムの無効化

標準で MD5 は SHA-1が有効になっていますので、問題の発見されているハッシュアルゴリズムを無効にします。

しかし、PuTTY の古いsshでは、sha1を無効にしてしまうとssh接続できなくなりますので、sha1(160bit)は、いちばん優先順位を低くして有効にしておきます。

以下の設定を/etc/ssh/sshd_config に以下の設定を追加します。

Macs [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected],[email protected],[email protected],hmac-ripemd160,[email protected],[email protected],hmac-sha1

この設定で古い暗号方式(RC4,CBC)とハッシュアルゴリズム(MD5)を無効にすることができます。

実際には、Firewallの組み合わせなどで接続元のIPアドレスの制限など追加の対策はありますが、ここまでの設定でsshdの認証・暗号の弱い部分の対策ができたことになります。

設定の検証と有効化

すべての設定が終わったら、以下のコマンドを実行し設定ファイルに問題がないことを確認し、sshdを再起動します。


# sshd -t
 (テストモードなので、問題なければ何も表示されません)
# systemctl restart sshd


お問い合わせはこちらから