Operations Lab.

SSH で root のみ公開鍵認証を強制する

with one comment

OpenSSH (sshd)を使用している場合、セキュリティを考慮して root での直接ログインを拒否(禁止)している事が多いかと思います。

基本的には(かつ、個人的には)root で直接 SSH ログインさせることはありえないと思っていますが、一部の運用管理ソフトウェア(ミドルウェア)は root で SSH ログインできることが動作条件となっており、どうしても root の SSH ログインを許可しなければならない場合があります。

SSH のログイン認証としては、パスワード認証の他に秘密鍵(private key)と公開鍵(public key)を使用した鍵認証(公開鍵認証 / public key authentication)を使用することができます。(それ以外にも様々な方式が利用できますが、ここではパスワード認証を公開鍵認証に焦点を絞ります。) 公開鍵認証を使用すると秘密鍵を保持している人しか認証をパスできなくなる為、パスワード認証よりは安全に利用することができます。

OpenSSH では認証方式ごとに利用するかどうかを設定できます。root ユーザーを含む全てのユーザーについてパスワード認証を拒否して公開鍵認証のみを使用する場合は、以下の設定を行います。

# rootユーザーのログインを許可する
PermitRootLogin yes

# パスワード認証を拒否する
PasswordAuthentication no

# チャレンジレスポンス認証を拒否する
ChallengeResponseAuthentication no

# SSHプロトコル ver.1 で公開鍵認証を許可する
# ver.1 を使用する場合のみ設定(ここではコメントアウト)
#RSAAuthentication yes

# SSHプロトコル ver.2 で公開鍵認証を許可する
PubkeyAuthentication yes

# PAMを使用する
UsePAM yes

このように設定を行うと、root を含めた全てのユーザーに対して公開鍵認証を強制できます。しかし、既に運用を行っている環境では全てのユーザーに公開鍵認証を強制することが難しい場合もあります。

sshd_config で指定する PermitRootLogin には、yes (許可)と no (拒否)以外の値を設定することができます。

PermitRootLogin

Specifies whether root can log in using ssh(1).  The argument must be “yes”,“without-password”, “forced-commands-only” or “no”.  The default is “yes”.

If this option is set to “without-password” password authentication is disabled for root.

If this option is set to “forced-commands-only” root login with public key authentication will be allowed, but only if the command option has been specified (which may be useful for taking remote backups even if root login is normally not allowed).  All other authentication methods are disabled for root.

If this option is set to “no” root is not allowed to log in.

man 5 sshd_config で sshd_config のマニュアルを読むと分かりますが、without-password を指定することで root のみパスワード認証を拒否することができます。パスワード認証以外の認証方式として公開鍵認証のみが許可されていれば、結果として、

  • root のみ公開鍵認証を強制(パスワード認証でのログインは拒否)
  • 一般ユーザーはパスワード認証及び公開鍵認証の両方が利用可能

といった状態に設定できます。

# rootユーザーのログインはパスワード認証以外のみ許可する
PermitRootLogin without-password

# パスワード認証を許可する(rootユーザー以外に適用)
PasswordAuthentication yes

# チャレンジレスポンス認証を拒否する
ChallengeResponseAuthentication no

# SSHプロトコル ver.1 で公開鍵認証を許可する
# ver.1 を使用する場合のみ設定(ここではコメントアウト)
#RSAAuthentication yes

# SSHプロトコル ver.2 で公開鍵認証を許可する
PubkeyAuthentication yes

# PAMを使用する
UsePAM yes

ちなみに、root ユーザーの認証方式を厳密に(公開鍵認証のみに)制限したい場合は、without-password ではなく、forced-commands-only を使用した方が良いでしょう。forced-commands-only を指定した場合は、SSH 公開鍵側で指定した(許可した)コマンドのみが実行できるようになります。同時に、公開鍵認証以外の認証方式では(rootユーザーは)ログインできなくなります。

広告

Written by kazu

2013/04/11 @ 13:34

カテゴリー: Linux

Tagged with , , ,

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. […] SSH で root のみ公開鍵認証を強制する […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。