
Ubuntuにおけるrootユーザを理解しておく
初めてUbuntuを触って、あれ? rootは? となったのでその辺を整理
初回公開日
最終更新日
「ああ、
sudo
コマンドでroot権限でやればいいのね」とUbuntuを触りはじめた頃は、ぼんやりとわかった気でいました。
しかし、恥ずかしい話ですが、デフォルトユーザのubuntu
が=root
と思っていたり、初心者の私は触っていくほどに混乱していきました。。。なのでしっかりと「Ubuntu」における「root」についてまとめておきます。
1. デフォルトユーザ「ubuntu」と「root」は別物
私の環境は「さくらのクラウド」で構築していて、デフォルトのユーザが
ubuntu
でした。ubuntu
ユーザに対して「管理者パスワード」を設定してインスタンスを作成したので、ubuntu
ユーザ=root
のような変な構図が頭に出来上がってしまいました。
環境によって、デフォルトユーザは異なると思いますので、その辺は置き換えて参照していだければと思います。Ubuntu では、デフォルトでは root アカウントは無効化されており、代わりにデフォルトの
ubuntu
ユーザーが sudo で管理者権限を持つ仕組みになっている。ubuntu と root の違い
項目 | ubuntuユーザ | rootユーザ |
---|---|---|
デフォルト状態 | 作成ずみ・使用可能 | 無効化(パスワードなし) |
管理権限 | sudo で管理者権限を使える | 直接rootとしてログイン可能 |
パスワード | 初期設定でパスワードあり | デフォルトではパスワードなし(ロック状態) |
ログイン方法 | SSHやターミナル | デフォルトではSSHログイン不可 |
- Ubuntu では root のパスワードは設定されておらず、直接 root でログインできない仕様になっている!
- その代わりに ubuntu ユーザーが sudo で管理操作を行う!
root アカウントが無効化されているとは?
デフォルトでは、root のパスワードが設定されておらず、以下のようにロックされている
bash
1sudo cat /etc/shadow | grep root
出力例:
bash
1root:!locked:19447:0:99999:7:::
- 「!locked」になっているため、パスワードでの root ログインはできない!
- rootでログインするにはパスワードを設定する必要がある
2.なぜ root のパスワードをデフォルトで無効にするのか?
デフォルトで
root
のパスワードが設定されていない(lock状態)のは、セキュリティを高めるための措置です。root のパスワード攻撃を防ぐ
- root は特権ユーザーなので、攻撃者が root のパスワードを突破すれば、完全にシステムを乗っ取られる 危険がある!
- そのため 「そもそも root のパスワードを設定しない」ことで、ブルートフォース攻撃(総当たり攻撃)を防ぐ!
代わりにsudo
を使わせることで、セキュリティを向上
- Ubuntu では sudo を使って管理作業を行うのが基本
- sudo を使うと、以下のメリットがある!
rootで直接作業 | sudoを使う |
---|---|
誤操作すると即システム破壊のリスクあり | sudoはパスワード入力が必要なので、慎重になる |
すべてのコマンドが無制限に実行可能 | /var/log/auto.logに履歴が残る(誰がsudoを使ったか分かる) |
攻撃者にrootパスワードがバレると全件掌握される | sudoの対象ユーザーを制御可能(特定のユーザーだけsudoを許可できる) |
- つまり「いきなりrootにしないことでシステムを守る」設計になっている
デフォルトのubuntu
ユーザも危険
「さくらのクラウド」でサーバインスタンスを作成するとデフォルトユーザとして
ubuntu
ユーザが作成ずみになるが、攻撃者に狙われやすいという意味でこれも危険なユーザとなります。管理者用の別ユーザーを作成し、ubuntu のSSHログインを無効化すれば、より安全な環境が作れます。
ubuntu ユーザーのSSHログインを禁止するには下記のようにします。
まずは、管理者権限を持つ新しいユーザーを作成
bash
1sudo adduser adminuser
2sudo usermod -aG sudo adminuser
ubuntu ユーザーのSSHログインを禁止
bash
1sudo vi /etc/ssh/sshd_config
bash : sshd_config
1DenyUsers ubuntu
2AllowUsers adminuser
設定を反映
bash
1sudo systemctl restart ssh
3.まとめ
- Ubuntu では root のパスワードをデフォルトで無効化することで、攻撃リスクを減らしている!
- sudo を使わせることで、操作ログを残し、誤操作のリスクを減らせる!
- SSH で root ログインを無効にすることで、不正アクセスを防げる!
- 万が一に備えて root を有効化することもできるが、セキュリティリスクが増えるので慎重に(非推奨なのでやり方は記事にしません)!
という感じです。
この記事の執筆・編集担当
DE
松本 孝太郎
DELOGs編集部/中年新米プログラマー
ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。