
我想知道我的家庭電腦的訪客帳戶的使用者造訪了哪些網站/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
我認為您的意圖在這裡很明確:記錄任何使用任何應用程式作為訪客用戶訪問的網站的 URL。
建議使用 iptables 日誌記錄來完成此任務是不正確的。 iptables(沒有一些晦澀的、限制效能的擴展)在 IP 協定上工作,而不是在應用程式層級上工作。
我還在作為註釋建議的 URL 中看到了建議 - 回應者建議僅捕獲帶有 SYN 標誌的資料包(新連接)。這也是上述誤解造成的。
實現你想要的方法是:
- 安裝網路代理程式(最好是輕量級的,例如tinyproxy)。
- 新增 iptables 規則,將僅由特定使用者發出的到連接埠 80,443/tcp 的傳出連線重新導向至本機代理程式。
我的想法已被描述這裡(不是我的帖子)。這樣您就可以獲得一個 Web 代理程式日誌,其中記錄了所有 HTTP 請求。不過,您不會獲得與 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"
這樣可能會有所幫助。