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

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

ただいまの
回答率

91.05%

  • Linux

    3114questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 4
  • VIEW 3,866

motisen

score 38

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

 経緯

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

 前提

OS : CentOS7系

 対策したこと

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

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

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

 質問したいこと

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+7

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

  • 絶対に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 13:07

    ・ 絶対にrootで対話的なシェルを使わせたくないので、何コマンドを禁止すれば良いのか教えて欲しい
    ↑の通りです。上手く伝えられず、すみません。
    確かに、完全に防止するならば、ホワイトリスト形式でおこなうべきですね。

    ten_forwardさんの解答はとても丁寧でありがたかったのですが、ベストアンサーはMAMEDEKA さんとしました。すみません。
    「私が禁止したsuは、sudo -i を使う人だと全く意味がなかった」ことがMAMEDEKAさんの解答をうけて気づいたからです。
    ご回答ありがとうございました。

    キャンセル

  • 2017/11/12 13: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
    ```

    キャンセル

  • 2017/11/12 14: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さんのほうが(私にとっては)ありがたかったです。

    キャンセル

checkベストアンサー

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/12 12:55

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/12 12:57

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

    キャンセル

0

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/12 14:38 編集

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

    キャンセル

  • 2017/11/12 14:49

    >なぜ「rootユーザーでの作業はさせず、全て sudo を通して作業をして欲しいと考え」たのですか?
    sudoを通せばログに残るからです。
    sudo でログを消せるといえば、消せますが、ユーザーを作成した人はそこまで信用ならない人ではなりません。

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

    キャンセル

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

  • ただいまの回答率 91.05%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3114questions

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