AppArmor 阻止通过 iptables 为访客帐户设置的日志记录 - 如何启用?

AppArmor 阻止通过 iptables 为访客帐户设置的日志记录 - 如何启用?

记录本地互联网使用情况(访问过的 URL)来宾帐户,我问了这个问题通过任意浏览器监控访客账户访问过的网站并在分配来宾帐户后固定 UID 499并设置iptables下面的规则,我没有收到想要的日志消息,但收到了阻止日志记录尝试的/var/log/kern.log消息。apparmor

我如何告诉 AppArmor 允许访客帐户(随机名称,但固定 UID)通过记录其网络使用情况iptables

iptables我制定的规则:

sudo iptables -A OUTPUT -m owner --uid-owner 499 -j LOG --log-prefix='[GUEST INTERNET ACCESS] '

出现的以下消息的一个示例行/var/log/kern.log(已重新格式化以提高可读性):

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

更多系统信息:

$ uname -a
Linux wolf-pack 4.2.0-18-generic #22-Ubuntu SMP Fri Nov 6 18:25:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:    15.10
Codename:   wily

$ unity --version
unity 7.3.2

$ apt-cache policy apparmor | grep Installed
  Installed: 2.10-0ubuntu6

$ iptables --version
iptables v1.4.21

输出sudo apparmor_status

apparmor module is loaded.
23 profiles are loaded.
23 profiles are in enforce mode.
   /sbin/dhclient
   /usr/bin/evince
   /usr/bin/evince-previewer
   /usr/bin/evince-previewer//sanitized_helper
   /usr/bin/evince-thumbnailer
   /usr/bin/evince-thumbnailer//sanitized_helper
   /usr/bin/evince//sanitized_helper
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/cups/backend/cups-pdf
   /usr/lib/lightdm/lightdm-guest-session
   /usr/lib/lightdm/lightdm-guest-session//chromium
   /usr/lib/telepathy/mission-control-5
   /usr/lib/telepathy/telepathy-*
   /usr/lib/telepathy/telepathy-*//pxgsettings
   /usr/lib/telepathy/telepathy-*//sanitized_helper
   /usr/lib/telepathy/telepathy-ofono
   /usr/sbin/cups-browsed
   /usr/sbin/cupsd
   /usr/sbin/cupsd//third_party
   /usr/sbin/ippusbxd
   /usr/sbin/tcpdump
0 profiles are in complain mode.
6 processes have profiles defined.
6 processes are in enforce mode.
   /sbin/dhclient (1138) 
   /usr/lib/telepathy/mission-control-5 (4700) 
   /usr/sbin/cups-browsed (777) 
   /usr/sbin/cupsd (5626) 
   /usr/sbin/cupsd (5651) 
   /usr/sbin/cupsd (5652) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

答案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 不能单独做到这一点)。

相关内容