
Gibt es auf CentOS-Servern ein Protokoll, das jede Verbindung von/zu aufzeichnet?
also so etwas wie ein zentrales Verbindungsprotokoll
Antwort1
Die einzige sichere Möglichkeit, ein zentrales Protokoll aller TCP-Verbindungen zu erhalten, besteht darin, LOG
Ihrer Software-Firewall-Konfiguration Regeln hinzuzufügen, die alle Pakete mit gesetzten SYN- und ACK-Bits protokollieren, also das zweite Paket einer TCP-Verbindung. Diese würden standardmäßig iptables
als Kernel-Protokollmeldungen angezeigt ./var/log/messages
Bitte beachten Siediese Frage bei Server Fault.SE.
Im Wesentlichen möchten Sie iptables-Regeln wie diese hinzufügen:
iptables -A OUTPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Inbound connection established: "
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -j LOG --log-prefix "Outbound connection established: "
(Möglicherweise möchten Sie diese Regeln in Ihren vorhandenen Regelsatz einfügen, sodass sie nicht auf die Loopback-Schnittstelle angewendet werden, da dadurch möglicherweise zwei Einträge für jede lokale Verbindung zwischen Anwendungsprozessen innerhalb des Hosts generiert werden.)
Und ja, die Regel in der OUTPUT-Kette zeichnet eingehende Verbindungen auf und umgekehrt, da hierdurch nur Verbindungen protokolliert werden, auf die tatsächlich geantwortet wird: Wenn nur die SYN-Pakete aufgezeichnet würden, würden auch Verbindungsversuche aufgezeichnet, die abgelehnt werden. Aufgrund von Port-Scans, die von Malware-verseuchten Systemen im Internet ausgeführt werden, würden Sie dadurch häufig viele nutzlose Protokolleinträge erhalten: Sie müssten diese mit anderen Protokollen abgleichen, nur um herauszufinden, dass Sie entweder einen solchen Dienst überhaupt nicht ausführen oder dass die Verbindung von einer anderen iptables
Regel oder dem betreffenden Dienst abgelehnt wurde.
Bei UDP-Protokollen ist es schwieriger, da UDP verbindungslos ist und im Grunde nur eine Plattform darstellt, auf der ein anwendungsspezifisches Protokoll erstellt werden kann. Es gibt also keine einfache Möglichkeit, „das erste Paket einer Verbindung“ oder ähnliches zu erkennen, da dies alles vollständig anwendungsspezifisch ist.
Antwort2
Ich denke, das sollte reichen:
journalctl -fu sshd
oder
journalctl -u sshd -n 100
Das heißt, wenn Sie systemd ausführen, was meines Erachtens die Standardeinstellung ist. Ersteres überwacht das System. Letzteres entspricht der Weiterleitung über tail.
(Beim Herumlesen scheint es darauf hinzudeuten, dass die Protokolle eigentlich in /var/log/secure liegen sollten)