OS Linux System hardening

Dieses Thema im Forum "Tutorials" wurde erstellt von Benni1000, 6. November 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Hallo,
    da ich in letzter Zeit immer mehr Leute mit Rootservern sehe, die von
    der Materie keine Ahnung haben habe ich mich entschlossen ein kleines
    Tutorial zu schreiben das einem Anfänger zeigt wie man einen Rootserver
    richtig absichert. Wenn ihr schon erfahrungen mit Linux habt, kommt
    euch das Tutorial wahrscheinlich lächerlich vor, aber an euch ist es auch
    nicht gerichtet. Ich versuche hier nur möglichst viel Schaden zu verhindern,
    ich empfehle es trotzdem jedem dringend sich mit Linux auseinanderzusetzen.




    Anlegen eines neuen Benutzers & SSH konfiguration


    Als erster Schritt sollte das Programm "sudo" installiert werden.
    Das Programm erlaubt es Befehle als andere Benutzer auszuführen,
    unter anderem als Benutzer root. Es ist wichtig das ihr niemals als
    root Benutzer arbeitet. Führt nur die allernötigsten sachen mit root
    Rechten aus. Wenn ihr "sudo" installiert habt (apt-get install sudo),
    müsst ihr euch einen neuen Benutzer anlegen, ich nenne ihn hier einfach
    mal "minecraft". User könnt ihr mit dem adduser Befehl hinzufügen.
    Gebt "adduser minecraft" ein. Jetzt werdet ihr nach einem neuem Passwort
    gefragt. Ihr werdet euer Passwort während der Eingabe nicht sehen,
    das ist ganz normal. Bestätigt euer Passwort, und überspringt alle
    anderen eingaben mit der "enter" Taste. Bestätigt das alle Eingaben
    korrekt waren, jetzt seit ihr fertig. Öffnet jetzt eure sudo
    konfigurationsdatei mit dem editor "nano". Diese liegt unter
    "/etc/sudoers". Unter der Zeile "#User privilege specification" tragt
    ihr folgendes ein: "minecraft ALL=(ALL) ALL". Dies gibt eurem user alle
    Rechte.


    Loggt euch jetzt als "minecraft" Benutzer ein. Versucht den Befehl
    "sudo su" auszuführen. Ihr solltet jetzt nach eurem Passwort gefragt
    werden. Gebt es ein und ihr solltet eine root shell vor euch haben.
    Jetzt wissen wir das alles geklappt hat. Editiert eure ssh konfig-datei
    so das man sich nicht mehr als root Benutzer einloggen kann.
    Die Datei liegt unter "/etc/ssh/sshd_config". Ändert die Zeile
    "PermitRootLogin yes" in "PermitRootLogin no" um. Jetzt kann sich
    der Benutzer root nicht mehr über ssh einloggen.


    Mit diesen einfachen Schritten haltet ihr 99% aller Angreifer auf,
    die versuchen sich über SSH einzuloggen. Wenn ihr möchtet könnt
    ihr auch noch euren SSH Port verlegen, das ist nicht umbedingt notwendig,
    hält jedoch eure log Dateien sauber.



    Updaten


    Es ist sehr wichtig euren Rootserver immer up 2 date zu halten. Ihr solltet
    täglich überprüfen ob es Updates für eure Software gibt. Angreifer brauchen
    meist nur sehr kurz eine Kritische Sicherheitslücke auszunutzen.
    Die Software auf eurem Server liegt in mehreren sogenannten "Repositorys".
    Bevor ihr updatet müsst ihr den Server der euer Repository hostet, fragen
    was die neuesten Software-Packete sind. Das geht mit dem Befehl:
    "sudo apt-get update". Das dauert einen kurzen moment. Wenn das fertig ist,
    könnt ihr überprüfen ob Updates für euer System verfügbar sind. Das macht
    ihr mit dem Befehl "sudo apt-get upgrade". Bestätigt die Updates und ihr seit fertig.




    File berechtigungen vergeben


    Es wird manchmal vorkommen, das ihr die Berechtigungen einer Datei ändern
    müsst. Hier ist es wichtig zu wissen, wie das Linux Berechtigungssystem
    funktioniert. Ihr könnt einer Datei Eigenschaften zuweisen, und zwar ob es
    eine ausführbare Datei (ein Programm) ist, ob die Datei gelesen oder
    beschrieben werden darf. Diese Eigenschaften kann man für den Besitzer der
    Datei, einer Gruppe und für alle anderen Benutzer festlegen. Wenn ihr das macht
    müsst ihr darauf achten, die Dateien nicht ausführbar zu machen. Jede
    ausführbare Datei ist ein Sicherheitsrisiko. Vergebt nicht die Rechte "777",
    hier steckt das ausführbar-machen mit drinnen. Die rechte einer Datei könnt ihr
    euch mit "ls -l" anzeigen lassen. Für mehr infos zu dem Thema solltet ihr euch
    das hier durchlesen:
    http://www.linux-infopage.de/show.php?page=berichte-berechtigungen




    fail2ban installieren


    Euer Root-Server wird zu 100% angegriffen werden, und das kann ich euch
    garantieren. Deswegen ist es wichtig ein Programm zu haben das Angriffe
    blocken kann. In diesem Fall ist fail2ban eine gute Wahl. Das Programm
    bannt eine IP wenn sie zu viele fehlgeschlagene loginversuche auf eurem
    SSH/FTP/HTTP Server hat. Installieren könnt ihr das Programm mit dem Befehl:
    "sudo apt-get install fail2ban". Das Programm muss nicht konfiguriert werden,
    wenn ihr nur euren SSH Server verteidigen wollt. Möchtet ihr euren FTP oder
    euren WebServer überwachen, müsst ihr die Konfigurationsdatei unter
    "/etc/fail2ban/jail.conf" anpassen. Wenn ihr das getan habt, müsst ihr
    den fail2ban dämon mit dem Befehl "/etc/init.d/fail2ban restart" neustarten.




    logcheck installieren


    Ihr müsst die LogDateien eures Servers dauerhaft überprüfen und immer einen
    Überblick haben, was gerade passiert. Das ist natürlich viel zu viel Arbeit
    bei den ganzen LogDateien die es gibt. Doch dafür gibt es das Programm logcheck
    , es überprüft stündlich eure logdateien und sendet euch eine Zusammenfassung
    von interessanten Sachen per email zu. Installieren könnt ihr es mit:
    "sudo apt-get install logcheck". Jetzt müsst ihr die email-adresse anpassen,
    an die die emails geschickt werden sollen. Das könnt ihr in der Datei:
    "/etc/logcheck/logcheck.conf" machen. Standartmäßig überprüft logcheck nur
    euren authentikations-log und euren syslog. Wenn ihr z.b einen mailserver
    betreibt müsst ihr den Pfad zu der Logdatei in der Datei:
    "/etc/logcheck/logcheck.logfiles" eintragen.
    HINWEIS: Ihr braucht wahrscheinlich einen Reverse-DNS eintrag, damit
    eure mails nicht von eurem email provider verworfen werden.




    Die Firewall einrichten


    Eure Firewall einzurichten ist sehr sehr einfach, ich habe ein script
    geschrieben, welches das für euch machen kann:
    http://minecraft-server.eu/board/showthread.php?8136-RootServer-Iptables-manager
    Öffnet das Script, generiert eine neue Konfigurationsdatei nach euren Wünschen,
    und führt dann den 2ten Programmpunkt des Scriptes aus. Gebt dort den namen der
    gerade generierten Datei an, und ihr seid fertig.




    Sonstiges


    Euer Passwort geht niemanden etwas an!
    Wenn ihr mehrere Admins habt, richtet ihnen eingeschränkte Benutzerkonten ein.
    Benutzt euer rootserver passwort nur auf eurem Rootserver!
    Sorgt dafür das es ein langes Passwort ist! 20 Zeichen+ sollten reichen.
    Vergesst nicht jeden Tag nach updates zu schauen.




    Solltet ihr noch Ideen haben, was man noch so in das Tutorial packen kann
    postet sie hier drunter, ich füge sie dann ein.
     
    #1
  2. Cabraca
    Online

    Cabraca

    Wieso nicht? Ob ich die updates via Root Benutzer oder via sudo einspiele kommt aufs gleiche raus.

    Es muss konfiguriert werden wenn der SSH-Port umgelegt wurde.

    solang kein programm auf die ports horcht werden die packete sowieso gedroppt.
    deswegen versteh ich irgendwie nicht was dein script bezwecken soll.

    satellite system? sofern nur mails versendet werden die keine großen geheimnisse enthalten die einfachere möglichkeit.
     
    #2
  3. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Wäre es nicht sogar sicherer dem normalen User keine sudo rechte zu geben und nur den ssh Root Login zu blocken?
     
    #3
  4. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Die geschichte mit sudo hat weniger mit der direkten server-sicherheit durch Angreifer zu tun.
    Ich will mit dem einsatz von sudo verhindern das die Leute immer als Root Benutzer arbeiten.
    Na klar, um updates einzuspielen braucht man root-rechte, aber es braucht nicht noch
    einen Minecraft-Server der als root läuft (*hust* es gab ja noch nie ein böses plugin *hust*).

    Stimmt, habe ich noch nie umkonfiguriert :p

    Ich benutze das script um irgentwelche serverdienste zu blocken, die als dependency mitinstalliert wurden.

    Was?
     
    #4
  5. Cabraca
    Online

    Cabraca

    Das hat aber nichts mit "als root arbeiten" zu tun sondern mit "programme als root laufen lassen".
    das solltest du eventuell noch genauer beschreiben.

    Welche wären das denn z.B.? MySQL horcht ja per default nur auf localhost.

    Postfix als satellite system konfiguriert benutzt einen anderen smtp server um mails zu verschicken.
    Ich hab das bei mir so eingerichtet, dass sämtliche mails über googlemails verschickt werden.
    Ist wesentlich einfacher als sich den stress zu machen und rDNS einzurichten etc.
     
    #5
  6. Zahl
    Offline

    Zahl

    Registriert seit:
    10. Juli 2011
    Beiträge:
    214
    SSH Port leg ich immer als erstes um, dann kann man sich dieses fail2ban-Geraffel nämlich auch schenken. Dazu noch Login nur mit Keypair erlauben und gut is.

    iptables seh ich wie Cabraca. Wenn man nicht grad irgend ne Mistsoftware laufen hat die man partout nicht dazu bringen kann, einen Port nicht zu öffnen, bringt das wenig.
     
    #6
  7. ChristianG
    Online

    ChristianG

    Trotzdem nochmal:

    Danke für das Tutorial wird sicher vielen helfen! (Mir jetzt nicht, aber das ist was anderes... :D)
     
    #7
  8. Nacktschicht
    Online

    Nacktschicht

    Schön gemacht Benni!

    Alles gut erklärt, alles wichtige dabei - und vielleicht hält es ein paar Kiddies ab, sich einen Root zu mieten :)
     
    #8
  9. plastikgangster
    Offline

    plastikgangster

    Registriert seit:
    25. Juli 2011
    Beiträge:
    118
    Minecraft:
    plastikgangster
    Ich hab ne Frage
    Ich teste Linux gerade inner VM und wenn ich das Portscanne sind nur die Ports offen die auch benutzt werden. Brauch man dann die Firewall extra oder hat das damit nichts zu tun ?
     
    #9
  10. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.408
    Ne das hat nichts mit der Firewall zu tun, wenn kein Dienst darauf horcht ist der port zu.
    Ich wollte nur mal darauf hinweisen das es eine Firewall gibt, und ich finde es kann nicht schaden sie einzurichten,
    falls doch mal ein Programm unerlaubterweise einen Port aufmacht.
     
    #10
Status des Themas:
Es sind keine weiteren Antworten möglich.