次にローカルユーザの攻撃に対するシステムのセキュリティについて考えます. そうです,ローカルのユーザに対してです.
ローカルユーザのアカウントの獲得は,攻撃者が root のアカウントを破ろう とする際に最初に考えることの一つです.ローカルに対するセキュリティが甘 ければ,様々なバグやローカル向けのサービスのまずい設定を利用して,一般 ユーザの権限から root ユーザの権限へ「アップグレード」することができる のです.ローカルに対するセキュリティが強固であれば,侵入者が越えなけれ ばならないハードルはまだ残ることになります.
ローカルユーザは,たとえ身元を詐称していなくても,システムに被害を与え ることができます.知らない人やコンタクトを取るための情報が無い人にアカ ウントを与えるのは,非常に危険なことです.
アカウントを発行する際には,そのユーザが行う必要がある作業に対して必要 最小限のアカウントを与えるようにすべきです.息子(10才)にアカウントを与 えるのならば,ワープロやお絵描きプログラムにはアクセスできるけれど,自 分のものでないファイルを削除できないユーザにすべきでしょう.
他人に Linux マシンに対しての合理的にアクセスをしてもらうための,便利 な経験則があります.
セキュリティを破るときに使われるローカルユーザのアカウントの多くは,何ヵ 月あるいは何年も使われていないものです.誰も使っていないために,理想的 な攻撃の道具になってしまうのです.
あなたのマシンで最も欲しがられるアカウントは,root(ユーパーユーザ)のア カウントです.このアカウントはマシン全体に対する権限を持ち,ネットワー ク上の他のマシンに対する権限を持つこともあります.root のアカウントは できるだけ短時間の,特定の作業だけで使用し,それ以外の時は一般ユーザと してマシンを使用すべきです.root ユーザでログインしているとちょっとし たミスでも問題を起こしかねません.root 権限を持っている時間は短ければ 短いほど安全です.
root 権限でマシンを壊してしまわないための仕掛けもいくつかあります.
"rmoo*.bak"
を実行する場合には,まず
"ls foo*.bak"
を実行し,考えているファイルだけが消されるよう
になっているか確認するのです.危険なコマンドの代わりに echo
が使えることもあります..rhosts
ファイルは決
して作ってはいけません./etc/securetty
には root がログインできる端末のリストが書かれ
ています.(RedHat Linux の)デフォルトでは,これにはローカルの仮想端末
(vty)だけが設定されています.このファイルにそれ以外の端末を追加すると
きには,細心の注意を払ってください.必要がある時でも一般ユーザとして
(できれば
ssh
等の暗号化チャネル経由で)
リモートログインし,それから su
することができるはずなので,
直接 root としてログインできる必要はありません.どうしても誰か(できれば非常に信頼している人)に root 権限を与える必要が
ある場合にも,これを補助するツールがあります.sudo
を使えば,
ユーザのパスワードを使って,制限されたコマンド群を root の権限で使用さ
せることができます.これにより,例えば Linux マシンのリムーバブルメディ
アをユーザにイジェクトやマウントをさせるけれど,それ以外の root 権限は与
えないようにすることができます.sudo
は成功・失敗を含めて全て
の sudo
の試みをログに取ることができるので,誰が何のためにど
のコマンドを使ったか調査することができます.このため,sudo
は
多くのユーザが root 権限を持つような環境でもうまく利用することができま
す.なぜならシステムに対して行われた変更を調べやすくしてくれるからです.
sudo
を使って特定のユーザに特定目的のための特定の権限を与える
ことができますが,sudo には欠点がいくつかあります.sudo は,サーバの再
起動やユーザの新規追加など,限られた作業の組に対してだけ使うべきです.
シェルエスケープができる任意のプログラムは,これを sudo
を通
して使ったユーザに root 権限を与えてしまいます.例えば,大部分のエディ
タがこれに該当します.また,/bin/cat のように無害なプログラムであって
もファイルの上書きに使うことができるので,これを使って root 権限が破ら
れることもあり得ます.sudo
は権限を使わせるための手段と考える
べきであり,root ユーザをより安全にするために置き換えるものと期待して
はいけません.