熟練したLinux syadminに完全なrootアクセス権を与えずに生産性を上げる方法はありますか?
この質問は、知的財産(IP)を保護するという観点から来ています。私の場合、完全にコードファイルや構成ファイル(つまり、簡単にコピーできる小さなデジタルファイル)です。私たちの秘密のソースは、私たちの小さめのサイズが示唆するよりも私たちをより成功させました。同様に、IPを盗もうとした(sysadminsではなく)元悪意のない従業員からのonce-bitten、two shyです。経営陣の立場は基本的に、「私たちは人々を信頼しますが、自己利益のため、絶対に必要な以上のアクセスを1人に与えるリスクを負うことはできません。」
開発者側では、ワークフローとアクセスレベルを分割するのは比較的簡単です。そのため、人々は生産的になることができ、必要なものだけを見ることができます。最高の人々(実際の会社の所有者)だけがすべての材料を組み合わせて特別なソースを作成する能力を持っています。
しかし、Linux管理者側でこのIP機密性を維持するための良い方法を思いつくことができませんでした。コードと機密性の高いテキストファイルにGPGを広範囲に使用していますが、管理者が(たとえば)ユーザーをsuして、tmuxまたはGNU Screen session彼らが何をしているのかを見て?
(機密情報に接触する可能性のあるすべての場所でインターネットアクセスが無効になっています。しかし、完璧なものはなく、巧妙なシステム管理者やネットワーク管理者側のミスに穴が開いている可能性があります。あるいは古き良きUSBですらあります。もちろん、他にも多数の対策が講じられていますが、それらはこの質問の範囲を超えています。)
私が思いつくことができる最高のものは、基本的にはSudoでパーソナライズされたアカウントを使用することです。これは rootとして機能する複数のLinuxシステム管理者 で説明されているものと同様です。具体的には、会社の所有者以外はだれも実際には直接rootアクセス権を持ちません。他の管理者はパーソナライズされたアカウントを持ち、rootにSudoを実行できます。さらに、リモートロギングが導入され、ログは企業の所有者のみがアクセスできるサーバーに送られます。ロギングがオフになっていると、ある種のアラートが発生します。
賢いシステム管理者は、おそらくまだこのスキームにいくつかの穴を見つけることができます。それはさておき、それはproactiveではなくreactiveです。私たちのIPの問題は、競合他社がそれを非常に迅速に利用し、非常に短い時間で多くの損傷を引き起こす可能性があることです。
したがって、管理者が実行できることを制限するメカニズムがより良いでしょう。しかし、これは微妙なバランスであることを認識しています(特に、解決する必要がある生産の問題のトラブルシューティングと修正を考慮して今すぐ)。
どうしても、非常に機密性の高いデータを持つ他の組織がこの問題をどのように管理しているのでしょうか。たとえば、軍のシステム管理者:機密情報を見ることができないまま、サーバーとデータをどのように管理しますか?
編集:最初の投稿では、表面化し始めている「雇用慣行」のコメントに先制的に対処するつもりでした。 1つは、これはtechnicalの質問であると想定されており、IMOの採用慣行はsocialの質問に向かう傾向があります。しかし、2つ、私はこれを言います:私達は人々を雇うために合理的であるすべてをしますと信じています:multipleの会社の人々へのインタビュー;背景と参照チェック;すべての従業員は、IPに関する懸念を詳細に記載したハンドブックを読んで理解したことを含む、多数の法的文書に署名します。さて、それはこの質問/サイトの範囲外ですが、誰かが悪役の100%を除外する「完全な」雇用慣行を提案できれば、私はすべて耳になりました。事実は次のとおりです。(1)私はそのような完璧な採用プロセスがあるとは思いません。 (2)人々は変わります-今日の天使は明日の悪魔かもしれません。 (3)この業界では、コードの盗難の試みは日常的なもののようです。
あなたが話していることは、「悪のシステム管理者」リスクとして知られています。それの長いと短いです:
これらの組み合わせにより、悪意のある行為を阻止することは本質的に不可能になります。比較する「正常」がないため、監査でさえ困難になります。 (そして率直に言って-壊れたシステムは監査も壊れているかもしれません)。
一連の緩和策があります。
syslog
およびイベントレベルの監査。特権的なアクセス権を持たない、比較的改ざんされにくいシステムへの監査。しかし、それを収集するだけでは十分ではありません。監視する必要があります。率直に言って、監査レーダーに表示されない可能性のある情報を「盗む」方法がたくさんあります。 (密猟者対ゲームキーパー)しかし、根本的には、これは技術的なものではなく、信頼できるものであることを受け入れる必要があります。この完全な嵐の結果として、システム管理者は常に非常に危険である可能性があります。
ここまで述べたことはすべて良いものですが、不正なシステム管理者を否定するのに役立つ1つの「簡単な」非技術的な方法があります- 四つ目の原則 昇格されたアクセスには、2人のシステム管理者が必要です。
編集:私がコメントで見た2つの最大の項目は、コストと共謀の可能性について議論しています。これらの問題の両方を回避するために私が検討した最大の方法の1つは、実行されたアクションの検証にのみ使用されるマネージドサービス会社の使用です。適切に行われると、技術者はお互いを知りません。 MSPが持つべき技術力を仮定すると、アクションのサインオフを実行するのは十分簡単です。
人々が本当にシステムへの管理者アクセスを必要とするならば、そのボックスで彼らの活動を制限するためにあなたができることはほとんどありません。
大多数の組織が行うことは信頼、ただし検証-システムの一部へのアクセスをユーザーに許可する可能性がありますが、名前付き管理者アカウントを使用します(例:に直接アクセスを許可しない) root)そして、干渉しないログにアクティビティを監査します。
ここにはバランスをとる行為があります。システムを保護する必要があるかもしれませんが、仕事をするために人々を信頼する必要もあります。会社が悪質な従業員によって以前に「かまされた」場合、これは企業の雇用慣行が何らかの形で貧弱であり、それらの慣行がおそらく「トップマネージャー」によって作成されたことを示唆している可能性があります。信頼は家庭から始まります。彼らは彼らの雇用の選択を修正するために何をしていますか?
非常に技術的な考えに身を投じずに、システム管理者に権限を与えずに権限を与える方法を考え出そうとすることはありません(実行できる可能性が高いですが、最終的には何らかの欠陥があります)。
ビジネス慣行の観点からは、一連の単純なソリューションがあります。安価なソリューションではありませんが、シンプルです。
あなたが懸念しているIPの断片は分割されており、最上位の人々だけがそれらを見る力を持っていると述べました。これは本質的にあなたの答えです。複数の管理者がいる必要があり、それらのどれも、全体像をまとめるのに十分なシステムの管理者であってはなりません。もちろん、管理者が病気や自動車事故などで万が一の場合に備えて、各作品に少なくとも2人または3人の管理者が必要です。多分それらをずらします。 4人の管理者と8つの情報があるとします。管理者1はピース1と2を持つシステムにアクセスでき、管理者2はピース2と3、管理者3は3と4、管理者4は4と1にアクセスできます。各システムにはバックアップ管理者がいますが、管理者は全体像を危うくすることができます。
軍が使用する1つの手法は、データの移動の制限です。機密性の高い領域では、ディスクを書き込むことができるシステムが1つしかない場合や、USBフラッシュドライブを使用している場合、他のすべてのシステムは制限されます。そして、そのシステムを使用する能力は非常に制限されており、情報漏えいにつながる可能性のあるものにデータを置くことが許可される前に、上層部による特定の文書による承認が必要です。同じトークンに沿って、異なるシステム間のネットワークトラフィックがハードウェアファイアウォールによって制限されていることを確認します。ファイアウォールを制御するネットワーク管理者は、ルーティングしているシステムにアクセスできないため、特に情報にアクセスできず、サーバー/ワークステーション管理者は、システムとの間のすべてのデータが暗号化されるように構成されていることを確認します。ネットワーク管理者がネットワークをタップしてデータにアクセスできないこと。
すべてのラップトップ/ワークステーションには暗号化されたハードドライブが必要であり、各従業員は夜遅くにドライブ/ラップトップをロックするために必要な個人用ロッカーを持っている必要があります。彼らはそうではありません。
一日の終わりに、物理的なアクセスがすべてに勝るので、各サーバーは、少なくとも、それ自体のロックされた部屋ではなくても、それ自体のロックされたラックにある必要があります。
次に、傷つける/助けることができる練習があります。限定契約。新しい才能を引き付け続けるのに十分な金額を支払うことができると思う場合、各管理者を所定の時間(IE 6か月、1年、2年)だけ保持するオプションを使用すると、誰かが持つことのできる期間を制限できます。あなたのIPのすべての部分をまとめることを試みること。
私の個人的なデザインは、次のようなものになります...データをいくつもの断片に分割します。たとえば、番号8にするために、それぞれが独自の冗長ハードウェアセットを備えた8つのgitサーバーがあるとします。別の管理者セット。
IPにアクセスするすべてのワークステーションの暗号化されたハードドライブ。ユーザーがプロジェクトを配置できる唯一のディレクトリであるドライブ上の特定の「プロジェクト」ディレクトリを使用します。毎晩の終わりに、安全な削除ツールでプロジェクトディレクトリをサニタイズする必要があり、その後ハードドライブが削除され、ロックされています(念のため)。
プロジェクトの各ビットには異なる管理者が割り当てられているため、ユーザーは割り当てられたワークステーション管理者とのみ対話し、プロジェクトの割り当てが変更された場合、データは消去され、新しい管理者が割り当てられます。彼らのシステムには書き込み機能がなく、セキュリティプログラムを使用して、許可なしにデータを転送するUSBフラッシュドライブの使用を防ぐ必要があります。
これからあなたは何をしますか。
これは、建物の管理人を雇うという課題に似ています。用務員はすべての鍵を手に入れ、どのドアも開くことができますが、その理由は、用務員が仕事をするためにそれらを必要とするためです。システム管理者と同じです。対称的に、この古くからの問題を考え、歴史的に信頼が与えられている方法を見ることができます。
完全に解決された技術的な解決策はありませんが、何も試していない理由がないはずであるという事実は、不完全な解決策の集合体がいくらか素晴らしい結果をもたらす可能性があります。
信頼が得られるモデル:
いくつかのレベルの管理権限を実装します:
常に一人でアクセスできない環境を作ります:
高レベルのコア変更を行う場合は、2人ルールを使用します:
信頼および検証:
ペーパーワーク:
管理アクセス権を持つホストからホストを保護することは非常に困難です。 PowerBroker のようなツールがこれを試みますが、コストがかかると、壊れる可能性のある何かが追加されます[〜#〜]および[〜#〜]修正の試みに障壁を追加します。このようなものを実装すると、システムの可用性[〜#〜] [〜#〜]が低下するため、物事を保護するコストとして早期にその期待値を設定します。
もう1つの可能性は、アプリがクラウドプロバイダーを介して使い捨てホストで実行できるか、ローカルにホストされているプライベートクラウドで実行できるかどうかを確認することです。障害が発生した場合、管理者を派遣して修正する代わりに、それを破棄して代替品を自動ビルドします。このモデルで実行するには、アプリケーション側でかなりの作業が必要になりますが、運用とセキュリティに関する多くの問題を解決できます。不十分に実行すると、重大なセキュリティ問題が発生する可能性があるため、その方法を使用する場合は、経験豊富な支援を受けてください。
これはあなたのベースラインディスカッションです: https://security.stackexchange.com/questions/7801/keeping-secrets-from-root-on-linux
システムの構成とインストールを担当するセキュリティエンジニアを任せることで責任を分担しますが、彼らは本番環境のマシンに資格情報やアクセス権を取得しません。また、監査インフラストラクチャも実行します。
システムを受け取っているが、SELinuxポリシーがアクティブでないとマシンを起動するためのキーを持っていない運用管理者がいる。壊れたマシンがサービスから引き出されたときに備えて、ディスクに保存されている機密データを暗号化解除するためのキーをセキュリティが取得しません。
Vault のような強力な監査を備えた集中認証システムを利用し、その暗号操作を利用します。 Yubikeyデバイスを配布して、キーを完全に非公開にして読み取り不可能にします。
マシンは、破損時に一掃されるか、オペレーションとセキュリティによって一緒に処理されます。必要に応じて、経営陣による監視が必要です。
仕事の性質上、管理者はすべてにアクセスできます。管理者の資格情報を使用して、ファイルシステム内のすべてのファイルを表示できます。そのため、管理者がファイルを見ることができないようにファイルを暗号化する方法が必要ですが、ファイルは、それを見る必要のあるチームが引き続き使用できます。 Vormetric Transparent Encryptionを調べてください( http://www.vormetric.com/products/transparent-encryption )
それが機能する方法は、ファイルシステムとそれにアクセスするアプリケーションの間に位置することです。管理者は、「Webサーバーデーモンを実行しているhttpdユーザーのみが暗号化されていないファイルを見ることができる」というポリシーを作成できます。その後、ルート認証情報を持つ管理者は、ファイルを読み取って、暗号化されたバージョンのみを取得できます。しかし、Webサーバーとそれに必要なツールでは、暗号化されていないように見えます。バイナリのチェックサムを実行して、管理者が移動しにくくすることもできます。
もちろん、監査を有効にして、管理者がファイルにアクセスしようとしたときにメッセージにフラグが付けられ、人々がそれを知っているようにする必要があります。
唯一の実用的な方法は、Sudoで誰が何をできるかを制限することです。また、selinuxを使用してほとんどのことを実行できる可能性もありますが、正しい構成を理解するのにおそらく時間がかかるため、実用的ではありません。
機密保持契約。システム管理者を雇い、彼らはNDAに署名する必要があります。約束を破った場合は、法廷に連れて行きます。これは防止彼らが秘密を盗むことを許可しないかもしれませんが、彼らがそれを行うことによって引き起こしたいかなる損害も法廷で回復可能です。
軍事および政府のシステム管理者は、資料の機密性に応じて、さまざまな等級のセキュリティクリアランスを取得する必要があります。クリアランスを取得できる人は、盗んだり、だましたりする可能性が低いという考えです。
リスクを下げるもう1つの方法(前に述べたものの代わりに使用するのではなく)は、システム管理者に多額のお金を支払うことです。彼らがあなたのIPから盗んであなたから離れたくないように彼らにとても良いお金を払ってください。
この質問は、次のようないくつかの詳細なしに完全に答えることはできないかもしれないと思います:
「制限された」状態を維持すると予想されるシステム管理者は何人ですか?
人々は何をするために「sysadmin」アクセスを必要としますか?
まず最初に、Sudoで何ができるかを意識してください。 Sudoを使用すると、昇格したアクセス許可で単一のコマンド(または "mount -r"で始まるが他のコマンドは許可されないコマンドなど)のみを実行することを許可できます。 SSHキーを使用すると、特定のコマンドのみを実行できるようにする資格情報を割り当てることができます(「Sudo mount -r/dev/sdd0/media/backup」など)。したがって、ほとんどすべての人(SSHキーを持っている人)が他のすべてを絶対に行わせずに特定の操作を実行できるようにする比較的簡単な方法があります。
技術者に問題点の修正を実行してもらいたい場合、状況は少し難しくなります。これには通常、より多くの権限、および多分さまざまなコマンドを実行するためのアクセス、および/またはさまざまなファイルへの書き込みが必要になる可能性があります。
CPanel(多くのISPで使用されている)などのWebベースのシステムやクラウドベースのシステムのアプローチを検討することをお勧めします。多くの場合、マシン全体を廃止することで、マシンの問題を解消できます。したがって、人は、マシンに代わるコマンド(またはマシンを既知の良好なイメージに復元する)を実行でき、必ずしも大量のデータを読み取るためのアクセス権を与えたり、小さな変更(マイナーな修正の組み合わせなど)を与えたりする必要はありません。不正なバックドアの導入に伴い)。次に、画像を作成する人を信頼する必要がありますが、小さなことを行うために信頼する必要がある人の数を減らします。
ただし、最終的には、システムの設計を支援し、最高レベルで動作するゼロでない数人の人々に、ある程度の信頼を提供する必要があります。
大企業が行うことの1つは、SQLサーバーのようなものに依存することです。SQLサーバーには、多数のマシンからリモートアクセスできるデータが格納されています。そうすると、より多くの技術者が、SQLサーバーへのルートアクセス権を持たずに、一部のマシンで完全なルートアクセス権を持つことができます。
別のアプローチは、失敗するには大きすぎることです。大規模な軍事組織や巨大企業がセキュリティインシデントに遭遇したことはないと考えてはいけません。ただし、次の方法は知っています。
基本的な仮定は、発生する損害は単にビジネスを行う際のリスクとコストであるということです。彼らは運用を継続することを期待しており、長年にわたる継続的な開発と改善により、単一のインシデントが長期間にわたって実際に長期的な価値に実際に影響を与える可能性のある損害が制限されます。
ルート管理マシンを2つの鍵でロックされた部屋に置き、2人の管理者それぞれに1つだけを与えます。管理者は常に協力して、お互いの活動を観察します。これは、rootとしてログインするための秘密鍵を含む唯一のマシンでなければなりません。
一部のアクティビティはroot権限を必要としない場合があるため、作業の一部のみが「ペアプログラミング」のためにその部屋に移動する必要があります
また、その部屋でのアクティビティをビデオ録画して、主に誰も一人で作業しないようにすることもできます(それだけは簡単に見える)。また、作業場所が両方の人にとって画面が見やすい場所にあることを確認してください(おそらく大きなフォントの大きなテレビ画面)。
プロアクティブなチェックを行うことは非常に困難です。
http://software.Dell.com/solutions/privileged-management/ のようなソリューション(Dellでは機能しません。他の同様のソリューションが利用可能です)は、sysadminのアカウンタビリティの実施に非常に効果的です。