[ubuntu-jp:3310] Re: root(スーパー)ユーザーについて

Mitsuru Ogino ogino @ verama.net
2011年 1月 20日 (木) 17:15:47 UTC


荻野です。

すみません、私はルートでログインできる方がうれしいとあったのでつい
Ubuntu 以外にルートで作業するような他の Linux や BSD, Unix の経験がおあ
りかと思って前のメールを書きました。分かりにくくてすみません。

# 伝統的な Unix では sudo コマンドはありませんので、ルートのパスワードは
# あって当然のものです。

m.umeda @ kzc.biglobe.ne.jp said the following on 11/01/19 8:34:
> <荻野さんの解説の不明点>
> 
>> root のパスワードを設定する場合の注意点は
>>
>> ・SSH server が稼働している場合、sshd_config のデフォルトの設定が
>> PermitRootLogin yes だったと思うのでこれを変更するか、総当たり攻撃を受け
>> ないように(例えば /etc/hosts.{deny,allow} などで)注意する必要がある。
>> FTP サーバなどでも同様の留意が必要かと。
> 
> サーバーを立てて居りませんので、この記述は今一つ、ピンときませんでした。

サーバを立てていない(外部から接続できない)のであれば無視して結構です。
SSH というのはネットワークを通じてログインするためのものですが、特に必要
が無い限りルート権限でログインできないように設定します。(「安全側に倒し
ておく」と言います)

Ubuntu のデフォルトでは SSH でのルートのログインは禁止されていません。の
で、ルートのパスワードを設定してあると総当たり攻撃を受けて侵入される恐れ
があります。なぜ SSH でのルートログイン禁止がされていないかというと、確
か「普通はルートのパスワードは設定しないから問題ない」ということだったと
思います。

要するにサーバとして使用する場合、Ubuntu のパッケージはルートのパスワー
ドが設定されていないことを前提とした設定になっている場合があるので、ルー
トパスワードを設定する場合はそのことを意識しておくべき、と言いたかったの
でした。


>> ・シングルユーザモードに入るときに sulogin が起動されるので、root のパス
>> ワードを忘れてしまうとシングルユーザモードに入れない。(再)起動時にシン
>> グルユーザモードで起動して root 権限を得ることを防止できるというメリット
>> もある。
> 
> シングルユーザーモードは、システムメンテナンスのモードと理解しました(下
> 記は、WEBで調べた物のコピーです)。この記述を読む限り、rootパスワードを
> 忘れても、復旧可能と有るので大丈夫ではと思うのですが。Ubuntuでは一般ユー
> ザーパスワードを知られたらアウトですが、色々工夫してパスワード管理して居
> れば、一般的なUNIXの手法rootとrootパスワードの存在はユーザーパスワードで
> ほとんど出来てしまう(先日、試した限りでは$ sudo cd/hogehoge/・・・は出
> 来ませんでしたが)のは却ってセキュリティー上、好ましいとは言えないような
> 気がするのですが。

記憶に頼っていますが、ルートのパスワードを設定してあると、シングルユーザ
モードに入るときにルートのパスワードを聞かれたと思います。man sulogin に
よれば、

  Give root password for system maintenance
  (or type Control-D for normal startup):

と表示されて、root password を入力しないと normal startup、つまりマルチ
ユーザモードに移行しようとしてしまいます。しかし、ルートのパスワードが
ロックされていると、

  If the root account is locked, as is the default on Ubuntu, no
  password prompt is displayed and sulogin  behaves  as  if
  the correct password were entered.
  もしルートアカウントがロックされている(これは Ubuntu のデフォルト)
  場合は、パスワードプロンプトは表示されず sulogin は正しい(ルート)
  パスワードが入力されたように振る舞う。

とあります。

>>  ここで,末尾に「 single」(または「 1」)と入力してEnterキー,次いでB
>> キーを押すと,シングル・ユーザー・モードで起動します。「sh- 3 .2 #」とい
>> うプロンプトが表示された時点で,シングル・ユーザー・モード上でシェルが起
>> 動しています。
>>  passwdコマンドを起動して,新しいパスワードを2回入力すれば,rootのパス
>> ワードを忘れてしまったとしても再び利用できるようになります。

さて、Ubuntu ではこのようにはならなかったような気が… 試してみれば良いこ
とですが。ただ single ではなく single init=/bin/sh を使用するとか、セ
キュリティという面からすると物理的にコンピュータに触れる人間ならシングル
ユーザモードで起動できなくても CD-ROM や USB から起動してシステムを変更
できるので、ここでパスワードを問うというのは気休めにも似ています。

シングルユーザモードに入るというのは普通トラブル時なので(ディスク構成変
更時などもありますが)、いきなりルートのパスワードを聞かれても思い出せな
いということがあるので注意が必要、というつもりでした。


>> ・BSD 系で一般的な wheel グループのメンバーのみ su を許可するという設定
>> はデフォルトではないので、nobody を含むどのユーザでも su で root 権限取
>> 得を試みることができる(総当たり攻撃ができる)。wheel グループを追加して
>> /etc/pam.d/su 中のコメントや man pam_wheel に従って設定すれば制限可能
>> (root も wheel グループに追加するのを忘れないように)。
>>
>> が思いつきますが、他にもあるかも知れません。
> 
> 申し訳ありません。こちらも英語で弱りました。個人ユーザーに於いては、一般
> ユーザーを2つ作り、片方を制限ユーザー、もう片方を非制限ユーザーにして使
> い分ければ良いと言う意味でしょうか?

個人用であれば無視して結構です。

管理者以外のユーザが使用できる場合、ネットワーク経由での総当たり攻撃(い
ろんなパスワードでルートでのログインを試みる)以外に、ローカルで su を実
行してルート権限の取得を試みるという攻撃があり得ます。

BSD 系(例えば Mac OS X とか)では伝統的に wheel グループに所属していな
いと su でルート権限を得ることはできないという仕組みがあるのですが、これ
に慣れている人間だと、Ubuntu にはデフォルトでそのような仕組みは有効に
なっていない(誰でも su を実行できる)という落とし穴があるということです。



> ※実は当方の知りたい事はこれだけなのです。
> 
> $ sudo passwd root
> hogehogeのパスワード:
> 新しいパスワード:
> 確認のパスワード:
> 
> $ su -
> 上記パスワード入力
> 
> # ←プロンプトがrootに
> 
> この作業をして
> 
> ・やりかたはこれでいいのか?>>>荻野さん流に言えば、どうも良くは無さそ
> うだ>>>manの英語はちゃんと読めるだろうか・・・読めないですよね・・・
> 多分

多分知っておくべきことは:

ルートのパスワードが十分に安全なものであれば特に問題はありませんし、サー
バが一切動いておらず自分一人しか使用しないのであればなおさら問題ではあり
ませんが、普通は不必要なリスクでしょう。root になりたい場合は sudo -i を
実行すればよろしい。

パスワードのロックは、パスワードの再設定で解除されます。再度ロックするに
は sudo passwd -l root のはずですが、sudo passwd -u root で再度パスワー
ドあり状態にできるなど完全に同じではありません(が多分問題ない)。


> ・推奨される行為じゃ無いようですね?・・・でも、何故?個人で使う分には
>  一般ユーザーでなんでも出来てしまうのを避ける意味でも、rootが有った方が
> いいような気がするんですよね・・・。

a) ルートでログインした状態になれる      … sudo -i や sudo su -
b) ルートアカウントにパスワードを設定してある … su - とパスワード入力

がごっちゃになっているんじゃ無いでしょうか。「rootが有」というのは普通は
a) のことなので、sudo -i(または sudo su -)で良く、「ルートアカウントに
パスワードを設定」は不必要です。

なお、a) と似たようなこととして

c) ルート権限を得る

というのがあり、これは sudo 経由で実行することで実現できます。シェルが欲
しければ sudo bash でコマンドプロンプトが # になります。が、例えば $HOME
が /root にならないなど「ルートでログインした状態」とは微妙に違います。
が、これも余計な知識ですね。


> 尚、個人的事情で申し訳ないですが、風邪をこじらせたようです。熱が有って、
> 現在臥床中です。治ったら、フォーラムへ行き、この投稿のレスがもし有れば
> サマリーに反映させて頂きたいと存じます。

お大事に。

-- 
荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず
Key fingerprint = 7F26 5414 1805 F31B 1617  10B7 C117 07AE 1691 9BD1



ubuntu-jp メーリングリストの案内