
自宅のコンピューターのゲスト アカウントのユーザーがどの Web サイト/URL にアクセスしているかを知りたいです。
これをログに記録し、きれいにフォーマットされたリストとしてディスクに保存する方法はありますか? 必要なのは日付/時刻とアクセスした URL だけです。可能であれば、完全な URL があればよいのですが、最初はドメインだけでもかまいません。
アップデート:
チャット内のリンクされた回答と提案を読んだ後、AB次のコマンドを実行しました:
$ sudo iptables -A OUTPUT -m owner --uid-owner 499 -j LOG --log-prefix='[GUEST INTERNET ACCESS] '
ゲストアカウントのUIDを固定UID 499に設定した後、ゲストアカウントのUID範囲を設定または決定する。
しかし、まだそれらのログは含まれていませんが、何かが拒否されたことを知らせる/var/log/kern.log
多くのメッセージがあります。apparmor
Nov 18 11:19:22 wolf-pack kernel: [ 1030.063374] audit: type=1400 audit(1447841962.731:164): apparmor="DENIED" operation="connect" profile="/usr/lib/lightdm/lightdm-guest-session" name="/run/systemd/journal/stdout" pid=4693 comm="dbus-daemon" requested_mask="w" denied_mask="w" fsuid=499 ouid=0
AppArmor の問題に関する別の質問をここに投稿しました:AppArmor は、ゲスト アカウントの iptables を通じて設定されたログ記録をブロックします - 有効にするにはどうすればよいですか?
答え1
ここでの意図は明確だと思います。つまり、ゲスト ユーザーとして任意のアプリケーションを使用しているユーザーがアクセスした Web サイトの URL をログに記録することです。
このタスクを達成するために iptables のログ記録を提案するのは正しくありません。iptables (わかりにくいパフォーマンスを制限する拡張機能なし) は、アプリケーション レベルではなく、IP プロトコルで動作します。
コメントとして提案された URL にも、SYN フラグ (新しい接続) を持つパケットのみをキャプチャするようにという提案が見られました。これも、前述の誤解から生じたものです。
望むことを達成する方法は次のとおりです。
- Web プロキシ (tinyproxy などの軽量プロキシが望ましい) をインストールします。
- 特定のユーザーのみがポート 80,443/tcp に対して行った送信接続をローカル プロキシにリダイレクトする iptables ルールを追加します。
私が考えていたことはここ(私の投稿ではありません)。この方法では、すべての HTTP リクエストが記録された Web プロキシ ログが取得されます。ただし、SSL で保護されたトラフィックに関連するログは取得されません。これは良いことです。
繰り返しますが、URL は IP または TCP ヘッダー構造の一部ではないため、IP/TCP レベルで動作するものは、TCP 解析ツールがない限り、このデータを表示することはできません (tcpdump/wireshark はこれを実行できますが、iptables だけでは実行できません)。
答え2
これを試しましたか:
sudo iptables -A output -m owner --uid-owner 499 -j log --log-prefix="'/var/log/kern.log$'uri"
そして、この方法でうまくいくかもしれません。