6

私はLinuxに非常に慣れていないため、初心者の質問で申し訳ありません. 宿題の追加クレジットの質問をしようとしていたのですが、それを取得できませんでした。

Q. すべてのプロセスについて次の情報をログに記録するセキュリティ シェル スクリプトを作成します。 ) 作成されたログは process_security_log と呼ばれ、上記の各情報が個別の行に格納され、各エントリがすぐ後に続きます (つまり、空白行はありません)。このログを調べて、保護されたファイルにアクセスしようとした実行中のプロセスのユーザー ID を出力するシェル スクリプトを作成します。

ユーザーをキャプチャしてエコーすることから始めましたが、失敗しました。

output=`ps -ef | grep [*]`
set -- $output
User=$1
echo $User
4

3 に答える 3

1

の出力psは不十分であり、この質問に必要なデータを生成できません。

セキュリティログの領域でリモートで何かを行うには、auditd、SELinux、またはカーネルハック (つまり、fork.c) のようなものが必要です。

アップデート

ps他の人は、シェル コマンドのログ記録とその仲間 (proc または sysfs)を使用することを提案しています。それらは役に立つ可能性があり、その場所があります (明らかに)。特に教育的な文脈では、この目的のためにそれらに頼るべきではないと私は主張します.

... プロセスが安全なファイルにアクセスしようとしたかどうか (yes または no として保存)

他の回答が無視しているようです。私は元の答えを支持しますが、ダニエルが指摘するように、このデータを飾る他の興味深い方法があります。

教育的な演習では、これらのツールはより完全な答えを提供するのに役立ちます。

于 2012-05-04T02:45:48.767 に答える
0

これは宿題なので、このシナリオは現実世界のシナリオではなく、単なる学習課題であると想定しています。シェルは、セキュリティ監査やプロセス アカウンティングを行うのに適した場所ではありません。ただし、シェル プロンプトで実行できる操作を見つけるのに役立つヒントをいくつか紹介します。

  1. プロセスのロギングを行うために bash PROMPT_COMMAND を設定できます。
  2. ロギングで使用するコマンド履歴を使用できtailます。grep
  3. /usr/bin/script(通常は bsdutils パッケージに含まれています) を使用して、セッションの typescript を作成できます。
  4. psサブシェルまたはユーティリティを使用してループで実行し、watch現在実行中のプロセスを確認できます。
  5. pidofまたはを使用するpgrepと、プロセスをより簡単に見つけることができます。
  6. .bashrc またはその他のシェル起動ファイルを変更して、環境をセットアップしたり、ログ ツールを起動したりできます。

出発点として、次のような些細なことから始めることができます。

$ export PROMPT_COMMAND='history | tail -n1'
 56 export PROMPT_COMMAND='history | tail -n1'
$ ls /etc/passwd
/etc/passwd
 57 ls /etc/passwd

必要と思われる追加のログ データまたはプロセス情報を組み込みます。あなたが正しい方向に向けられることを願っています!

于 2012-05-04T05:32:14.573 に答える
0

/proc pseudo-filesystemを見てください。

この内部には、現在実行中のすべてのプロセスのサブディレクトリがあります - プロセス [pid] は /proc/[pid]/ で利用可能な情報を持っています。そのディレクトリ内で、/prod/[pid]/stat/ または /proc/[pid]/status を使用して、どのユーザーがいつプロセスを開始したかに関する情報を取得できます。

「安全なファイル」という割り当てが何を意味するのかはわかりませんが、どのファイルが安全であるかを判断する方法があれば、 /prod/[pid]/fd を通じて開いているファイルに関する情報 (ファイル名を含む) を取得できます。 / および /prod/[pid]/fdinfo.

/proc は真のセキュリティ ログに十分ですか? いいえ、しかし /proc は、システムで現在実行されているプロセスに関する情報を取得するのに十分です。これはおそらく、シェル スクリプトに関する宿題に必要なものです。また、このクラスの外では、プロセスのマップされたページを表示するなど、後で /proc が他の目的に役立つことがわかるでしょう。これは、スタック トレース ユーティリティを作成している場合や、それらがどのように機能するかを知りたい場合、またはメモリ マップ ファイルを使用するコードをデバッグしている場合に役立ちます。

于 2012-05-04T05:42:54.547 に答える