プロセスを起動してtop
コマンドから見えないようにするにはどうすればよいですか?プロセスは(rootではなく)通常のユーザーによって開始され、他の通常のユーザーには表示されません。
プロセスを起動してtop
コマンドから見えないようにするにはどうすればよいですか?プロセスは(rootではなく)通常のユーザーによって開始され、他の通常のユーザーには表示されません。
回答:
3.3以降のLinuxカーネルには、他のユーザーに対してプロセスを非表示にするサポートが含まれています。
対応するcommitおよびDocumentation / filesystems / proc.txtで説明されているように、 / procのマウントオプションhidepid=
とgid=
マウントオプションが実行されます。
Debian Wheezyにはこの機能も含まれています。
このtop
コマンドは、カーネルから直接提供されるprocからデータを読み取ります。プロセスを隠すには、カーネル内のコードを使用してマスキングを行う必要があります。
SELinuxやgrsecurityのようなセキュリティフレームワーク(他の回答で説明)を使用する以外に、ルートキットスタイルのコードが唯一の残りのオプションです。「スタイル」と言うのは、「ルートキット」自体は悪くなく、それがどのように使用されるかです。他のユーザーからプロセスを隠す背後には完全に正当な理由があります。そのため、この機能はセキュリティフレームワークに存在します。
これを機能させるために従う必要がある基本的なルートは、/proc/pid/
データを渡すLinuxカーネルの関数にフック(または見方によってはハイジャック)することです。私が書いたセキュリティモジュールでLinuxカーネル関数にフックする1つの方法を示します。
https://github.com/cormander/tpe-lkm
このための「高レベル」コードはのhijack_syscalls()
メソッドにありsecurity.c
、その背後にある悪魔の魔法はhijacks.c
ファイルにあります。
おそらくfs/proc/
、Linuxカーネルのソースコードのディレクトリで、フックしたい関数を見つけるでしょう。Linuxは安定したABIを提供しないため、Linuxカーネルの異なるバージョンで動作させるには、コードを多少変更する必要があることに注意してください。また、このコードを挿入できるようにするには、マシンへの完全なルートアクセスが必要であることに注意してください。
更新:
pid_getattr
カーネルシンボルをいくつかの追加コードでラップすると、簡単に実行できます。最近、上記のカーネルモジュールにプロセスを隠すものを追加しました。
https://github.com/cormander/tpe-lkm/commit/899bd5d74764af343d5fee1d8058756ddc63bfe3
特定のユーザーまたはグループのプロセスを、rootおよびそのユーザー以外のユーザーが表示できないようにすることで、同様のことができます。プロセス名で行うのはもう少し複雑ですが、可能です。exe_from_mm()
機能をご覧ください。の内部で使用するとパフォーマンスに影響する可能性があることに注意してくださいpid_getattr
。
2つの主なオプションのようです。
Selinuxは、さまざまな人々をさまざまなセキュリティドメインに配置し、ある意味でサンドボックス化して、互いを見ることができないようにします。これはこの質問でカバーされています。selinuxはLinuxの世界で事実上のセキュリティフレームワークになりつつあるため、これはおそらくあなたが見るべき方向です。
他はGrsecurityにより開発されmariooshで述べた とのように、この質問に尋ねました。一部のディストリビューションには、grsecurityパッチが適用された代替カーネルパッケージがあります。あなたがこれを持っているなら、あなたはそれらを使うことを検討するかもしれません。
何らかの理由でselinuxやgrsecurityなどのセキュリティフレームワークを追加せずにこれを実行したい場合は、ルートキットを作成していないことを説明してください。
標準のLinuxボックスではそれほど単純ではありません。grsecurityを見てくださいが、カーネルなどにパッチを当てる必要があります。
argv [0]を別の名前で上書きすることもできますが、厳密に言えば、何らかのルートキットを探しています。これはあなたを助けるかもしれません:http : //stupefydeveloper.blogspot.com/2008/10/linux-change-process-name.html
this_is_not_the_process_you_are_looking_for
?