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.
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.