
Ich möchte wissen, welche Websites/URLs von Benutzern des Gastkontos meines Heimcomputers besucht werden.
Gibt es eine Möglichkeit, dies zu protokollieren und als schön formatierte Liste auf der Festplatte zu speichern? Ich brauche nur Datum/Uhrzeit und die besuchte URL. Wenn möglich, wären vollständige URLs nett, aber für den Anfang ist auch nur die Domain gut.
Aktualisieren:
Nachdem Sie die verlinkten Antworten und Vorschläge im Chat vonABhabe ich den folgenden Befehl ausgeführt:
$ sudo iptables -A OUTPUT -m owner --uid-owner 499 -j LOG --log-prefix='[GUEST INTERNET ACCESS] '
nachdem die Gastkonto-UID auf die feste UID 499 gesetzt wurdeFestlegen oder Bestimmen des UID-Bereichs für Gastkonten.
Diese Protokolle sind jedoch /var/log/kern.log
immer noch nicht enthalten, dafür aber zahlreiche Nachrichten, apparmor
die darauf hinweisen, dass etwas verneint wurde:
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
Ich habe hier eine separate Frage zum AppArmor-Problem gepostet:AppArmor blockiert die über iptables eingerichtete Protokollierung für das Gastkonto – Wie wird sie aktiviert?
Antwort1
Ich denke, Ihre Absicht ist hier klar: Protokollieren Sie die URLs von Websites, die von jemandem besucht werden, der eine beliebige Anwendung als Gastbenutzer verwendet.
Der Vorschlag, diese Aufgabe mithilfe der iptables-Protokollierung zu erfüllen, ist nicht korrekt. iptables (ohne einige obskure, die Leistung einschränkende Erweiterungen) arbeitet auf dem IP-Protokoll und nicht auf Anwendungsebene.
Ich habe auch Vorschläge in den als Kommentare vorgeschlagenen URLs gesehen - die Antwortenden schlugen vor, nur Pakete mit SYN-Flags (neue Verbindungen) zu erfassen. Auch das resultiert aus einem oben beschriebenen Missverständnis.
So erreichen Sie Ihr Ziel:
- Installieren Sie einen Webproxy (vorzugsweise einen einfachen, wie z. B. Tinyproxy).
- Fügen Sie iptables-Regeln hinzu, die ausgehende Verbindungen, die nur von einem bestimmten Benutzer hergestellt werden, über die Ports 80.443/tcp zum lokalen Proxy umleiten.
Was ich im Sinn hatte, ist beschriebenHier(nicht mein Beitrag). Auf diese Weise erhalten Sie ein Webproxy-Protokoll, in dem alle HTTP-Anfragen protokolliert sind. Sie erhalten jedoch keine Protokolle im Zusammenhang mit SSL-geschütztem Datenverkehr, was eine gute Sache ist.
Um es noch einmal zu wiederholen: URLs sind nicht Teil der IP- oder TCP-Headerstruktur. Daher kann Ihnen etwas, das auf IP/TCP-Ebene arbeitet, diese Daten nicht anzeigen, es sei denn, es verfügt über einen TCP-Dissektor (tcpdump/Wireshark können dies, aber nicht iptables allein).
Antwort2
Haben Sie Folgendes versucht:
sudo iptables -A output -m owner --uid-owner 499 -j log --log-prefix="'/var/log/kern.log$'uri"
und vielleicht hilft es auf diese Weise gut.