質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

4回答

4058閲覧

sudo からrootになるのを完全に防止したい

motisen

総合スコア92

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

3グッド

4クリップ

投稿2017/11/11 13:13

sudo からrootになるのを完全に防止したい

経緯

ある人にサーバーにログインしてもらうためにユーザーを作りました。
rootのファイルを触るので、sudo 権限を付与しました。
ただ、rootユーザーでの作業はさせず、全て sudo を通して作業をして欲しいと考えました。

前提

OS : CentOS7系

対策したこと

sudoersの設定で su を実行できなくしました。

これで sudo su で、rootになることは出来ません。
ただ、sudo bash や sudo visudo などの様々なコマンドを駆使してsudoersを書き換えられるとrootになることは出来ます。

今回は、そこまですることはないと、 bash などは禁止にはしませんでした。
作業は全部sudoを使って欲しいという意思表示のつもりです。

質問したいこと

sudo 権限は与えたいけど、rootユーザーになることを完全に防止する方法はあるのでしょうか?

興味本位ですみませんが、よろしくお願いいたします。

idonotknow, ikuwow, shimitei👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

質問の趣旨がはっきりしないですが、

  • 絶対にrootで対話的なシェルを使わせたくないので、何コマンドを禁止すれば良いのか教えて欲しい

ということでしょうか?

絶対に穴がない設定を行うのは結構確認がやっかいな気がしますので、ユーザにさせたい作業を定義し、それに必要なコマンドを洗い出して、そのコマンドだけ許可するような設定はいかがでしょう?

Cmnd_Alias ALLOW = /bin/cat, /usr/bin/less, /bin/netstat, /bin/ip user ALL = (root) ALLOW

のような感じで。


まあ、質問に例として挙がっているコマンドとか、 /etc/shells とかに挙がっているインストールされているシェルを禁止すればできなくはなると思いますが…(自信なし) (あとは引数付きで vi /etc/sudoers みたいなのも必要かも知れませんね。

投稿2017/11/12 03:02

編集2017/11/12 03:12
ten_forward

総合スコア59

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

motisen

2017/11/12 04:07

・ 絶対にrootで対話的なシェルを使わせたくないので、何コマンドを禁止すれば良いのか教えて欲しい ↑の通りです。上手く伝えられず、すみません。 確かに、完全に防止するならば、ホワイトリスト形式でおこなうべきですね。 ten_forwardさんの解答はとても丁寧でありがたかったのですが、ベストアンサーはMAMEDEKA さんとしました。すみません。 「私が禁止したsuは、sudo -i を使う人だと全く意味がなかった」ことがMAMEDEKAさんの解答をうけて気づいたからです。 ご回答ありがとうございました。
ten_forward

2017/11/12 04:21 編集

ん? 少なくとも `sudo -s` は /bin/bash, /bin/sh を起動できないことを確認してから回答していますよ (^^) ``` guinan:~$ sudo grep oretest /etc/sudoers oretest ALL = (root) ALL, !/bin/bash guinan:~$ sudo -s Sorry, user oretest is not allowed to execute '/bin/bash' as root on guinan. guinan:~$ sudo --version Sudo version 1.8.15 Sudoers policy plugin version 1.8.15 Sudoers file grammar version 45 Sudoers I/O plugin version 1.8.15 ```
motisen

2017/11/12 05:46

>ん? 少なくとも `sudo -s` は /bin/bash, /bin/sh を起動できないことを確認してから回答していますよ (^^) はい。認識しております。上手く伝えられず、申し訳ありません。 今回の質問ですが、 「su 禁止したから、簡単にrootになる方法は封じたつもりですが、他にrootになる抜け穴はありますか? 完全に封じる方法などはあるのでしょうか。sudo bashとかもありますよね。」 ぐらいのスタンスで質問しました。 この質問の前提である「簡単にrootになる方法は封じたつもり」が間違っていることにMAMEDEKAさんの回答を読んで気付きました。 sudo -i でrootになる人も周りにちらほらいます。 「簡単にrootになる方法は封じたつもり」ならば、/bin/bash /bin/sh も禁止にすべきでした。 回答としてはten_forwardさんの回答が良いのですが、質問の前提がそもそも間違っていることに 気づかせてくれたMAMEDEKAさんのほうが(私にとっては)ありがたかったです。
guest

0

ベストアンサー

sudo -isudo -sで回避されるのでrootの対話的シェルを制限するのは無理なような気がします。
使わせたいコマンドをgroupで許可するのが現実的な運用でしょう。

投稿2017/11/12 03:46

MAMEDEKA

総合スコア30

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

motisen

2017/11/12 03:55

sudo のオプション系を失念していました…!確かに無理そうです。 他の方の解答にもあるように、本当に防止するならホワイトリスト形式ですね。 ご回答ありがとうございます。
guest

0

なぜ「rootユーザーでの作業はさせず、全て sudo を通して作業をして欲しいと考え」たのですか?

root のパスワードを「ある人」に開示せず、本来のユーザーアカウントのコンテキストで作業させることで、ファイル所有者や操作ログの整合性を保ちたいからですか?

「ある人」がsudo su -sudo -iを実行しても、rootアカウントのパスワードを知らなければ、rootユーザーにはなれないはずですが、不適切なパスワード管理を強いられる環境という想定ですか?

投稿2017/11/12 05:09

編集2017/11/12 05:11
Guest0123

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ten_forward

2017/11/12 05:38 編集

sudoコマンドをご存知ですか? 設定により許可されていれば、少なくとも自身のパスワードを知っていれば(設定次第ではパスワード入力なしで)、root 権限でコマンドが実行できます。そもそも root にはパスワードを設定せず、すべて sudo を前提に設定されているシステムもありますよね(デフォルト状態の Ubuntu とか)
motisen

2017/11/12 05:49

>なぜ「rootユーザーでの作業はさせず、全て sudo を通して作業をして欲しいと考え」たのですか? sudoを通せばログに残るからです。 sudo でログを消せるといえば、消せますが、ユーザーを作成した人はそこまで信用ならない人ではなりません。 >「ある人」がsudo su -やsudo -iを実行しても、rootアカウントのパスワードを知らなければ、rootユーザーにはなれないはずですが、不適切なパスワード管理を強いられる環境という想定ですか? sudo はrootアカウントのパスワードを知らなくても実行できるという認識です。
guest

0

そもそも論ですが,sudo権限を与えるのではなく,必要なファイルへのアクセス権限だけ与えるほうがいいのではないでしょうか.

投稿2017/11/12 03:18

Yatima

総合スコア1159

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

motisen

2017/11/12 03:57

apacheの再起動を行う必要などがあり、sudo権限も含めようかと考えていました。 ファイルへのアクセス権限はすっかり頭から抜けていました(-_-;) 今後はそのあたりも合わせて考えたいと思います。 ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問