web-dev-qa-db-ja.com

Linuxでrootパスワードの変更を防ぐにはどうすればよいですか?

他の人がssh経由でSudoにアクセスできるサーバーをセットアップしています。スタッフは必要なものをインストールして変更を加えることができますが、それでもサーバーの管理、パッチのインストール、ソフトウェアの更新などが必​​要です。

Rootパスワードを保持して、いつでも必要なことを実行できるようにしているのでしょうか。Sudoを使用しているユーザーがSudoを使用して変更できないようにするにはどうすればよいですか。

7
bwizzy

このように考える必要があります。彼らにrootパスワードまたはそのルートを与えると、本質的には「魔法のように彼らに望まないときを除いて、どうすればrootに与えることができるのか」と質問します。そして答えは、「できない。コンピューターはそのように機能しない」ということです。

15
Rob Moir

Sudoを使用して特定のコマンドを選択的に許可できますが、Shellアクセスを許可するプログラム、symリンクへの書き込み、またはその他の数十の問題の1つを許可しないように注意する必要があります。安全なSudoスクリプトに関するページは次のとおりです。 http://www.kramse.dk/projects/unix/security-Sudo-script_en.html

あなたはいつも彼らがchattrコマンドについて知らないことを望みます;-)

13
Matt Simmons

ここでの答えは、悪意のあるユーザーがパスワードを変更してあなたを締め出さないようにするのか、またはアクセスの必要を忘れて不注意でパスワードを取得するのかによって異なると思います。前者の場合、多くの問題が発生します。どのような状況でユーザーにボックスへのルートアクセスを許可するかはわかりませんが、これについては引き続き心配しますが、できる限り、Sudoを使用してコマンドへのアクセスを制限することをお勧めします。後者の場合、解決策はSudo権限を持つユーザーを自分で作成することだと思われます。誰かが誤ってアカウントのパスワードを変更することはないので、誰かがミスを犯したり、正当な理由でパスワードを変更したりすることを心配する必要はなく、いつでもアクセスできます。アカウントを元に戻します。

5

SELinuxは、あなたが探していることを実行できますが、それは、核の惑星を破壊するバタックスを使ってハエを叩くようなもの、または実際にはHitchhiker'sの引用が何であっても同じです。 Solaris(およびその光沢のあるRBAC)ではなくLinuxに設定している場合、最も簡単に実装できるオプションは、必要なコマンドのみを許可するようにSudoを構成することです。

4
Brad Ackerman

いくつかのオプションがあります:

  • [〜#〜] pam [〜#〜] (プラグイン可能な認証モジュール)を使用して、パスワードの設定に関係なく、rootとしてログインできます。 利用可能なモジュール がたくさんあるので、これはそのままにしておきます。
  • (2番目のrootユーザー)を作成するには、/ etc/passwdを開き、root(0)と同じUIDを持つ新しいユーザーを追加します。次に、その特定のユーザーのパスワードを/ etc/shadowファイルに追加します。これにより、rootとしてログインできるようになり、「root」のパスワードが変更されても、ログインは機能します。
  • 定期的に実行されるシェルスクリプトを作成して、/ etc/shadowのrootユーザーのハッシュが、希望するハッシュと一致するかどうかを確認します。そうでない場合、ハッシュは元に戻されます。

他の人が指摘したように、rootアクセスを与えることで、システム上で好きなことを絶対に実行できるようになり、本当にあなたをロックアウトしたい場合にそうなります。彼らはできます。ただし、上記のオプションを使用すると、操作が難しくなるか、透過性が低くなります。

3
Andrioid

Solarisはrootを「役割」にすることでこれを解決し、誰もrootパスワードを持たず、rootユーザーはシステムにログインできません。だれかがあなたを締め出すのを防ぐために、多くのきめ細かなセキュリティオプションがあります。そのため、「pfexec」(Sudoと同等)を使用してルートのほとんどのことを実行させることができますが、Sudo特権が取り消されるのを防ぐことができます。

[[私はソラリスのファンではありませんが、ZFSとDTrace以外にもソラリスには非常に優れた点があります。オラクルが炎を消せば、ひどすぎる]]

2
hayalci

あなたが欲しいものは合理的ではありません。あらゆる形態の人々に根を下ろすと、彼らはあなたのシステムを破壊することができます。彼らのアクセスが厳しく規制されたSudo経由であったとしても、巧妙な、または悪意のある、または本当に混乱した馬鹿が騒乱を引き起こす可能性があります。

あなたはそれらを信頼するかしないかです。

あなたが彼らのニーズをサポートしていて、会社がそれらをサポートするためにあなたにお金を払っているなら、それはあなたのものではなく彼らのマシンです;彼らがどんなに馬鹿なことをしたとしても、あなたはそれを動かし続けるためだけにそこにいます。多分彼らがそれを数回ローストした後、あなたはあなたにクライアントにもっと少ないアクセスを与えることができるかどうか上司に尋ねるか、さもなければ会社は混乱を直すためにあなたに支払わなければならないでしょう。何であれ-それは彼らのダイムです。

それがあなたのコンピュータであり、あなたがこれらの他の人たちを好意的にやっているなら、彼らにニースであるように丁寧に頼んでください。

つまり、CD(またはその他の読み取り専用メディア)からいつでも起動できます。他のファイルシステムを一掃したり、/ etcを独自の/ etcでマウントしたりすることはできますが、システムを基本的な機能レベルに戻すために必要なのはすべてです。

openvz のようなものを使用して、各ユーザーに独自のインスタンスを与えることもできます。システム全体を一掃することはできず、独自のソフトウェアをスライスにインストールすることができます。多くの場所で、VZスライスのクライアントに「ルート」を提供するWebホスティングにこれを使用しています。

1
chris

Solaris、HP-UX、AIXなどのRBACを備えたシステムを使用できない場合は、 grsec パッチを使用してLinuxにRBACを実装できます。

1

そこで必要となるのが、中間層アクセスユーザータイプです。ユーザータイプがカスタマイズ可能な特権(標準アクセスといくつかのルートアクセス)で存在する場合、それはいいことだと思います。また、このユーザーがパスワードファイルなどを変更できないようにするために(Linuxはファイルに基づいているため)、そのユーザーが使用できないようにパスワードファイルのアクセス許可を制限できます。次に、BIOSのパスワードを入力して、ユーザーがサードパーティの起動可能なフラッシュまたはCDで/ etc/shadowファイルを変更できないようにします。

上記はLinux開発者のための理論にすぎず、それが可能かどうかはわかりません...

0
Ali