web-dev-qa-db-ja.com

SELinuxポリシーを使用してプライベートsshキーへのアクセスを制限するにはどうすればよいですか?

私はFedoraディストリビューションを使用しています-プリインストールされたSELinuxポリシーを使用しています。 ~/.sshフォルダー内の秘密鍵への安全でないアクセスを制限したい-私のアカウントで実行される可能性のあるマルウェアによるリークを防ぐため。ルートキットは問題外です。


更新#1:初心者のFedoraユーザーのエンタープライズ問題を解決したい-USBトークンなどなし。彼らは非常に弱いパスフレーズを使用している可能性があります。 rootユーザーとsshクライアントプログラムのみが秘密鍵にアクセスできる場合は、問題ありません。実際の人間のユーザーが秘密鍵を見る必要はありません-誰かのために一度でも秘密鍵を見る理由はわかりません。


どうやってやるの? SELinuxの使用を提案します。

6
abyss.7

秘密鍵の使用を許可されている人から秘密鍵を隠す適切な方法は、ハードウェアセキュリティモジュールです(スマートカードなどが適切に機能します)。 SSHキーを少し努力することでこれを行うことができます(グーグル検索が表示されます いくつかの不格好なハードウェアとGPGを使用したこのチュートリアル )。

ただし、シェルではないものを取得することを心配している場合は、多くのエクスプロイトがシェルを取得することを念頭に置いて、AppArmourはこの方法でファイルシステムのアクセス許可を制限できますが、ホームディレクトリ内でそれを行うのは少しだと思いますマルチユーザーシステムの管理はより注意が必要です。

SELinuxもこれを行うことができます。 ファイルにセキュリティラベルを付け、sshのみにファイルの読み取りを許可します

ユーザーは通常、独自のSSHキーを作成でき、通常はそれらの所有者であることに注意してください。つまり、ユーザーはどのようなラベルや権限を設定しても調整できます。これは存在する仮定です。

ウイルスを実行する場合は、これよりもはるかに安全にするために従うことができるいくつかのルールがあります。

  • 意図的にウイルスを実行するマシンは、ある程度隔離する必要があります。具体的には、それらは何かへのジャンプボックスとして機能することができないはずです。最低限必要な範囲まで、(独自のVLAN上で)ネットワークアクセスを制限する必要があります。 X.509秘密鍵やSSH秘密鍵のような資格情報を持ってはいけません。これにより、何に対しても認証できるようになります。
  • これらのマシンをオフラインで迅速に再構築する機能を保持する必要があります。これにより、スナップショットが作成されたVMは、このタイプの調査に非常に適しています。
  • 気になるものは、ウイルスの実行に使用されるマシンに保存しないでください。
  • ウイルスがあなた自身で作ったものであるか、それらの操作があなたの管理下にある場合は、可能な限り、それらを不活性にしてください。 C&Cアドレスはブラックホールである必要があります(テストと文書化のために予約されたIPである192.0.2.1が適切です。0.0.0.0も適切な場合があります; blackhole.iana.orgは適切なDNS名です)。それらが実際のアドレスである必要がある場合は、制限されたネットワーク上でそれらの特別なテストC&Cをホストできます。
  • 他人のC&Cや自分が管理していないウイルスを使用する場合は、十分に注意してください。これを行う場合は、LANに関連付けられていない別のインターネット接続のローカルコンソールで行うのが最善です。

誤ってウイルスを実行することを心配している場合は、selinuxが役立つかもしれませんが、これに対する本当の解決策は常識と十分な注意です。

秘密鍵をパスワードで保護することもできます。これにより、秘密鍵が暗号化されますが、ウイルスによってキーストロークがそれを回避する可能性があります。

3
Falcon Momot

マルウェアがあなたの資格情報を使用して実行される場合、SELinuxはこのジョブに適したツールではないと思います。何を配置しても、キーへのアクセスが確実に阻止されるためです。

秘密鍵には、連携して機能する非常に強力なセキュリティメカニズムが組み込まれています。キーは、所有者のみが読み取り可能である必要があります。強力なパスフレーズを追加すると、心配することはほとんどありません。

3
user9517