GNU/Linux >> Linux の 問題 >  >> Linux

sudoについておそらく知らなかったこと

誰もがsudoを知っています 、 右?このツールは、ほとんどのLinuxシステムにデフォルトでインストールされ、ほとんどのBSDおよび商用Unixバリアントで使用できます。それでも、何百もの sudoと話した後 ユーザー、私が受け取った最も一般的な答えは、 sudo 人生を複雑にするツールです。

rootユーザーがいて、 suがあります コマンド、それではなぜさらに別のツールがあるのですか?多くの場合、 sudo 管理コマンドの単なるプレフィックスでした。同じシステムに複数の管理者がいる場合は、 sudoを使用できると述べたのはほんの一握りです。 誰が何をしたかをログに記録します。

では、 sudo とは何ですか ? sudoによると ウェブサイト:

"Sudoを使用すると、システム管理者は、コマンドとその引数の監査証跡を提供しながら、特定のユーザーにrootまたは別のユーザーとして一部のコマンドを実行する機能を与えることで権限を委任できます。"

デフォルトでは、 sudo シンプルな構成、ユーザーまたはユーザーのグループが実質的に何でもできる単一のルールが付属しています(この記事の後半で構成ファイルについて詳しく説明します):

%wheel ALL=(ALL) ALL

この例では、パラメーターは次のことを意味します。

  • 最初のパラメーターは、グループのメンバーを定義します。
  • 2番目のパラメーターは、グループメンバーがコマンドを実行できるホストを定義します。
  • 3番目のパラメーターは、コマンドを実行できるユーザー名を定義します。
  • 最後のパラメーターは、実行できるアプリケーションを定義します。

したがって、この例では、ホイールのメンバー グループは、すべてのホスト上のすべてのユーザーとしてすべてのアプリケーションを実行できます。この本当に寛容なルールでさえ、あなたのマシンで誰が何をしたかをログに記録するので便利です。

エイリアス

システム管理者の詳細

  • Sysadminブログを有効にする
  • 自動化されたエンタープライズ:自動化によってITを管理するためのガイド
  • eBook:システム管理者向けのAnsible自動化
  • 現場からの物語:IT自動化に関するシステム管理者ガイド
  • eBook:SREおよびシステム管理者向けのKubernetesのガイド
  • 最新のシステム管理者の記事

もちろん、共有ボックスを管理しているのがあなたとあなたの親友だけではない場合は、権限の微調整を開始します。上記の構成の項目をリスト(ユーザーのリスト、コマンドのリストなど)に置き換えることができます。ほとんどの場合、これらのリストの一部をコピーして構成に貼り付けます。

この状況では、エイリアスが便利になります。同じリストを複数の場所で維持すると、エラーが発生しやすくなります。エイリアスを一度定義すると、何度でも使用できます。したがって、管理者の1人への信頼を失った場合は、エイリアスから管理者を削除することができます。エイリアスの代わりに複数のリストを使用すると、昇格された特権を持つリストの1つからユーザーを削除することを忘れがちです。

特定のユーザーグループの機能を有効にする

sudo コマンドには膨大なデフォルトのセットが付属しています。それでも、これらの一部をオーバーライドしたい場合があります。これは、デフォルトを使用する場合です。 構成内のステートメント。通常、これらのデフォルトはすべてのユーザーに適用されますが、ホスト、ユーザー名などに基づいて、設定をユーザーのサブセットに絞り込むことができます。これが私の世代のシステム管理者が聞きたがっている例です:侮辱。これらは、誰かがパスワードを間違って入力したときの面白いメッセージです:

czanik@linux-mewy:~> sudo ls
[sudo] password for root:
Hold it up to the light --- not a brain in sight!
[sudo] password for root:
My pet ferret can type better than you!
[sudo] password for root:
sudo: 3 incorrect password attempts
czanik@linux-mewy:~>

誰もがsysadminユーモアのファンではないため、これらの侮辱はデフォルトで無効になっています。次の例は、ホイールのメンバーである経験豊富なシステム管理者に対してのみこの設定を有効にする方法を示しています。 グループ:

Defaults !insults
Defaults:%wheel insults

これらのメッセージを返してくれてありがとうと言った人の数を数えるのに十分な指がありません。

ダイジェスト検証

もちろん、 sudoにはもっと深刻な機能があります 同じように。それらの1つはダイジェスト検証です。構成にアプリケーションのダイジェストを含めることができます:

peter ALL = sha244:11925141bb22866afdf257ce7790bd6275feda80b3b241c108b79c88 /usr/bin/passwd

この場合、 sudo アプリケーションを実行する前に、アプリケーションのダイジェストをチェックして、構成に保存されているダイジェストと比較します。一致しない場合は、 sudo アプリケーションの実行を拒否します。構成でこの情報を維持することは困難ですが(この目的のための自動化されたツールはありません)、これらのダイジェストは追加の保護レイヤーを提供できます。

セッションの記録

セッションの記録も、 sudoのあまり知られていない機能です。 。私のデモの後、多くの人が私の話を離れて、インフラストラクチャに実装する計画を立てています。なんで?セッション記録では、コマンド名だけでなく、ターミナルで発生したすべてのものも表示されるためです。管理者がシェルアクセスを持っていて、ログに bash しか表示されていない場合でも、管理者が何をしているかを確認できます。 開始されます。

現在、1つの制限があります。レコードはローカルに保存されるため、十分な権限があれば、ユーザーはトレースを削除できます。今後の機能にご期待ください。

プラグイン

バージョン1.8以降、 sudo モジュール式のプラグインベースのアーキテクチャに変更されました。ほとんどの機能がプラグインとして実装されているため、 sudoの機能を簡単に置き換えたり拡張したりできます。 あなた自身を書くことによって。 sudoですでに利用可能なオープンソースプラグインと商用プラグインの両方があります 。

講演では、 sudo_pairのデモを行いました プラグイン。GitHubで入手できます。このプラグインはRustで開発されています。つまり、コンパイルはそれほど簡単ではなく、結果を配布するのはさらに困難です。一方、プラグインは興味深い機能を提供し、2人目の管理者が sudo を介して実行中のコマンドを承認(または拒否)する必要があります 。それだけでなく、セッションを画面上で追跡し、疑わしいアクティビティがあった場合は終了することができます。

All Things Openカンファレンスでの最近の講演で行ったデモでは、悪名高いものがありました:

czanik@linux-mewy:~> sudo  rm -fr /

画面に表示されるコマンド。誰もが私のラップトップが破壊されたかどうかを確認するために息を止めていましたが、それは生き残りました。

ログ

冒頭ですでに述べたように、ロギングとアラートは sudoの重要な部分です。 。 sudoをチェックしない場合 定期的にログを記録するため、 sudoを使用する価値はあまりありません。 。このツールは、構成で指定されたイベントについて電子メールで警告し、すべてのイベントを syslogに記録します 。デバッグログをオンにして、ルールのデバッグやバグの報告に使用できます。

アラート

電子メールアラートは今では昔ながらのものですが、 syslog-ngを使用する場合 ログメッセージを収集するためのsudo ログメッセージは自動的に解析されます。カスタムアラートを簡単に作成して、Slack、Telegram、Splunk、Elasticsearchなどのさまざまな宛先に送信できます。この機能の詳細については、syslong-ng.comのブログをご覧ください。

構成

sudoについてたくさん話しました 機能があり、数行の構成も見られました。それでは、 sudoがどのように行われるかを詳しく見ていきましょう。 が構成されています。構成自体は、 / etc / sudoersで利用できます。 、これは単純なテキストファイルです。それでも、このファイルを直接編集することはお勧めしません。代わりに、 visudoを使用してください 、このツールは構文チェックも行うため。 viが気に入らない場合 、エディタをポイントすることで、使用するエディタを変更できます 好みのオプションで環境変数。

sudoの編集を開始する前に 構成では、rootパスワードを知っていることを確認してください。 (はい、rootがデフォルトでパスワードを持っていないUbuntuでもそうです。) visudo 構文をチェックすると、システムからロックアウトする構文的に正しい構成を簡単に作成できます。

緊急時に備えてrootパスワードが手元にある場合は、構成の編集を開始できます。 sudoersに関しては ファイルの場合、覚えておくべき重要なことが1つあります。このファイルは上から下に読み取られ、最後の設定が優先されます。この事実が意味することは、一般的な設定から始めて、最後に例外を配置する必要があるということです。そうしないと、例外が一般的な設定によって上書きされます。

簡単なsudoersを見つけることができます 以下のファイルは、CentOSのものに基づいており、前に説明した数行を追加します。

Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
Defaults:%wheel insults
Defaults !insults
Defaults log_output

このファイルは、いくつかのデフォルトを変更することから始まります。次に、通常のデフォルトルールであるルートがあります。 ユーザーとホイールのメンバー グループには、マシンに対する完全な権限があります。次に、ホイールの侮辱を有効にします グループ化しますが、他のすべての人には無効にします。最後の行でセッションの記録が可能になります。

上記の構成は構文的に正しいですが、論理エラーを見つけることができますか?はい、1つあります。最後の一般的な設定が以前のより具体的な設定を上書きするため、侮辱はすべての人に対して無効になります。 2つのラインを切り替えると、セットアップは期待どおりに機能します。ホイールのメンバー グループは面白いメッセージを受け取りますが、残りのユーザーはそれらを受け取りません。

構成管理

sudoersを維持する必要がある場合 複数のマシンでファイルを作成する場合は、構成を一元管理する必要があります。ここには2つの主要なオープンソースの可能性があります。どちらにも長所と短所があります。

残りのインフラストラクチャの構成にも使用する構成管理アプリケーションの1つを使用できます。 Red Hat Ansible、Puppet、およびChefにはすべて、 sudoを構成するためのモジュールがあります。 。このアプローチの問題は、構成の更新がリアルタイムとはほど遠いことです。また、ユーザーは引き続き sudoersを編集できます ローカルでファイルし、設定を変更します。

sudo ツールは、その構成をLDAPに保存することもできます。この場合、構成の変更はリアルタイムで行われ、ユーザーは sudoersをいじることはできません。 ファイル。一方、この方法にも制限があります。たとえば、エイリアスを使用したり、 sudoを使用したりすることはできません LDAPサーバーが利用できない場合。

新機能

sudoの新しいバージョンがあります 角を曲がったところ。バージョン1.9には、多くの興味深い新機能が含まれます。計画されている最も重要な機能は次のとおりです。

  • セッションの記録を一元的に収集する記録サービス。ローカルストレージと比較して多くの利点があります。
    • 1か所で検索する方が便利です。
    • 送信側のマシンがダウンしている場合でも、記録を利用できます。
    • トラックを削除したい人は録音を削除できません。
  • 監査 プラグインはsudoersに新機能を追加しません 、代わりに、プラグインがあらゆる種類の sudoに簡単にアクセスできるようにするためのAPIを提供します ログ。このプラグインを使用すると、 sudoからカスタムログを作成できます プラグインを使用したイベント。
  • 承認 プラグインを使用すると、サードパーティのプラグインを使用せずにセッションの承認が可能になります。
  • そして私の個人的なお気に入り:プラグインのPythonサポート。これにより、 sudoを簡単に拡張できます。 Cでネイティブにコーディングする代わりにPythonコードを使用する。
結論

この記事がsudoであることを証明してくれることを願っています 単なるプレフィックスではありません。システムの権限を微調整する可能性はたくさんあります。権限を微調整するだけでなく、ダイジェストをチェックすることでセキュリティを向上させることもできます。セッションの記録により、システムで何が起こっているかを確認できます。 sudoの機能を拡張することもできます プラグインを使用して、すでに利用可能なものを使用するか、独自に作成します。最後に、今後の機能のリストを考えると、 sudo であっても、それを確認できます。 は数十年前のものであり、絶えず進化している生きたプロジェクトです。

sudoについて詳しく知りたい場合 、ここにいくつかのリソースがあります:

  • sudo ウェブサイト

  • sudo ブログ

  • Twitterでフォローしてください


Linux
  1. Linuxカーネルについて知らなかった30のこと

  2. VPSホスティングとは何ですか?仮想プライベートサーバーについて知っておくべきことすべて

  3. VPNとは何ですか? VPNについて知っておくべきことすべて

  1. Linuxファイアウォール:iptablesとfirewalldについて知っておくべきこと

  2. システム管理者がBashの使用について知っておくべきこと

  3. Debi a Volume Linux Server について知っておくべきこと

  1. ZorinOS12について知りたいことすべて

  2. 知っておくべきNginxコマンド

  3. あなたが知っておくべきLinuxについての30の驚くべき事実