Anleitung: (V)Server Grundabsicherung

  • Huhu, (V)Server werden ja immer günstiger und ziehe Personen mit keinen oder sehr wenig Linux Kenntnissen magisch an. Da sehr viele die Meinung „Ich kann unter Windows etwas rumklicken, also kann ich auch einen Server einrichten“ vertreten habe ich mal eine kleine Anleitung geschrieben, welche hilft eine gewisse Grundsicherheit herzustellen.


    Bevor jedoch ein (V)Server gemietet wird sollte sich jeder sehr genau überlegen ob er wirklich einen braucht, in den meisten fällen reicht ein normaler Webspace aus. Hier noch ein Link zum Thema: http://www.root-und-kein-plan.ath.cx/


    Und denke immer Daran ein (V)Server ist keine Spielerei, sondern DU haftest für alles was auf dem Server passiert und musst dich ggf. vor einem Gericht verantworten.



    So, nun zur Anleitung :)


    Ich arbeite selbst nur mit Debian Systemen und aus diesem Grund bezieht sich diese Anleitung auch auf ein Debian System.


    Schritt 1: System aktualisieren
    Das wichtigste ist ein immer aktuelles System am laufen zu haben. Veraltete bzw. nicht mehr gewartete Programme stellen immer ein hohes Sicherheitsrisiko da. Die aktualisierung des Sytems geht wie folgt.


    apt-get update
    apt-get upgrade


    Nun sollte das System auf einem aktuellen Stand sein.


    Schritt 2: SSH Grundabsicherung
    Der root Zugang über SSH sollte immer deaktiviert sein, da es eine große Sicherheitslücke darstellt. Dies wollen wir nun machen.


    1. Benutzer anlegen
    useradd NAME

    2. Benutzerkennwort ändern
    passwd NAME


    NAME wird natürlich durch einen beliebigen Benutzernamen ersetzt. Dieser Name sollte natürlich nicht unbedingt in einem Wörterbuch stehen, Namen wie admin, login oder ssh sind absolut ungeeignet! Am besten sind Namen die nicht leicht zu erraten sind. Beispiel: Martin14051974Musterhausen. Dieser Login Name ist von einem Martin, welcher am 14.05.1974 in Musterhausen geboren wurde. Ein solcher Loginname ist zwar etwas unschön anzuschauen, steht aber in keinem Wörterbuch.


    1.1 Benutzer testen
    Nun solltest du prüfen ob du dich mit deinem neuen Benutzer an dem Server anmelden kannst.


    2. root Login verbieten
    Öffne mit einem beliebigen Editor die Datei sshd_config (/etc/ssh) und ersetze dort die Zeile
    PermitRootLogin yes


    durch


    PermitRootLogin no


    Da wir nun einmal in der richtigen Datei sind ändern wir noch folgende Zeile (sofern dein Provider dies vergessen haben sollte).
    Protocol 1


    ändern in


    Protocol 2


    Änderungen speichern und versuchen ob der Login als root über ssh noch möglich ist. Sollte der Login noch möglich sein starte den ssh Server neu, solltest du nicht wissen wie es geht starte am besten den ganzen Server neu.


    Eine noch sichere Methode ist die SSH Public Key Authentifizierung.


    3. Angreifer Bannen
    Es ist sinnvoll Angreifer nach z.B 3 falschen Login Versuchen zu bannen, die geschieht am besten mit Programmen wie fail2ban (http://www.fail2ban.org/)
    Eine Anleitung wie dieses Programm zu bedienen ist werde ich hier nicht machen, da dies den Rahmen bei weitem sprengen würde. Informiere dich bitte auf der Webseite des Programms.



    Schritt 3: Ports schließen
    Die Firewall sollte so konfiguriert sein, dass nur die Ports offen sind, die Du brauchst, d.h. alles sperren außer SSH, FTP (Wenn es unbedingt gebraucht wird), Web, POP/SMTP Ports.


    Das Zauberwort heißt iptables.


    Schritt 4: Sicherheitssoftware nutzen
    Es kann nie schaden entsprechende Programme zu nutzen die einem bei dem Auffinden von schädlichen Programmen helfen können, dazu zählen: chkrootkit, rkhunter und clamAV


    Mit chkrootkit und rkhunter könnt Ihr prüfen, ob jemand in Eurem System Software installiert hat, mit denen man den Server steuern kann. Das funktioniert ähnlich wie ein Trojaner. Mehr dazu in der Wikipedia: http://de.wikipedia.org/wiki/Rootkit


    So wird es installiert:
    apt-get install chkrootkit
    apt-get install rkhunter


    ClamAV ist ein kostenloser Virenscanner, ihn einzurichten ist etwas "kniffliger" für Unwissende und würde den Rahmen dieser Anleitung bei weitem sprengen. ClamAV gibts bei www.clamav.org



    Schlusswort:
    Dies war jetzt nur ein erster Schritt die Sicherheit zu verbessern. Der Server ist nun auf keinen Fall zu 100% sicher, dafür sind noch mehr Schritte nötig, aber nun ist der Server zumindest erst einmal besser geschützt. Es ist noch sehr viel Zeit nötig um den Schutz zu verbessern, aber mit der nötigen Interesse ist es durchaus möglich.


    Und denke immer daran: Google ist dein Freund bei Fragen :rolleyes:


    Sollte noch wer Ergänzungen haben oder einen Fehler gefunden haben bitte einfach melden :)



    In diesem Sinne

  • Hi,


    sehr schönes Tutorial :)


    Hab noch zwei Ergänzungen: Bei mir hab ich den Standardport geändert für sshd (Nun 66).


    Nach dem useradd , passwd user und das Passwort vergeben.


    Gruß,


    Stefan

  • Ich arbeite "noch" mit aktivem root User.
    Wenn man den Port des sshd ändert ist das schon eine Menge wert, schützt zwar nicht gegen entsprechende "Scan-Stros", jedoch hilft es gegen "Standardattacken" ;)


    Parallel natürlich ein vernünftiges, zusammenhangloses PW.


    P.S.: Der Tip mit Namen, Geburtsdatum, Ort/Geburtsort war hoffentlich nicht ernst gemeint ;) Denn das sind die ersten Dinge die jemand durchtestet wenn er den Besitzer einer Maschine kennt ;) in allen möglich Kombinationen, und dafür gibt es einige nette Tools in denen man die Eckdaten einträgt und der Rest macht der Scanner ;)

  • Hi,


    arbeite auch noch mit permitrootlogin = yes, ganz einfach, weil ich meistens mit WinSCP die Dateien ändere/anschaue. Außerdem ist das Passwort rund 20 Zeichen lang und generiert :)


    Da fällt mir grad ein, fail2ban müsste auch noch drauf bei mir....


    Gruß,


    Stefan

  • Zitat


    arbeite auch noch mit permitrootlogin = yes, ganz einfach, weil ich meistens mit WinSCP die Dateien ändere/anschaue. Außerdem ist das Passwort rund 20 Zeichen lang und generiert

    Ich würde an deiner stelle SSH Public Key Authentifizierung verwenden. das ist sehr viel besser. Eine kurze und verständliche Anleitung hat ein Bekannter mal geschrieben:
    http://wiki.unixboard.de/index.php/SSH_ohne_Passwort


    Zitat

    P.S.: Der Tip mit Namen, Geburtsdatum, Ort/Geburtsort war hoffentlich nicht ernst gemeint

    Nein, es sollte nur deutlich machen das ein anständiger Benutzernamen verwendet werden sollte :)


    Zitat

    Nach dem useradd , passwd user und das Passwort vergeben.

    Mist..... füge ich gleich noch hinzu :)


    Zitat

    den Standardport geändert für sshd (Nun 66).

    Nun, ssh ist eigendlich sicher, die Versuche die in den Logs zu finden sind sollten unbedenklich sein. Das sind meistens ein paar Kamikaze Server die schon übernommen wurden und eben nach dem zufallsprinzip alles abklappern.


    Wirklich gefährlich ist der Webserver. Eine schlechte Grundeinrichtung in kombination mit fehlerhaften phpskripten und schon ist es passiert. Wenn ein Server wirklich kompromentiert wurde hat man auch wenig Möglichkeiten dies zu bemerken, da z.B rootkits die Logs so verändern das diese sauber sind.


    In diesem Sinne

  • Fail2ban einzurichten ist auch etwas komplizierter da man auf dem vServer keine iptables nutzen kann. Da muss auf hosts.deny zurückgegriffen werden, was aber nicht ganz so einfach zu konfigurieren ist.



    Meine persönliche Meinung zum SSH-Login:
    * keinen direkten Rootlogin erlaufen
    * generell keinen Login mit Passwort
    * Anmeldung nur mit Keyfile, natürlich mit einem brauchbaren Passphrase
    * optional: Port vom sshd ändern (> Port 1024)
    * optional: fail2ban

  • Ich hab da eine kleine Frage:


    Ich habe das selsbt letztens bei einer alten Konfiguration meines vServers versucht.
    Nun, ich wollte dann ca. 3 oder 4 Tage danach mal das System updaten, leider war das über meinen User nicht möglich.
    Liege ich da richtig, dass ich dann, wenn ich den Root-Login verbiete, das System über sudo apt-get update updaten kann?

  • Danke für die Anwort.


    Nun, ich werde wohl meinen Server etwas besser absichern müssen, denn in letzter Zeit laufen meine Logs über.


    Ich würd gerne das mit dem Public-Key Verfahren nutzen, doch ich bin wahrscheinlich irgendwie zu doof dazu..
    Könnte mir einer einb verständliches Tutorial nennen oder geben, wie ich das mache, denn aus all den anderen Anleitungen werde ich iwie ned schlau, vorallem welcher Key wohin muss..

  • Ein wenig Eigenwerbung muss sein :):
    <--- entfernt --->


    Man beachte, dass ich dort DenyHosts resp. Fail2ban nur erwähnt habe. Man sollte aber nicht unbeding darauf verzichten (kann es aber getrost, sofern man gesund seine PAM-Logs prüft ;)).

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Zitat von Trackdeluxe;22253

    Wenn man root abgeschaltet hat wie kann man rootzugang wieder erlauben?


    Indem man die genannte Konfigurationszeile einfach einkommentiert/entfernt oder auf no setzt ;)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Zitat von killerbees19;22254

    Indem man die genannte Konfigurationszeile einfach einkommentiert/entfernt oder auf no setzt ;)



    MfG Christian


    Man kommt doch nur über root in die Zeile oder?