Sicherheit bezüglich Root Server

  • Guten Tag, ich bin noch recht ein neuling inbezug auf Root Server. Ich hatte davor ein Webhosting Packet mit Domains bei einem anderen Anbieter und 2 Gameserver. Um alles unter einem Hut zu haben habe ich mir einen Root zugelegt.


    Angefangen hatte ich mit einer fertig Image Debian Jessy plus Froxlor. Die erste Einrichtung lief super nur das alles sehr veraltet war. (php5 u. froxlor). MySQL hatte ich für externe Zugriffe möglich gemacht. Und die Passwörter waren die Standart Passwörter aus der fertig Image. Nachdem alles eingerichtet war so wie auch der Domain Umzug und DNS Einstellungen bemerkte ich im /var/log in der ssh log unbekannte Zugriffs versuche von IPs die nicht von mir sind so wie auch in der Mail.log und machte mir etwas Sorgen um die Sicherheit mit dem was ich mache. Kurz und knapp habe ich mich im Internet durchgelesen wie man einen Root sichert und damit besser umgehen tut.


    Ich habe den root mit minimal installation neu aufgesetzt 'Debian Stretch' das root passwort geändert auf 32stellig mit Sonderzeichen so wie groß und klein Buchstaben und Zahlen. Ich habe danach das OS auf dem neusten Stand gebracht so wie auch fail2ban installiert und konfiguriert sprich ab 3 Fehlersuche wird die IP für 1 Monat gebannt und ich werde per Email benachrichtigt. Die Überwachung läuft auf sshd. Danach habe ich php7 so wie apache2 proftp postfix MySQL installiert. MySQL läuft diesmal nur local ohne externe Zugriffe. MySQL Dienst natürlich auch auf 32stelliges passwort ein anderes wie für ssh root Zugang. Danach habe ich froxlor die neuste Version installiert und alle Dienste eingestellt. Phpmyadmin wurde ebenfalls als letztes installiert und eingestellt. Zum Schluss habe ich einen zweiten ssh angelegt ebenfalls 32stellig und den regulären Root per extern login unterbunden. Sprich ich logge mich über den anderen User ein und Wechsel dann zum Root user somit ist der reguläre root blockiert. Fail2ban läuft nach Tests super und hat auch die 4 Angreifer schon in der block liste seit dem sind die Zugriffe nicht mehr in den logs und die logs sind sauber.


    Fail2ban überwacht alle aktiven Dienste ich selbst hatte mich auch schon 3x ausgesperrt 😜 alternativ könnte ich noch den ssh Port ändern. Meine 2 gameserver laufen nun auch über ein Start Script und der crontab prüft jede 3 Minuten ok die Gameserver laufen, natürlich nicht als root. CPU ist bei 20% wenn beide Server voll sind und RAM unter 1.5Gb used.


    Im Nachhinein bin ich froh das ich von der fertig image zur eigenen Installation gewechselt bin auch was die Sicherheit betrifft. Nun aber meine Frage gibt es noch möglichkeiten eines Angriffes oder Sicherheits Empfehlungen die ich vergessen habe oder ausgelassen habe? Oder bin ich trotz der Vorkehrungen auch ein Fall der keinen root haben sollte so wie ich es hier ab und zu lese? Wie gesagt ist das erste Mal das ich mich mit dieser Materie auseinandersetze.

  • Ich würde dir grundsätzlich empfehlen, die Benachrichtigungen von Fail2Ban auszumachen, nach einigen Stunden gingen die mir auf den Geist:P


    SSH nur via Keys erlauben wäre eine gute Idee;)

    Die Benachrichtigung gehen auf eine externe Email außerhalb des roots und werden gespeichert. Die Idee davon ist im Fall der Fälle wenn es zu spät ist und 'xyz' hat Zugriff bekommen durch mehrere Versuche und den Root gekarpert und dann alles löscht liegen diese Benachrichtigungen noch sicher auf einen externen Server. Die logs kann man ja immer löschen und dann mit der IP vom root Amok laufen. Ssh nur über den key wäre auch eine Möglichkeit. Theoretisch könnte ich auch den ssh Zugang auf den host meines Internet Anbieters setzen. Gibt es noch andere Angriffs Möglichkeiten?

  • Brauchst du zwingend FTP oder gibt es bei SFTP Features, die dir fehlen?

    Wenn du nicht zwingend FTP brauchst würde ich dir empfehlen proftpd zu entfernen. SFTP wird über OpenSSH bereit gestellt.


    Ansonsten würde ich den Zugang zu phpmyadmin absichern. Das Paket wird nämlich nicht mehr geflegt.

    Regelmäßig Updates einspielen und System, wie auch Logs beobachten, dann solltest du auf der sicheren Seite sein.


    Oder bin ich trotz der Vorkehrungen auch ein Fall der keinen root haben sollte so wie ich es hier ab und zu lese?

    Die wenigsten davon können das Selbständig machen, geschweige den Log Files lesen. Insofern: nein. Gute Arbeit!

  • Oder bin ich trotz der Vorkehrungen auch ein Fall der keinen root haben sollte so wie ich es hier ab und zu lese? Wie gesagt ist das erste Mal das ich mich mit dieser Materie auseinandersetze.

    Ich schließe mich H6G an. Nach dem ersten Absatz Deines Posting hab ich schon gedacht: Der Nächste bitte! Aber nein, das ist schon der richtige Weg und vor allem die richtige Einstellung. Danke für Deine Bescheidenheit und dieses Aha-Erlebnis!


    Beizeiten wird hier das https://infosec-handbook.eu/as-wss/ als Lektüre verlinkt.

    Unter https://grundsoli.de/links/ hätte ich noch ein paar Tools, die hier im Forum immer wieder genannt werden, zusammengefasst. Unter Validierungs-Websites und Spam-related findest Du diverse Checks, die sicher einiger Beliebtheit erfreuen. Gerne nehme ich weitere dort auf.


    Passwort-Logins für SSH abzudrehen, ist jedenfalls eine gute Idee. SSH-Keys sind da der bessere Weg. Den SSH-Port zu verlegen, kann auch sinnvoll sein, obwohl es mE eigentlich mehr in die Kategorie security by obscurity fällt. Fail2Ban wäre dann auf den verlegten Port anzupassen.

  • Angefangen hatte ich mit einer fertig Image Debian Jessy plus Froxlor.

    Ist leider immer noch die Standardkonfiguration neuer VPS bei netcup.


    Im Übrigen bin ich der Meinung, dass das Default-Image aktualisiert gehört.

  • Ich kann dir gerne auch mal noch meine Vorschläge überlassen, ich versuche möglichst Dinge wegzulassen, die du bereits selbst beschrieben hast.

    • Firewall auf die absolut notwendigen ports und ICMP types beschränken
      • ipv4 UND ipv6 (wenn genutzt)! 6 wird gerne mal vergessen. Mein Tipp: NFTables, damit kannst du direkt Regeln für 4&6 kombiniert anlegen. Wobei es mit ufw auch für Iptables recht einfach sein sollte.
    • Per lynis mal checken, welche Vorschläge du noch einfach umsetzen könntest
    • Ich lasse nächtlich Rkhunter laufen und mich im ernstfall benachrichtigen
    • SSH-Port ändern & Login nur per SSH-Key
    • Automatisch Pakete upgraden or über Updates benachrichtigen lassen (hier hat jeder seine eigene Vorliebe). Z.B. apticron wäre hier ein Schlagwort.

    So, jetzt noch einen Vorschlag den ich so auch anwende, aber nicht für Jeden praktikabel ist. Die meisten Alle meine Services sind für meine Familie & mich und müssen deshalb nicht für jeden zugänglich sein. Auch wenn vieles per Docker recht einfach zu updaten ist, hat man dennoch eine Software am Netz hängen, die nur <10 Leute benötigen.

    Meine Lösung hierfür war ein VPN auf dem Server zu installieren und alle Dienste nur über das lokale VPN Subnetz verfügbar zu machen. Aktuell ist auf meinem Server nur ein port in der Firewall offen um mich mit dem VPN zu verbinden, alles andere ist von außen blockiert. Per VPN habe ich dann zugriff auf alle Dienste. Dadurch kann ich mir mit dem Update von Software wie z.B. MySql, Redis, Nginx, etc "Zeit lassen" und muss mich primär um ein aktulles OS, Nftables & VPN-Software kümmern.

    Vllt. kannst du damit ja was anfangen und ggf. deine Gameserver nur einem gewissen Personenkreis verfügbar machen, etc. Wie gesagt, nicht für jeden praktikabel.


    Viele Grüße

  • Die Vorschläge sind super, ich war diese Woche nicht untätig und habe mich durch geboxt durch gewisse Anleitungen. Ich habe mich zuerst mit openssl beschäftigt jedoch dann umgeschwenkt auf let's encrypt. Ich betreibe ja auf meinem Root als Haupt Oberfläche froxlor zur Verwaltung von apache2, MySQL, postfix und dovecot. Letzte Woche hatte ich ja wie im ersten Beitrag mein System aufgesetzt und zum laufen gebracht. Diese Woche habe ich alle Einstellungen bezüglich Verschlüsselung gesetzt. Alle Domains und subdomains sind nun über ssl let's encrypt verschlüsselt. Die automatische Erneuerung der zertifikate läuft per crontab 1x im Monat ab wobei ich eher für alle 2 Wochen tendiere. Ich habe im apache2 auch das rewite aktiviert so das ein https erzwungen wird. Alles funktioniert super nach dem anlegen von "Kunden" (für meine Familie zb.) generiert froxlor automatisch ein Zertifikat den crontab dafür habe ich jedoch von 5minuten auf 15 erhöht wegen dem Limit den es gibt pro Stunde. Als nächstes war der Email Server dann nun läuft der SMTP über postfix ebenfalls im ssl Modus und alles wird verschlüsselt so wie auch dovocot IMAP. Alles ist super und funktioniert die zertifikate für die Email Server werden ebenfalls erneuert automatisch wenn sie ablaufen.


    Jetzt habe ich einen Port scan gemacht um zu schauen was an ports offen ist und es sind halt die Standart ports offen für ssh, ftp, IMAP, SMTP, 143 ssl, 80 apache, pop3 und pop3s.


    Ich würde gerne den pop3 pop3s deaktivieren finde jedoch die Einstellung nicht hat hier jemand einen tip? Der Dienst läuft über dovocot und ich nutze nur IMAP.


    Fail2ban habe ich auf die Dienste nun ausgeweitet die dazu gekommen sind seit der letzten Woche. Jemand schrieb hier etwas wegen einer Firewall. UFW ist installiert habe es auch einmal kurz getestet und nur für ssh offen gelassen, funktionierte super. Ich werde als nächstes schauen wie man UFW richtig einstellt.


    Ich habe eine Frage, es gibt ja auch ddos Attacken oder andere Angriffe wo Daten an den root gesendet werden können. Wie blockiert ihr so etwas? Ich habe mich damit noch nicht beschäftigt das was ich die letzten 2 Wochen gelernt habe reichte mir erstmal und ich habe bestimmt 100 graue Haare mehr 😜.

  • Ich würde gerne den pop3 pop3s deaktivieren finde jedoch die Einstellung nicht hat hier jemand einen tip? Der Dienst läuft über dovocot und ich nutze nur IMAP.

    im conf.d gibts eine 10-master.conf

    dort würde ich

    service pop3-login {

    inet_listener pop3 {

    #port = 110

    }

    inet_listener pop3s {

    #port = 995

    #ssl = yes

    }

    }


    auskommentieren - das sollte reichen


    Gruss

  • Was ich dir zusätzlich noch empfehlen könnte ist das hier .... darf mMn auf keinem Root fehlen:


    https://github.com/trick77/ipset-blacklist


    Was damit schon an "illegalen" Anfragen vor die Pumpe läuft ist manchmal schon erstaunlich. Letztens hat ein User über meinen Mailserver eine Mail nach Russland geschickt. Seitdem gibt es ein regelrechtes Bombardement wie ich es die Jahre zuvor noch nicht hatte.


    Diese Blacklist nimmt in diesem Fall schonmal viel Druck vom System weg.