通过任意浏览器监控访客账户访问过的网站

通过任意浏览器监控访客账户访问过的网站

我想知道我家里的电脑的访客帐户的用户访问了哪些网站/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 标志(新连接)的数据包。这也是由于上述误解造成的。

实现你想要的方法是:

  1. 安装一个网络代理(最好是轻量级的,例如 tinyproxy)。
  2. 添加 iptables 规则,将仅特定用户到端口 80,443/tcp 的传出连接重定向到本地代理。

我所想的这里(不是我的帖子)。这样,您将获得一个包含所有 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"

这样也许能有所帮助。

相关内容