Top

ドメイン名入門
入門ガイド
管理ガイド基礎
[Email]
[FTP]
[Web]
[Ports]
[Shell]
[User]
[iManager]
[CPX]
[Webmin]
管理上級編
  安全性を高める
  サービスの管理
  daily run output
  v2カスタマイズ
  カスタマイズと
  システムファイル
  Perl
    Perl5 Module
    Perl5
  Java



v3
Top
v3
Start
v3
Email
v3
Ftp
v3
Web
v3
Ports
v3
Shell
v3
User
v3
Perl
v3
Java
v3
System
v3
CPX


Root アクセスの安全性を高める

本ページは 2008-04-01 更新されました


vps サーバーでは、スタンドアローンの FreeBSD,Linux サーバーと同様、root 権限での利用が可能です。
これによりユーザーには、強大なパワーと自由度が与えられますが、これは同時に、ユーザーの責任の拡大も意味します。
特にサーバー管理とセキュリティーには十分な注意を払う必要があります。

他の Unix,Linux 系サーバーと同様に vps サーバーのセキュリティーを高める上で一番大切なことは root ユーザー (スーパーユーザー) 権限への不正なアクセスをできなくすることです。
ここでは、root ユーザー権限への SSH 等でのアクセスの安全性を高める方法に付いて記述しています。

基本条件

  • root ユーザーあるいは管理ユーザーは、安全が保証された ssh, scp, sftp, SSL 利用の iManager 以外でのサーバーへのアクセスを行なわない。
  • root ユーザーと管理ユーザーのパスワードは十分強固なものにする。
    (容易に類推できるものは絶対に避けてください。)
    特に、root ユーザーのパスワードに付いては十分な注意が必要である。
    パスワードの強化に付いては、以下を参照ください。
    http://www.speedex.ne.jp/support/v3/basic/admin/users/passwords.html
  • root ユーザーと管理ユーザーの情報管理を厳重にする。
  • 本当に権限が必要なユーザー以外には shell 権限を与えない。
    shell 権限のあるユーザーは、安全が保証されたプロトコル以外の方法でのサーバーへのアクセスを行なわない。

安全強化策 1: root ユーザーでのログインを不能にする

この対策では、root ユーザーでのネットワーク経由の shell ログインを不能にします。
root ユーザーでの shell アクセスは (wheel group に属する) 管理ユーザーでログインした後 'su' あるいは 'sudo' を実行する方法を取ることになります。

1. /etc/group ファイルで管理ユーザー権限を設定する

wheel group に所属するユーザーは shell 上で 'su' あるいは 'sudo' を実行し root ユーザー権限を取得することができます。
vps サーバーではデフォルトで管理ユーザーは wheel group に所属しています。
そのため以下は、管理ユーザーを追加する場合のみ行ってください。

root ユーザー権限で /etc/group ファイルを編集し、管理ユーザーに追加したいユーザー名を wheel group に追加します。
以下の例では、larry, moe, curly が管理ユーザーです。

wheel:*:0:root,larry,moe,curly

2. sshd でネットワーク経由の root ログインを不能に設定する

root ユーザー権限で 以下を実行します。
(vps サーバーのオーダー時期によっては、デフォルトで設定済みです)

  • /etc/ssh/sshd_config ファイルを編集し、PermitRootLogin 行を以下の様に設定します。
    PermitRootLogin no
  • sshd サーバーを再起動します。
    以下のコマンドで可能です。
    kill -HUP `cat /var/run/sshd.pid`

上記が完了すると、管理ユーザーでログインし 'su' コマンドを実行し、root のパスワードを入力することで、root ユーザー権限を獲得できます。
以下のようにして確認してください。

admin$ su

Password:

root# id

uid=0(root) gid=0(wheel) groups=0(wheel), 2(kmem), 3(sys), 4(tty), 5(operator), 20(staff), 31(guest)

wheel group に追加するユーザーは、root ユーザー権限を与えるユーザーに限定してください。

su プログラムは、root ユーザー権限を与えるか与えないかのみを行ないます。
また、root ユーザーのパスワードも要求されます。
vps サーバーにデフォルトでインストール済みの、sudo プログラムでは、よりきめ細かなことが可能です。
sudo では管理ユーザーが使えるコマンドは限定されますが、root ユーザーのパスワードは必要ありません。
sudo では、管理ユーザーは予め決められたコマンドのみを、root ユーザー権限で実行できるのです。

vps サーバーの sudo デフォルト設定では権限を 2 クラスにわけています。
設定ファイルは /usr/local/etc/sudoers です。

管理ユーザー (group wheel): vadduser や edquota 等のサーバー管理コマンドが実行できます。

web 管理ユーザー (group webadmin): restart_apache や apachectl 等の web サーバー管理に限定されたコマンドが実行できます。

管理ユーザーが vadduser コマンドを実行する場合は以下のようにします。

admin$ sudo vadduser

上記により、root ユーザーにならなくても、直接 vadduser コマンドを実行できます。

詳細情報は、/usr/local/etc/sudoers.sample ファイル、あるいは以下のマニュアルページを参照ください。
sudo(8), sudoers(8), visudo(8)

安全強化策 2: SSH 認証キーでアクセスする

このアクセス方法では、ssh によるネットワーク経由の root ログインは可能ですが、パスワードによる認証ではなく公開鍵・秘密鍵による認証となります。
この方法を取るとパスワードによるネットワーク経由の root ログインはできなくなりますが、安全強化策 1 のアクセス方法は併用できます。

以下の手順に従ってください。

1. 公開鍵・秘密鍵を作成する

先ず、公開鍵・秘密鍵のセットを作成します。
ここでは FreeBSD のデフォルトである OpenSSH を使って鍵のセットを作成しています。
SecureCRT のような Windows 版の SSH クライアントも鍵のセットを作成できます。
詳細はクライアントプログラムのマニュアルを参照してください。

以下のコマンドを実行します。これは root 権限は必要ありません。

> ssh-keygen -t dsa

このコマンドの実行により、公開鍵 (.pub) と秘密鍵の二つのファイルが作成できます。
FreeBSD 上の OpenSSH によるデフォルトは以下の名称です。

id_dsa ---- 秘密鍵

id_dsa.pub ---- 公開鍵

鍵の作成中にパスフレーズの入力要求があります。これは公開鍵が不正に使われることを防ぐためです。
パスフレーズはパスワードと同様に強固なものでなければなりません。
パスフレーズを強固にする方法は以下ページを参照してください。
http://www.speedex.ne.jp/support/v3/basic/admin/users/passwords.html

2. 秘密鍵をクライアント側に保管する

秘密鍵は外部からはアクセスできず、ssh クライアントプログラムがアクセスできる場所に保管する必要があります。
従ってその位置は、ssh クライアントプログラムによって異なります。
クライアントプログラムのマニュアルで位置を確認してください。
FreeBSD で作成された秘密鍵は、デフォルトでは $HOME/.ssh/id_dsa にあります。

3. 公開鍵を vps サーバーにコピーする

次に、公開鍵を vps サーバーにコピーします。
root ユーザー権限で以下のファイルを編集します。
ファイルディレクトリーが存在しない場合は作成してください。

/root/.ssh/authorized_keys

公開鍵ファイルの内容を authorized_keys ファイルにコピーペーストします。
公開鍵は 1 行でなければなりません。改行されていると正しく機能しません。
authorized_keys ファイルには 1 行 1 公開鍵で、複数の公開鍵を登録できます。

4. sshd root ユーザーのパスワードによるアクセスを不能にする

root ユーザー権限で /etc/ssh/sshd_config ファイルを編集し PermitRootLogin の指定を以下のようにします。

PermitRootLogin without-password

sshd を再起動します

特に記載されている以外の上記作業及びアクセスのテストは全て root ユーザー権限で行なう必要があります。
root ユーザーであることを確認のうえ作業してください。

設定が正しく行われると、公開鍵が root の authorized_keys ファイルに登録されているユーザーはパスワードではなく鍵を作成したときに決めたパスフレーズで vps サーバーに ssh でログインできます。

Virtual サーバー間で、SSH 認証キーを使ってアクセスする場合

上記「安全強化策 2」に加えて以下を行なってください。

1. アクセスするサーバー側での作業

以下のようにして、アクセスするサーバー側の公開鍵を、アクセスするサーバー側の authorized_keys ファイルに追加します。

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

2. アクセスされるサーバー側での作業

/etc/ssh/sshd_config ファイルに以下変更を行います。
コメントアウトされている場合は # を外します。

Protocol 2,1

PermitRootLogin without-password

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys



ChallengeResponseAuthentication yes

#ChallengeResponseAuthentication no

3. passphrase の入力を不要にする

アクセスするサーバー側で以下を実行します。

/> eval `ssh-agent`

Agent pid ******

/> ssh-add /home/account_name/.ssh/id_dsa

Enter passphrase for /home/account_name/.ssh/id_dsa: 

Identity added: /home/account_name/.ssh/id_dsa (/home/rms2/.ssh/id_dsa)

上記により、以降、以下のように passphrase 入力なしでログインできます。

/> ssh -2 root@server_name

Last login: Mon Nov 22 10:56:07 2004 from client_server_name.

Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994

        The Regents of the University of California.  All rights reserved.

FreeBSD 4.7-RELEASE-p27 (VKERN) #38: Thu Aug 26 17:44:26 MDT 2004



server_name ~#
SPEEDEX サポートポリシー

Copyright @ Cyber Vision Hosting Co., Ltd. All rights reserved.


株式会社サイバービジョンホスティング提供サービス一覧
再販売用レンタルサーバーのSPEEDEX | VPS(仮想専用サーバー) | 共用サーバー | 独自ドメイン取得・運用 | SSLサーバー証明書 | ワイルドカードサーバー証明書 | SEO | Google Apps(TM) | クリエイティブワークの検索エンジン