SSHでログインできるユーザを制限する方法

文:Vincent Danen(TechRepublic) 翻訳校正:原井彰弘
2008-02-12 16:00:00
  • このエントリーをはてなブックマークに追加

 OpenSSHスイートはOpenBSDプロジェクトによって開発されているツール群で、実用性の高い有名なプログラムが複数含まれている。しかし、このプロジェクトに含まれているSSH機能は、人気がある上にほぼすべてのOSでサーバとしてもクライアントとしても利用可能なため、格好の攻撃対象となってきた。そのため、それらの攻撃の中でもよくある「力ずくの攻撃」に対処しようと数多くのツールが開発されてきた。

 しかしながら、一般的にそのような攻撃は、単なる嫌がらせやログファイルを浪費させる行為に過ぎないことも多い。まずはログインできるユーザを明示的に設定することで、システムの実際の安全性とは関係なく、そのような「力ずくの攻撃」を99パーセント防ぐことが可能なのだ。

 設定を行うに当たって最初にすべきことは、どうしても必要な場合を除いて絶対にrootがSSHからログインできないようにすることだ。また、どうしても必要な場合には、常にSSHのキーを用いてログインさせるようにし、決してパスワードによるログインを許可しないことである。この設定を行うには、/etc/ssh/sshd_config(システムによっては/etc/sshd_configの場合もある)を編集して以下の行を追加する。

PermitRootLogin without-password

 この設定を行うと、rootのログインは許可されるものの、ログインを行うには適切なSSHのキーが必要とされるようになる。この方法を用いる場合には、キーの一方であるパブリックキーを/root/.ssh/authorized_keysに保存しよう。

 続いて、ログイン可能なユーザを明示的に定義する。再びsshd_configファイルを編集し、以下のような行を追加しよう。

AllowUsers root

AllowUsers joe

 この設定では、SSHを介したログインを認めるユーザとしてrootとjoeのみを指定している。ここで注意して欲しいことは、AllowUsersオプションを一つでも有効にすると、そこに指定されていないユーザは一切ログインできなくなってしまうということだ。つまり、PermitRootLoginが設定されていたとしても、「AllowUsers root」を設定せずに「AllowUsers joe」だけを設定してしまった場合は、正しいキーを用いてもrootはログインできなくなってしまうのである。この設定の一覧を念入りに確認し、システムへアクセスする必要がなくなったユーザが削除されていることを確認して欲しい。

  • コメント(1件)
#1 hchonan   2008-02-12 16:40:52
間違っていることを書いているわけではないのですが、記述している内容については脇が甘いのではないでしょうか。

Brute Force を防ぐためには全面的にパスワード認証を使用せず、公開鍵認証を行うことで100%防ぐことができます。

PasswordAuthentication no
PubkeyAuthentication yes

また、rootでのログインについてもSSHで直接ログインすることを許すことよりも、su や sudo にて権限を昇格させるほうがより安全といえるでしょう。この記事の事例では、AllowUsers は

AllowUsers joe

だけで十分で、root権限が必要な場合は必要に応じてjoeにsuやsudoを行う権限を付与すべきです。
  • 新着記事
  • 特集
  • ブログ