In diesem Beitrag möchten Finch und ich euch zeigen, wie ihr euren Linux-Server sicherer macht und ihn schützt. Heutzutage ist es sehr wichtig seine Serversysteme sicher zu halten, was jüngste Vorfälle bestätigen.
Punkt 1.
Seid nicht dumm und leichtgläubig!
Viele Angriffe auf Computersysteme basieren nicht (nur) auf technischen Unzulänglichkeiten der Systeme, sondern nutzen Techniken des „Social Engineering“, also die Schwachstellen des Menschen. Eines der wichtigsten Werkzeuge gegen Computerkriminalität ist daher der eigene Verstand. Vertraut keinen Menschen einfach so und lasst niemanden, den ihr nicht vertraut, an eure Systeme.
Punkt 2.
Nutze kein Linux wenn du davon keine Ahnung hast. Wenn du unerfahren mit Linux bist, setze dir eine VM oder einen Docker Container auf deinem eigenen PC mit Debian, Ubuntu, CentOS oder einer anderen Linux Distribution auf. Damit kannst du dich erstmal in Linux einarbeiten. Installiere dir die VM aber ohne GUI, da du auf einem Server auch keine GUI nutzen solltest. Wenn Bedarf besteht kann ich gerne ein Tutorial machen wie man eine Linux VM auf dem eigenen PC aufsetzt.
Punkt 3.
Haltet euren Server aktuell!
Macht regelmäßig „apt-get update && apt-get upgrade“ um Updates zu Installieren. Dafür empfehle ich immer die wichtigsten Services zu stoppen und nach dem Update den Server zu Rebooten.
Punkt 4.
Nutzt SSH Keys zum Verbinden auf euren Server.
SSH Keys sind das sicherste um sich auf einen Linux Server zu verbinden.
Spoiler anzeigen
Downloadet und öffnet „PuTTYgen“ und generiert euch einen SSH Key.
Kopiert nun den Teil aus „Public Key for pasting into OpenSSH authorized_keys file“. Öffnet eine SSH verbindung zu eurem Server und kopiert den Inhalt in die Datei „~/.ssh/authorized_keys“ mit einem Editor und speichert diese.
Drückt nun auf „Save private Key“ und speichert die Datei an einen gewünschten Ort ab. Speichert zur Sicherheit ebenfalls den Public Key euch ab.
Öffnet nun PuTTY und ladet euren Server und sucht Links in dem Menü nach „SSH“ dort findet ihr den Punkt „Auth“ in diesem könnt ihr ganz unten unter „Private Key file for authentication“ euren Private Key angeben. Nun könnt ihr euch mit eurem SSH Key anmelden ohne ein Passwort eingeben zu müssen.
Wenn ihr einen SSH Key benutzt könnt ihr theoretisch die Anmeldung mit einem Passwort bei SSH verbieten.
Spoiler anzeigen
Öffnet dazu die Datei „/etc/ssh/sshd_config“ mit einem Editor eurer Wahl und ändert die Zeile „PasswordAuthentication yes“ in „PasswordAuthentication no“. Nun speichert die Datei und es ist nur noch möglich sich per SSH Key anzumelden.
In der gleichen Datei könnt ihr noch den Login von dem User Account „Root“ deaktivieren was wir euch auch empfehlen würden. Dazu die Zeile „PermitRootLogin yes“ auf „PermitRootLogin no“ ändern.
In einigen Fällen kann es jedoch sein, dass das anmelden per Passwort noch benötigt wird. Hierbei empfehlen wir euch „Fail2Ban“ zu installieren. Dies dient dazu IP-Adressen für eine bestimmte Zeit zu sperren die mehrfach das Passwort hintereinander falsch eingeben. Das macht das Bruteforcen eures SSH Zugangs unmöglich.
Punkt 5.
Legt euch User an.
Macht so wenig wie möglich als Root User. Legt für jeden Dienst und Service den ihr auf dem Server laufen habt einen eigenen User an, dieser sollte auch nur die Rechte haben die der Dienst benötigt.
Weiteres dazu findet ihr auf der Seite „https://wiki.ubuntuusers.de/adduser/“
Punkt 6.
Richtet die Firewall richtig ein.
Bei vielen Hostern gibt es konfigurierbare Hardware Firewalls vor den Servern. Nehmt euch die Zeit und stellt diese richtig ein und öffnet nur Ports die ihr wirklich braucht. Stellt euch euer Hoster sowas nicht bereit nutzt dafür IPTables oder Shorewall. Wenn der Wunsch besteht kann ich dafür gerne auch ein Tutorial machen.
Punkt 7.
Nutzt kein FTP mehr.
Das FTP (File Transfer Protocol) stammt aus einer Zeit vor dem World Wide Web und ist auch nicht für den Einsatz in diesem konzipiert worden. FTP bietet keinerlei Verschlüsselung und überträgt Passwörter und Dateien im Klartext. Nutzt also kein FTP um Dateien auf euren Server zu übertragen, die euch wichtig sind und worauf kein dritter Zugriff haben sollte. Für Sachen wie Arma3Sync ist ein FTP nötig um die Dateien hochzuladen. Dateien bereitstellen über einen Anonymous Account ist auch kein Problem bei FTP, solange die Dateien nicht Privat gehalten werden sollen.
Nutzt für eure wichtigen Dateien SFTP. Dies ist eine verschlüsselte Variante von FTP. Um eine Verbindung damit herzustellen empfehle ich euch das nutzen von KiTTY statt PuTTY und WinSCP. Bei KiTTY ist es möglich direkt aus KiTTY heraus eine Verbindung über SSH mit WinSCP zu starten.
Punkt 8.
Erstellt Backups auf eurem PC.
Dateien die nicht einfach irgendwo wieder Downloadbar sind sollten unbedingt gebackupt werden. Führt diese Backups regelmäßig manuell aus. Speichert dazu die Dateien auf eurem eigenen PC oder noch besser auf einem(r) USB-Stick/ Externen Festplatte.
Punkt 9.
Datenbanken.
Datenbanken halten wichtige Dateien. Z.b. bei eurem Arma3 Server. Auch bei einer Datenbank sollte für jedem Dienst ein eigene Nutzer erstellt werden, der nur die Rechte hat die er benötigt. Generell sollten keine Änderungen an den Datensätzen in der Datenbank per Hand gemacht werden. Dafür sollte ein Programm oder eine Webapplikation genutzt werden.
Muss auf die Datenbank extern zugegriffen werden sollten extra Nutzer erstellt werden die nur von der IP des externen Dienstes zugegriffen werden dürfen.
Punkt 10.
Passwörter.
Nutzt kryptische Passwörter und einen Passwortmanager(z.B. KeePass). Ebenfalls nutzt für jeden Account / bzw egal wo ein Passwort gesetzt werden muss ein anderes. Dies dient dazu selbst wenn eines der Passwörter geknackt wird ist es nicht möglich auf andere Accounts zuzugreifen. Kryptische Passwörter sollte man nutzen weil diese nicht abzuleiten sind. Am besten 32 Stellen lang mit Klein- & Großbuchstaben, Zahlen und Sonderzeichen (z.B. „qk3ph9y3pL#WJKz9T8S3HE6pk&gm!?vQ“).
Abschließend ist noch zu sagen, dass ihr immer selber für die Sicherheit eurer Systeme verantwortlich seid!
Dieses Thema ist offen und wenn ihr noch weitere Anregungen, Vorschläge oder Fragen zu dem Thema habt könnt ihr gerne einen Beitrag schreiben oder mir eine PN schreiben.