Da Tom es sich gewünscht hat, habe ich mir mal ein paar Gedanken zum Thema Serversicherheit auf einem Ubuntu Server gemacht.
Das Thema Sicherheit ist bei Servern immer sehr schwierig, da es zu viele verschiedene Parameter gibt, welche beachtet werden müssen.
Ich werde dieses Tutorial trotz allem so gestalten, dass zumindest eine Basis-Sicherheit gewährleistet ist.
Wer hier ein einfaches "Copy and Paste" Tutorial erwartet ist eindeutig fehl am Platz. Sicherheit ist kein Copy and Paste mal nebenbei Ding, damit muss man sich befassen oder es einfach sein lassen. Wer es sein lässt, bitte die folgende Zeilen lesen! (Gilt weltweit!)
Eines vorweg. Die Administration eines Server mit Internetdiensten ist NICHTS für Anfänger! Ein falsch konfigurierter, schwach abgesicherter, Server ist nicht nur eine Gefahr für seinen Besitzer, sondern auch für Internetnutzer im Allgemeinen! Wer seinen Server nicht ausreichend absichert und Hacker sich diesen dadurch zu nutze machen können ist für den Schaden in vollem Umfang haftbar! Das sollte man immer im Hinterkopf haben, bevor man sich einen Server aufstellt oder mietet. Dies gilt sowohl für Heim-, Root- und V-Server jeder Art!
Linux ist von Haus aus ein recht sicheres Betriebssystem und bietet viele Sicherheitsfeatures. Ein paar davon werden wir für unsere Zwecke nutzen. Dennoch sollte man sich in die Materie etwas einlesen um das Optimum herausholen zu können. Eine gute Anlaufstelle hierfür ist das offizielle Ubuntu-Forum oder das offizielle Ubuntu Wiki. Es gibt auch eine sehr hilfsbereite, deutsche, Ubuntu-Community mit eigenem Forum und Wiki.
Der größte Schwachpunkt eines Computers ist immer sein Benutzer!
Benutzerverwaltung
Die Benutzerverwaltung in Linux und dessen Distributionen ist sehr komfortabel und in erster Linie auf Sicherheit ausgelegt. Es empfiehlt sich, für jedes Programm, welches Kontakt zum Internet hat, einen eigenen Benutzer anzulegen. Dieser Nutzer darf KEINE Root-Rechte besitzen um eventuellen Hackerübernahmen schon im Keim den Gar auszumachen.
Ein Hacker benötigt in der Regel einen Benutzeraccount mit Root-Rechten um sein schädliches Tun erfolgreich zu beenden. Ist ihm dieser verwehrt, kann er nur bedingten Schaden im Account des jeweiligen Benutzers anrichten den er übernommen hat, das System selbst bleibt davon unberührt.
Es sollte nur einen Root-Benutzer geben und dieser sollte auch nur für einen Menschen zugänglich sein. Jeder weitere Root-Benutzer erhöht das Risiko und birgt Gefahren.
Natürlich spielen Passwörter einen entscheidende Rolle beim Thema Server-Sicherheit. Je besser das Passwort, desto sicherer der Server. Passwörter für Root-Benutzer sollten in der Regel aus mindestens 24 Zeichen bestehen und Buchstaben (groß und klein), Zahlen und Sonderzeichen enthalten. Jedes weitere Zeichen erhöht die Sicherheit um ein vielfaches! Umlaute und exotische Sonderzeichen sollten jedoch vermieden werden!
Wie man einen Benutzer anlegt:
Um einen neuen Benutzer anzulegen, gibt man folgendes in den Terminal ein:
sudo adduser <Benutzername>
Dies legt einen neuen Benutzer an und erstellt gleichzeitig ein Heim-Verzeichnis.
Wird dieser Benutzer für ein Programm, welches Zugriff auf das Internet hat, verwendet, sollte man mit
sudo passwd <Benutzername>
diesem ein sicheres Passwort geben.
Weitere Informationen zur Benutzerverwaltung findet ihr hier.
Automatische Sicherheitsupdates
Sicherheitsupdates sind der essentielle Schlüssel für ein sicheres System.
Bei Ubuntu-Servern sind die automatischen Sicherheitsupdates standardmäßig deaktiviert. Um diese zu aktivieren gibt man folgenden Befehl ein:
sudo dpkg-reconfigure -plow unattended-upgrades
Somit werden zukünftig alle relevanten Updates automatisch installiert und man gewinnt dadurch wieder ein Stückchen mehr Sicherheit.
Dateitransfer via SFTP
Der Dateitransfer zwischen verschiedenen Computern ist heute selbstverständlich. Leider wird hierbei meist die Standard-Variante FTP verwendet, welche nicht nur Dateien unverschlüsselt sendet sondern auch Benutzernamen und Passwörter. Hier sollte man die Verbindungseinstellungen des verwendeten FTP-Clients umgehend ändern und als Standard SFTP einstellen. Somit werden zukünftig alle Daten verschlüsselt und ein abgreifen von sensiblen Daten ist unmöglich.
SSH-Authentifiezierung mittels Public-Key
SSH ist von Natur aus eine sehr sichere Verbindungsmethode. Wer jedoch die Sicherheit bei der Verbindung zwischen seinem Rechner und dem verbundenen Server erhöhen möchte, sollte auf die Authentifizierung mittels Public-Key umsteigen.
Wie dies funktioniert, kann hier nachgelesen werden.
Die Firewall richtig einstellen
Eine Firewall ist jedem ein Begriff, nur wie man sie richtig einstellt wissen nur die Wenigsten. In Zeiten von Windows und Mac mit ihren "One click and safe" Apps sticht Linux bzw. Ubuntu heraus. Hier muss noch immer selbst Hand angelegt werden, um das Optimum aus seinen Features heraus zu holen. Dies gilt ganz speziell für alle Linux-Server.
Damit das mit der Firewall auch richtig klappt, gibt's hier was zu lesen.
Standardmäßig ist die Firewall deaktiviert. Man sollte sie daher mit folgendem Befehl aktivieren:
sudo ufw enable
Will man den Status der Firewall abfragen, geht das hiermit:
sudo ufw status
Die Firewall in Ubuntu ist sehr einfach aber trotzdem sehr effektiv. Mit einfachen Regeln kann man in kürzester Zeit die Sicherheit seines Servers maximieren.
Wer diese Schritte ausführt, der hat schon ein beträchtliches Maß an Sicherheit hinzu gewonnen.
Für die, die mehr wollen, gibt es hier jede Menge Lesestoff.