it-swarm.com.de

Protokollieren von SSH-Zugriffsversuchen

Ich habe einen Ubuntu-Server mit openssh konfiguriert, um eine Verbindung herzustellen und Befehle von einem Remote-System wie einem Telefon oder einem Laptop auszuführen. Das Problem ist ... ich bin wahrscheinlich nicht der einzige.

Gibt es eine Möglichkeit, alle Anmeldeversuche zu kennen, die auf dem Server unternommen wurden?

64
UserK

Auf Ubuntu-Servern können Sie in der Datei /var/log/auth.log Finden, wer sich wann (und von wo) angemeldet hat. Dort finden Sie Einträge wie:

May  1 16:17:02 owl CRON[9019]: pam_unix(cron:session): session closed for user root
May  1 16:17:43 owl sshd[9024]: Accepted publickey for root from 192.168.0.101 port 37384 ssh2
May  1 16:17:43 owl sshd[9024]: pam_unix(sshd:session): session opened for user root by (uid=0)
59
Anthon

In Red Hat-basierten Distributionen wie Fedora/CentOS/RHEL können Sie nach Benutzern suchen, die in der Datei /var/log/secure Angemeldet sind.

Wenn Sie weitere Informationen wünschen, lesen Sie diese SuperUser-Fragen und Antworten mit dem Titel: Wie kann ich SSH-Zugriffsversuche protokollieren und verfolgen, was SSH-Benutzer auf meinem Server tun? .

30
Ramesh

Unter Ubuntu können Sie sich über SSH anmelden und mit dem Linux-Befehl tail die letzten x Zeilen Ihrer /var/log/auth.log - Datei anzeigen. Wenn Sie über SSH angemeldet sind, verwenden Sie den folgenden Befehl, um 100 letzte Zeilen Ihres SSH-Protokolls anzuzeigen:

tail /var/log/auth.log -n 100

oder noch sauberer

tail -100 /var/log/auth.log | grep 'sshd'
9
WebComer

Beachten Sie, dass die Standardkonfiguration unter Ubuntu darin besteht, SSH-Anmeldungen NICHT in der Datei /var/log/auth Zu protokollieren. Dies ist die Protokollierungsstufe INFO.

Wenn Sie möchten, dass Anmeldeversuche in die Protokolldatei aufgenommen werden, müssen Sie die Datei /etc/ssh/sshd_config (Als Root oder mit Sudo) bearbeiten und die LogLevel von INFO ändern ] bis VERBOSE.

Starten Sie danach den sshd-Daemon mit neu

Sudo service rsyslog restart

Danach werden die SSH-Anmeldeversuche in der Datei /var/log/auth.log Angemeldet.

7
Shay Walters

Meine Empfehlung ist, auditd zu verwenden. Dies ist die Protokollierung mit dem Audit-Subsystem des Linux-Kernels und meiner Meinung nach die richtige Vorgehensweise, wenn Sie es ernst meinen. Und angesichts der Art der Frage {sicherheitsrelevant} sollten Sie auch [~ # ~] pam [~ # ~] verwenden. Bei der Standardstufe, bei der nur auditd und [~ # ~] pam [~ # ~] installiert sind, sollten Sie automatisch alle erfolgreichen und erfolglosen SSH erhalten Versuche, die in Ihrer Datei audit.log angemeldet sind. Sie müssen also wirklich nichts konfigurieren, sondern müssen nur auditd und [~ # ~] pam [~ # ~] installiert haben. Ich kenne das aus erster Hand für SLES. Und würde wetten, dass RHEL und jede andere Unternehmen Version von Linux ähnlich funktionieren würde.

http://manpages.ubuntu.com/manpages/precise/man8/auditd.8.html

innerhalb des von auditd generierten Rohprüfprotokolls können Sie entweder etwas wie aureport verwenden, um es zu filtern, was in den Manpages auditd beschrieben ist , schreiben Sie Ihren eigenen Textparser oder verwenden Sie einfach VI und suchen Sie nach Schlüsselwörtern.

hier ist eine Ausnahme von meiner /var/log/audit/audit.log - Datei, in der ich auf meinem Linux-Server ssh'ing.

node=shark type=CRED_DISP msg=audit(1480622612.317:2211277): user pid=117768 uid=0 auid=23456 ses=2201 msg='op=PAM:setcred acct="ron" exe="/usr/sbin/sshd" (hostname=abc415.mycompany.us, addr=172.16.152.5, terminal=ssh res=success)'
  • von oben ist mein Servername Hai.
  • viele Zeilen wie diese befinden sich in audit.log. Ich möchte, dass diese auf exe = "/ usr/sbin/sshd" basiert.
  • die UID des Kontos, in das ssh'd wird, ist der Wert von auid, der in diesem Beispiel 23456 beträgt
  • der Name des mit auid verknüpften Benutzerkontos wird durch acct = "ron" angegeben.
  • in den meisten Fällen zeichnet das Prüfsystem den DNS-Hostnamen des Systems auf, das versucht, eine Verbindung herzustellen, aber es hat immer seine IP-Adresse
  • das Datum des Eintrags befindet sich in der Epochenzeit. Sie müssen ihn also über date --date @1480622612.317 konvertieren, was zu Thu Dec 1 15:03:32 EST 2016 führt. Dies ist der Zeitpunkt, an dem ich auf meinen Server ssh'd.

Wenn res=failed Ist, möchten Sie diese IP-Adressen und Hostnamen untersuchen, um festzustellen, welche Systeme unter welchem ​​Benutzernamen versucht haben, eine Verbindung herzustellen. Und offensichtlich versucht das erfolgreiche ssh zu verstehen, was auf Ihrem System passiert - zum Beispiel Ihr Mitarbeiter Bob, der jeden Tag mit Hostname = Bobscomputer und IP-Adresse = 192.168.5.5 am selben Schreibtisch sitzt; Wenn Sie gestern um 2 Uhr morgens einen erfolgreichen SSH-Versuch unter seinem Benutzernamen von der IP-Adresse 10.10.5.6 sehen, ist es möglicherweise in Ihrem Interesse, mit Bob zu sprechen, um Nachforschungen anzustellen. Möglicher Hackversuch von jemand anderem? Und kurz danach gibt es su Versuche, das Überwachungsprotokoll von Bobs Konto aus zu rooten?

wenn Sie sich wiederholende res=failed und auid=0 und acct=root sehen, dann ist das jemand, der versucht, in Ihre Box in das Root-Konto zu ssh, und wenn Sie /etc/hosts.deny mit ändern diese IP-Adresse für SSHD.

4
ron

Ich weiß, dass dies alt ist, aber ich habe etwas geschrieben, um erfolgreiche und fehlgeschlagene SSH-Verbindungen/-Versuche zu überwachen. Sowie gesperrte IPs, wenn Sie sshguard verwenden. Die Software ist in Python geschrieben. Sie erhalten eine E-Mail, wenn jemand erfolgreich eine Verbindung über ssh herstellt, wenn jemand das ssh-Passwort falsch eingibt oder wenn jemand aufgrund vieler fehlgeschlagener Versuche gesperrt ist. Hoffentlich hilft dies jemandem in der Zukunft, der nach diesem Problem sucht und meinen Code findet!

https://github.com/amboxer21/SSHMonitor

Für das Skript python) habe ich ein Bash-Skript geschrieben, um den Prozess zu überwachen. Es überprüft, ob es jede Minute über die Root-Cron-Task ausgeführt wird. Wenn es nicht ausgeführt wird, wird ein anderer Prozess gestartet. Dieser wird aufgerufen durch eine root cron Aufgabe jede Minute.

2
Aguevara

Das Beste, was mir jemals bei der Protokollierung von SSH-Befehlen begegnet ist, ist rootsh. Mit diesem Tool kann der Administrator jeden Befehl aus jeder Sitzung mit umfangreicher Protokollierungsstufe abrufen.

Ich habe ein Skript geschrieben, um ROOTSH in Ubuntu und CentOS/RHEL zu installieren und zu konfigurieren

download von Github hier ist der Link

https://Gist.githubusercontent.com/mansurali901/e1e3acc7dca13aeca25b68a69571c60f/raw/b1b16f73ec9a974486e4c0c0d65a7d41f2eca718/setup_rootssh.sh

chmod +x setup_rootssh.sh ; Sudo ./setup_rootssh.sh
0
Mansur Ali