it-swarm-eu.dev

Wie kann ich Benutzer und Zugriffsversuche auf SSH auf meinem Server überwachen?

Ich hatte ein paar Sicherheitsprobleme mit einem Server von mir, ein paar SSH-Benutzer haben Feuer gelegt, auch bekannt als Probleme.

Ich würde gerne:

  • Verfolgen Sie Benutzeranmeldungen und Abmeldungen
  • Verfolgen Sie die Aktivitäten dieser SSH, um böswillige Aktivitäten zu entdecken
  • Verhindern, dass Benutzer Protokolle löschen

Ich bin kein großer Systemadministrator und in dieser Angelegenheit ziemlich unerfahren. Daher wäre jeder Rat sehr willkommen und sehr hilfreich. :)

28
RadiantHex

Da es sich um SSH-Server handelt, gebe ich Ihnen Befehlszeilenlösungen.

  • Verfolgen Sie Benutzeranmeldungen und Abmeldungen. Das ist ganz einfach, die Datei /var/log/auth.log sollte diese Informationen enthalten.

  • Verfolgen Sie die Aktivitäten dieser Benutzer: Wenn sie ziemlich unschuldig sind, können Sie die Datei .bash_history in ihrem Ausgangsverzeichnis überprüfen. Sie sehen eine Liste der Befehle, die sie ausgeführt haben. Das Problem ist natürlich, dass sie diese Datei löschen oder bearbeiten können.

  • Verhindern, dass Benutzer Protokolle löschen: Benutzer dürfen auth.log nicht berühren können. Um sie daran zu hindern, mit .bash_history zu spielen, müssen Sie ein paar Tricks ausführen.

  • Was ist, wenn der Benutzer Root-Zugriff erhält? : Du bist beschissen. Wenn sie keinen Fehler machen, können sie alle ihre Schritte verbergen.

27
Javier Rivera

[HAFTUNGSAUSSCHLUSS] Mir ist klar, dass ich zu spät zur Party komme, aber ich möchte eine Antwort einfügen, die ich auf eine andere Frage gegeben habe =, weil ich der Meinung bin, dass es den Lesern einen guten Einblick bieten kann, und diese Frage scheint die Anlaufstelle für grundlegende ssh-Informationen zu sein.

Es gab ein ähnliches Problem, das mir aufgefallen ist, nachdem ich this Frage hier auf AskUbuntu gelesen und meinen VPS überprüft hatte, nur um eine Unmenge von Brute-Force-Versuchen zu sehen. Dann habe ich beschlossen, etwas zu unternehmen.

Wenn Sie nun gemäß der Frage, auf die ich verlinkt habe, fehlgeschlagene Anmeldeversuche auf Ihrem Computer über ssh sehen möchten (dies können Brute-Force-Versuche oder ähnliches sein), geben Sie Folgendes ein:

grep sshd.\*Failed /var/log/auth.log | less

Wenn die Ausgabe aus mehreren Zeilen besteht, d. H. Aus vielen Brute-Force-Versuchen, insbesondere, wenn diese zwischen kurzen Intervallen stattgefunden haben, möchten Sie möglicherweise die folgenden Aktionen ausführen:

Ändern Sie die SSH-Konfigurationsdatei

Öffnen Sie dazu die Datei unter /etc/ssh/sshd_config mit Ihrem bevorzugten Editor wie folgt: vim /etc/ssh/sshd_config.

1. Versuchen Sie, ssh von Port 22 zu verschieben : Suchen Sie nun die folgende Zeile:

# What ports, IPs and protocols we listen for
Port 22

und kommentieren Sie Port 22 aus und verwenden Sie jeden, den Sie mögen könnten. Beispiel:

# What ports, IPs and protocols we listen for
# Port 22
Port 28934

Bitte denken Sie daran, dass Ports unter 1024 eine spezielle (Root-) Berechtigung benötigen. Ich weiß nicht, wie dies dies stören könnte, aber ich sage nur.

2. Root-Anmeldungen über ssh deaktivieren : Da der Root-Benutzername vorhersehbar ist und vollständigen Zugriff auf Ihr System bietet, ist es unklug, uneingeschränkt über SSH auf dieses Konto zuzugreifen. Suchen Sie die Zeile Lesen PermitRootLogin und setzen Sie es auf Nein .

PermitRootLogin no

3. Deaktivieren Sie die Kennwortauthentifizierung : Generieren und verwenden Sie SSH-Schlüssel , um sich bei Ihrem System anzumelden. Ohne aktivierte Passwörter müssen Angreifer Ihren privaten SSH-Schlüssel erraten (oder stehlen), um Zugriff auf Ihren Server zu erhalten. Etwas, das sehr, sehr schwierig ist. Suchen Sie die Zeile mit der Aufschrift PasswordAuthentication und setzen Sie sie auf no

PasswordAuthentication no

! WARNUNG! Lesen Sie vorher in diesem Handbuch hier nach, wie Sie die Zertifikatsauthentifizierung einrichten.

HINWEIS: Nachdem Sie die Änderungen vorgenommen haben, verwenden Sie Sudo /etc/init.d/ssh restart. Um über ssh eine Verbindung zu einem anderen Port herzustellen, verwenden Sie: ssh [email protected] -p <port_number>.

Richten Sie eine Firewall ein

Lesen Sie in dieser Anleitung nach, wie Sie die in Linux integrierte äußerst leistungsfähige und effektive Firewall einrichten IPTables .

Richten Sie Skripts ein, um Sie bei der Sicherheit zu unterstützen

Eine, die ich persönlich benutze und die mir schnell einfällt, ist Fail2Ban . Fail2ban überwacht Ihre Protokolldateien auf fehlgeschlagene Anmeldeversuche. Nachdem eine IP-Adresse die maximale Anzahl von Authentifizierungsversuchen überschritten hat, wird sie auf Netzwerkebene blockiert und das Ereignis wird in /var/log/fail2ban.log protokolliert. So installieren Sie es: Sudo apt-get install fail2ban

Befehlshistorie über ssh prüfen

Es gibt einen Linux-Befehl mit dem Namen history, mit dem Sie sehen können, welche Befehle bis zu diesem Zeitpunkt eingegeben wurden. Versuchen Sie, history in ein Terminal einzugeben, um alle Befehle bis zu diesem Punkt anzuzeigen. Es könnte helfen, wenn Sie root wären.

Um nach einem bestimmten Befehl zu suchen , versuchen Sie: history | grep command-name

Um alle Befehle nach ssh aufzulisten: fc -l ssh

Sie können auch Befehle mit vi bearbeiten (habe es noch nicht ausprobiert, obwohl ich annehme, dass es auch funktioniert): fc -e vi

Sie können den Verlauf auch löschen : history -c

HINWEIS: Wenn Sie kein Fan des Befehls history sind, befindet sich auch eine Datei in Ihrem Ausgangsverzeichnis (cd ~) , aufgerufen . bash_history (wenn Sie bash verwenden), mit dem Sie cat sehen können, was in die bash-Shell eingegeben wurde.

6
NlightNFotis

Ein bisschen übertrieben, aber mit dem "Process Event Connector" können Sie alles sehen, was auf Ihrem System läuft:

http://www.outflux.net/blog/archives/2010/07/01/reporting-all-execs/

4
Kees Cook
  1. Javier hat diese Frage bereits beantwortet: /var/log/auth.log
  2. Ich habe einen großartigen Artikel darüber gefunden hier .
  3. Wenn Ihre Benutzer keinen Zugriff auf root haben, sollten Ihre Protokolldateien sicher sein. Sie können versuchen, einige benutzerdefinierte Regeln in der sudoers-Datei zu erstellen, um zu beschränken, auf was und wie Ihre Benutzer zugreifen können. Sie können auch die Protokollstufe für den sshd-Daemon erhöhen.
3
Radu Cotescu

Abgesehen von der Anmeldung selbst gibt es keine sichere Möglichkeit, Benutzeraktionen nach der Anmeldung zu verfolgen/zu protokollieren, vorausgesetzt, sie verfügen über grundlegende Linux-Kenntnisse und können die Shell-Protokollierung deaktivieren oder einfach Befehle von anderen Shells (z. B. Python) ausführen.

Stattdessen sollten Sie bei der Bereitstellung des SSH-Zugriffs konservativ vorgehen. Brauchen sie ihn wirklich? Es ist nicht üblich, SSH-Zugriff zu gewähren, es sei denn, Sie sind im Shell-Bereitstellungsgeschäft tätig.

3
João Pinto