2016-02-17 6 views
5

私は、プロセスが動作するために必要なLinuxの機能を知りません。 何が最善の方法ですか、どのような上限が必要かを知る方法はありますか?プロセスが動作するために必要なLinuxの機能を確認するには?

私が今考えることのできる唯一のことは、プロセス上でcapshを使い、すべてのキャップを削除することだけです。プロセスは失敗し、動作するまで大文字を追加し始めます(--drop = CAP_XZYを削除します)。

もっと良い提案がありますか?

+0

私は、インストーラが必要な機能を設定することを期待しています。 – Barmar

+0

もしあなたがプロセスが何をしているのか正確に説明すれば...? – Paul

+0

@Paul ok具体的な例を作りましょう: '#capsh --drop = cap_net_raw - -c" ping localhost " ping:icmpオープンソケット:操作が許可されていません。" この場合、私はpingに必要なキャップを落としますpingを実行します。もちろん、それは動作しません。このシナリオを考えると、pingにcap_net_rawが必要であることをどのようにして知ることができますか?プロセスが特定の上限を必要とするものを行う状況があります。どのようにして見つけ出すことができますか? – rand0m

答えて

0

私はこのblog post by Brendan Greggでしばらく前に遭遇してきた別の方法は、使用することです能力トレーサ - 可能。以下

サンプル出力である:

$ sudo /usr/share/bcc/tools/capable 
TIME  UID PID COMM    CAP NAME     AUDIT 
11:31:54 0  2467 capable   21 CAP_SYS_ADMIN  1 
11:31:54 0  2467 capable   21 CAP_SYS_ADMIN  1 
11:31:59 1000 2468 ls    1 CAP_DAC_OVERRIDE  1 
11:31:59 1000 2468 ls    2 CAP_DAC_READ_SEARCH 1 
11:32:02 0  1421 timesync   25 CAP_SYS_TIME   1 
11:32:05 1000 2469 sudo    7 CAP_SETUID   1 
11:32:05 0  2469 sudo    6 CAP_SETGID   1 

それは、所与のプロセスのためにカーネルによって作ら記録能力チェックの重要な利点を有しています。これにより、アプリケーションが実際に必要とする能力(例えば、権限を絞り込んで特権のないユーザーとして実行します。

pscapは、すべての実行中のプロセスの効果的な機能を一覧表示することができますが、それは能力が実際にプロセスで必要とされているチェックの信頼性の高い方法を提供していません、理由:

  • プロセス許可されたセット内で能力Xを有することができ、特権動作を実行するために有効なセットに短時間だけそれを上げることができる。
  • より広範な機能セットでプロセスを開始できた可能性があります。初期化には昇格された権限が必要であり、いくつか(またはすべて)の機能(たとえばping opening a raw socket)を削除する必要があります。
  • これは、すでに機能ベースで実行されているプロセスに対してのみ機能します。新しく開発したアプリケーションに必要な最小限の能力を決定する必要がある場合はどうすればよいですか?
  • アプリケーションに対して実行された特権チェックと、実行する操作とを関連付けることはできません。が可能です。タイムスタンプは一度だけチェックされます。

のソースがの場合、githubで入手できます。 BCCのインストール手順(対応可能を含む)は、hereが利用可能です。 詳細については、冒頭で述べたブログ記事を参照してください。また、対応するにはカーネル4.4+が必要であることに注意してください。古いカーネルの代替手段もブログのポストにあります。

注:私は著者ではなく、私はツール開発者とは何ら関係していません。かつてフルルート特権を必要としていた複雑な監視アプリケーションの機能プロファイルを開発するために個人的に使用して以来、より多くのユーザーに提供したいと思っていました。

+0

これはすばらしい答えです。ありがとうございました! – rand0m

3

予想よりも簡単です。 libcap-ng(https://people.redhat.com/sgrubb/libcap-ng/)をインストールし、pscapを使用してください。 、それは一緒にインストールすることができますUbuntuの16.04で

sudo apt-get install libcap-ng-utils 

サンプル出力の抜粋:

ppid pid name  command   capabilities 
1  468 root  systemd-journal chown, dac_override, dac_read_search, fowner, setgid, setuid, sys_ptrace, sys_admin, audit_control, mac_override, syslog, audit_read 
1  480 root  lvmetad   full 
1  492 root  systemd-udevd  full 
1  1040 root  rpc.idmapd  full 
1  1062 root  rpc.gssd   full 
1  1184 messagebus dbus-daemon  audit_write + 
1  1209 root  NetworkManager dac_override, kill, setgid, setuid, net_bind_service, net_admin, net_raw, sys_module, sys_chroot, audit_write 
関連する問題