
第1回 インストール直後に絶対やるべき作業と設定
大貫大輔
株式会社ラック
不正アクセス対策事業本部
2001/8/18
ユーザーとアカウントの管理および認証方式
■アカウントおよびパスワードの管理
ここで重要なことは、不要なアカウントを作成しないようにすることです。管理者が1人であれば、当然1つで十分です。管理者が変わったときなどは、すぐに前管理者のアカウントを削除し、rootのパスワードも変更しましょう。当然のことながら推測されてしまいそうな簡単なパスワードを設定するようなことは絶対にやめましょう。
また、アプリケーションを起動するための専用のユーザーを作ることがあるかと思います。SMTPサービスを提供するのに最近使われるようになってきたqmailでは、専用のユーザーとグループを作る必要があります。このアカウントの作成に際してuseraddコマンドを使うのは問題ないのですが、必ずsオプションを指定して/bin/falseなどにするようにしましょう。
# /usr/sbin/useradd -u 10001 -g 10002
-s /bin/false hoge |
sオプションを指定しないと勝手に「/bin/bash」にされて、何らかの原因(セキュリティホールなど)によりこのアカウントでログインされるとシェルを起動してしまいます。sオプションで/bin/falseのようにシェルを架空のものにしておけば、このアカウントでログインを許してしまったとしてもシェルが起動できないため、コマンドが実行される恐れはありません(注)。
| 注:これでも、直接シェルが起動されてしまうようなバッファオーバーフロー系の攻撃にはあまり意味を持ちません。ただし、デーモンをrootで起動するよりは安全といえます。 |
■シャドウパスワード
/etc/passwdファイルは、恐らく以下のような記述になっているものと思います。
hoge:x:1000:1000:hoge:/home/hoge:/bin/bash
|
コロン(:)で区切られたフィールドは、それぞれ以下のような意味を持っています。
アカウント名:暗号化されたパスワード:ユーザーID:グループID:フルネーム:ホームディレクトリ:シェル
|
「暗号化されたパスワード」を格納する2つ目のフィールドは「x」になっていると思います。これは、シャドウパスワードが有効になっているからです。最近のディストリビューションでは、インストール時にこの機能を有効にするか聞かれるのでぜひ有効にしましょう。シャドウパスワードが有効になっていると、/etc/passwdのパスワードフィールドは上記のように「x」に置き換わり、暗号化されたパスワードはrootしか見ることのできない/etc/shadowファイルに記録されます。
シャドウパスワードを無効にした場合、暗号化されたパスワードはだれでも読むことができる/etc/passwdに保存されます。パスワードがだれにでも見られるようになっていると、パスワードクラッキングソフトを使って簡単にパスワードを推測されてしまいます。
■MD5暗号化パスワード
この機能もシャドウパスワードと同じく、インストール時に使用するかどうかを聞かれます。Linuxでは、この機能を有効にしなくてもcrypt()によりパスワードを暗号化します。
UNIXの場合、デフォルトの暗号化アルゴリズムはDESが使われていますが、DESには入力文字列長に8文字という制限があります。しかし、MD5ではこの制限がなくなります。つまり、8文字以上のパスワードを設定できるようになります。当然ながら、文字数が多ければそれだけ暗号化パスワードを解読するのが困難になります。
この機能を生かすためにも、8文字以上のパスワードを設定しましょう(注)。
| 注:MD5だからといって、DESよりパスワードクラックからの脅威が大きく軽減されるわけではありません。MD5で暗号化しても、8文字以下のパスワードを設定してしまえばDESと差はありません。 |
■rootになれるユーザーの制限
デフォルトの設定では、suコマンドを実行してパスワード認証をクリアすればだれでもrootになれます。これはセキュリティ上好ましくありません。そこで、suコマンドでrootになれるアカウントを制限するように設定します。
まず、/etc/login.defsファイルの編集が必要です。このファイルを開いたら、以下の1行を追加します。
SU_WHEEL_ONLY yes
|
次に/etc/groupファイルのwheelの行を修正します。ここでは、例としてrootになれるアカウント名を「user」に限定することにします。もし、user以外のアカウントにもrootになることを許可するのであれば、カンマで区切って列挙します。
wheel:x:10:root,user |
さらに、上記の設定を有効にするため/etc/pam.d/suファイルに以下の行を追加します。
auth required /lib/security/pam_wheel.so
use_uid group=wheel |
これで、suコマンドでrootになれるアカウントはuserのみとなります。
■rootアカウントでのリモートログインの不許可
リモートからLinuxマシンのメンテナンスを行うときは、ssh以外使わないようにします。しかし、sshのデフォルト設定はrootアカウントでのログインを許可してしまいます。そこで、rootアカウントでは直接ログインできないようにsshの設定ファイルを変更します。こうすることで、sshによる認証とsuコマンドによる認証の2段階を経なければrootになれないようになり、セキュリティを強化できます。
まず、/etc/ssh/sshd_configファイルをviを使って変更します。
# vi /etc/ssh/sshd_config |
このファイルの18行目あたりに以下のような記述があります。
PermitRootLogin yes |
これを無効にするため「yes」を「no」に変更して、
PermitRootLogin no |
設定ファイルの変更を反映させるためにsshデーモンをreloadします。
# /etc/rc.d/init.d/sshd reload |
reloadしたら、正しく機能するか確認してみましょう。
# ssh -l root localhost |
設定が反映されると、正しいパスワードを入力してもrootアカウントではログインできません。
■PAMについて
ここでPAM(Pluggable Authentication Modules)についてもお話ししておく必要があるでしょう。PAMを一言でいうと、認証方式を一括管理しているプログラムです。以前はアプリケーションごとに何種類もの認証方式があり、その認証方式の変更には再コンパイルが必要でした。しかし、PAMを用いることで、認証方式の変更のみであればPAMの設定ファイルを編集するだけで済むようになります。最近のディストリビューションであればPAMに対応しています。
Red Hat Linux 7.1Jの場合、PAMの設定ファイルは/etc/pam.dディレクトリに、プログラムごとに用意されています。
| chfs | ftp | login | passwd | rexec | rsh | sshd | sudo |
| chsh | kbdrate | other | ppp | rlogin | smtp | su | system-auth |
これらがすべて必要というわけではありません。例えば、/etc/pam.dディレクトリの中にrlogin用の設定ファイルがあります。現在の設定では、このサービスは停止していると思いますが、これが提供されていると仮定してみます。この状態でloginで接続要求があると、Linuxは以下のような動作をします。
- まず最初に/etc/pam.d/rloginファイルを探す
- /etc/pam.d/rloginがなければ/etc/pam.d/otherファイルを参照する
- otherファイルには認証を拒絶する設定が記述されているのでPAMが認証を拒否する
つまり、/etc/pam.dディレクトリに該当するサービス用のファイルが用意されていなければ、うっかり不要なサービスを提供していたとしても接続を拒否できるというわけです。よって、危険なサービスに関する設定ファイルについてはファイル名を変更してしまいましょう。ここでいう危険なサービスとは、rsh、rexec、rloginの3つになります。
# mv rsh .rsh |
このように、mvコマンドを利用してドットファイルにしてしまいましょう。
| 次回予告 次回は、ファイルシステムのセキュリティおよびinetd+TCP_Wrapper、xinetdによるアクセス制御などについて解説します。掲載は9月中旬の予定です。 |
|
3/3
|
|
|
||||||
|
||||||
| 連載 ゼロから始めるLinuxセキュリティ |
| Linux Squareフォーラム セキュリティ関連記事 |
| 連載:習うより慣れろ! iptablesテンプレート集(全4回) 初心者にとって、iptablesは難しい。そこで、学習の第1歩としてテンプレートを自分の環境に適応させることから始めよう |
|
| 連載:ゼロから始めるLinuxセキュリティ(全11回) 奥が深いセキュリティ対策の世界をゼロから解説。ホストレベルのセキュリティからファイアウォール、IDSの構築、ログ管理方法まで、システム管理者必見 |
|
| 特集:WebDAV時代のセキュリティ対策[前編] WebDAVのメソッドは便利な反面、セキュリティホールとなり得る。しかし、適切な対策を講じることでメソッドの危険性は取り除くことができる |
|
| 特集:FreeS/WANによるIPSecの導入と運用[前編] LinuxでIPSecを利用するには、「FreeS/WAN」というIPSecスタックを用いることになる。まず、これをインストールすることから始めよう |
|
| 特集:Linux以外のIPSecスタックとの相互接続[前編] 別のOSや異なるIPSecスタックとの相互接続が可能なら、その用途は大幅に広がる。前編では、FreeBSDのKAMEと相互接続を試みる |
|
| 特集:sshでセキュアネットワーク サーバにリモートログインする場合は、暗号化して転送するsshを使おう。sshをサーバとクライアントにインストールすれば、インターネット上でも安全な通信が可能になる |
|
|
TechTargetジャパン
- 新しい記事も入っていて安心しました (2012/2/7)
Linux Squareのアクセスランキングを公開します。定番の記事ばかりでなく、連載中の記事もよろしくお願いいたします - エラーメッセージをどう扱うか? (2012/2/2)
今回は、スクリプト実行時にエラーが発生したことを知らせるメッセージの扱い方を説明します - ファイルのアップロードを制限する (2012/1/30)
HTTPクライアントがアップロードしてくるファイルの扱いについて解説します。そもそも受け入れる必要があるのか? ということのほかにも、いろいろ設定が必要です - OSに付属するシェルスクリプトを読んで技術を盗む (2012/1/27)
シェルスクリプトマスターに近づくには、他人から技術を盗まなければならない。OS付属のスクリプトから技術を盗もう
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
