週1日のSudoers?


10

私は上司からボランティアで、本番Redhatサーバーのシステム管理者になりました。彼は私にセキュリティを強化して、そんなにrm -f *前に起こったような事故を回避するように頼みました。

現在、53人のユーザーがマシンにsudoを実行していますが、これは監査の悪夢です。ユーザーのアクセスを特定の曜日にのみ許可できるかどうか疑問に思っています。

たとえば、ユーザー「Joe」に火曜日と木曜日にのみログインを許可し、「Jane」に日曜日にのみログインを許可することはできますか?etc/sudoersこれを許可するようにカスタマイズできますか?

sudoersを使用するよりも良い方法はありますか?


10
マニュアルページを読まないことをお勧めします。xkcd#1343を参照してください
user60684 14

3
いいえ、私は彼に私見を読むことが不可能であるのでマニュアルを読まないように言っています。OPの方が読みやすいとしたら、おそらくマンページで答えを見つけるでしょう。
user60684 14年

10
これを行うことはできますが、ユーザーはrootがいつでも自分にいつでもsudoアクセスを戻すことができることを覚えておいてください。
Nick Matteo 14年

2
@ Mark0978もしあなたが会社の名前を知っていたら、おそらくあなたは頭を笑わせて死んでしまうでしょう。運用サーバーで許可されているのは不名誉です。
Chris

3
これはちょっとばかげているようです。それは、ビルが水曜日の朝の時間枠が実行されるのを待たなければならないことを意味しますrm -rf /
マイケルハンプトン

回答:


21

sudo Linuxボックスの他のほとんどすべてと同様に、PAMを介して認証を行います。

したがって、これを行うために使用できるはずですpam_time.so

Debianでは少なくともデフォルトで、そのモジュールは有効になっていません。次のような行を追加する必要があります。

account    requisite  pam_time.so

いずれかに/etc/pam.d/sudoのみ須藤またはできるように/etc/pam.d/common-account、システム上のすべてのプログラムのために有効にする(PAM-AUTH-更新ブロックの後)。

次に編集/etc/security/time.confして制限を設定します。サービス名はである必要がありますsudo。たとえば、フレッドがsudo金曜日の午後3時から5時までしか使用できないようにするには、次のようにします。

sudo;*;fred;Fr1500-1700

(注:これはテストしていません。)

編集:明確にするために、私は他の回答とさまざまなコメントに同意します。あなたは非常に多くの人がrootとしてあまりにも多くのコマンドを実行しているようであり、本当にそれを修正する必要があります。そしてもちろん、彼らがrootになることができる場合、彼らはPAM設定を編集できます...


PAMの実装は複雑に見えますが、誰がいつ何をするかをより厳密に制御することもできます。承認され、投票されました。ありがとうございました。
Chris

2
私は彼を励ますことは正しい答えだとは思いません、IMAOはこの質問への正しい答えは "RUN FOR THE HILLS !!!! 1!1 !! 1!1"
o0 'です。

これは実際に機能しますか?「login」、「ssh」、「gdm」、「su」などのさまざまなログインメカニズムをpam_time.soを使用して制御できますが、sudoでは機能しません。営業時間外に通常の仕組みでだれもが根付かないようにしたい。(私はそれが防弾ではないことを理解しています、誰かが事前にsetuidシェルまたはバックドアを準備することができますが、私はこの状況でそれが起こるとは思いません。)
Sam Watkins

20

53人のユーザーが日常業務を行うためにsudoを必要とする理由を疑問に思います。ほとんどのユーザー(開発者を含む)にsudo rm -rf *とって、sudoはまれな例外であり、誰かがカジュアルにコマンドを実行するような日常的なものではありません。

グループのアクセス許可(またはさらに高度なACL)を使用して、作業を完了するために必要なファイルへのアクセス権をユーザーに付与できますか?(安全なsetuid / sudoスクリプトを書くのは難しいので、正直な人々を正直に保つほうがいいことに注意してください)。

sudoアクセスを週に1日に制限できるとしても、1週間で53人のユーザーがsudoにアクセスできるため、コアの問題には役立ちません。

さらに言えば、その多くのユーザーが実稼働サーバーにアクセスする必要があるかどうかを質問します。非実稼働マシンにログやその他の必要なデータ/ファイルを送信できますか?


または、彼らが必要とする可能性のあるログファイルへの何らかのアクセスを公開できますか?chroot jailed sftpのような設定です。
ボートコーダー、2014年

@Johnnyこのホストで行われる作業の大部分は、シェルスクリプトの作成/編集および実行です。ユーザーが許可されるべきではありませんvi/cp/mv/rm。のみcdmore。他には何もありません。
Chris

@JohnnyディレクトリにACLを設定した場合、そのディレクトリ内のファイルはデフォルトでACLの属性を継承しますか?
Chris

@Chrisはい、ディレクトリのデフォルトACLを設定した場合。
マイケルハンプトン

これはコメントではなく、回答である必要があります。OPのシナリオが適切であるかどうかに関係なく、他の人々は特定の時間に一部のユーザーのために「sudo」をロックダウンする同様の必要性を持っています。
サムワトキンス2016年

7

最も簡単な方法は、構成に(inludedir経由で)suders.dを使用することです。次に、希望する時間の間、各ユーザーのルールをそのディレクトリに配置できるcronジョブを作成できます。

#includedirディレクティブを/ etc / sudoersで使用して、sudoersルールをルールの一部としてドロップできるsudo.dディレクトリを作成できます。たとえば、次のように指定します。

#includedir /etc/sudoers.d

sudoは/etc/sudoers.d内の各ファイルを読み取り、「〜」で終わるファイル名または「。」を含むファイル名をスキップします パッケージマネージャーまたはエディターの一時/バックアップファイルで問題が発生するのを避けるための文字。ファイルはソートされた字句順に解析されます。つまり、/ etc / sudoers.d / 01_firstは、/ etc / sudoers.d / 10_secondより前に解析されます。ソートは数値ではなく字句であるため、/ etc / sudoers.d / 1_whoopsは/etc/sudoers.d/10_secondの後にロードされることに注意してください。ファイル名に一貫した数の先行ゼロを使用すると、このような問題を回避できます。

#includeでインクルードされたファイルとは異なり、visudoは#includedirディレクトリ内のファイルの1つに構文エラーが含まれていない限り編集しないことに注意してください。visfフラグを指定してvisudoを実行し、ファイルを直接編集することも可能です。

/etc/sudoers.d/joeは、joeにアクセス権を与えたい場合に存在し、ファイルを削除してアクセス権を奪うことができます。


1
ユーザー固有のsudoersファイルに問題がありました: 'sudoers.user1'など。 '〜'と '。'についてコメントします。文字は私の問題を解決しました。マニュアルを読んで本当に良かったです!ありがとうございました。
ハン

0

crontabを追加してユーザーをsudoグループに入れ、次に2番目のcrontabを追加してそのユーザーを除外することができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.