• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!
  • Dies ist ein moderiertes Forum. Dein Beitrag ist für dich und andere erst sichtbar, wenn er von einem Teammitglied moderiert wurde! Wird dein Beitrag abgelehnt erhältst du eine Meldung. Bitte erstelle so lange keine neuen Beiträge! Die Freischaltung wird auch nicht durch Nachfragen bei einem Teammitglied beschleunigt.

Linux System hardening

Status
Für weitere Antworten geschlossen.

Benni1000

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
4 Mai 2012
Beiträge
1.396
Diamanten
0
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.
 
C

Cabraca

Guest
Es ist wichtig das ihr niemals als root Benutzer arbeitet.
Wieso nicht? Ob ich die updates via Root Benutzer oder via sudo einspiele kommt aufs gleiche raus.

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.
Es muss konfiguriert werden wenn der SSH-Port umgelegt wurde.

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

HINWEIS: Ihr braucht wahrscheinlich einen Reverse-DNS eintrag, damit
eure mails nicht von eurem email provider verworfen werden.
satellite system? sofern nur mails versendet werden die keine großen geheimnisse enthalten die einfachere möglichkeit.
 

Benni1000

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
4 Mai 2012
Beiträge
1.396
Diamanten
0
Wieso nicht? Ob ich die updates via Root Benutzer oder via sudo einspiele kommt aufs gleiche raus.
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*).

Es muss konfiguriert werden wenn der SSH-Port umgelegt wurde.
Stimmt, habe ich noch nie umkonfiguriert :p

solang kein programm auf die ports horcht werden die packete sowieso gedroppt.
deswegen versteh ich irgendwie nicht was dein script bezwecken soll.
Ich benutze das script um irgentwelche serverdienste zu blocken, die als dependency mitinstalliert wurden.

satellite system? sofern nur mails versendet werden die keine großen geheimnisse enthalten die einfachere möglichkeit.
Was?
 
C

Cabraca

Guest
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*).

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

Ich benutze das script um irgentwelche serverdienste zu blocken, die als dependency mitinstalliert wurden.
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.
 

Zahl

Vorarbeiter
Registriert
10 Juli 2011
Beiträge
213
Diamanten
0
Stimmt, habe ich noch nie umkonfiguriert :p

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

ChristianG

Guest
Trotzdem nochmal:

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

Nacktschicht

Guest
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 :)
 

plastikgangster

Schafhirte
Registriert
25 Juli 2011
Beiträge
110
Diamanten
0
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 ?
 

Benni1000

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
4 Mai 2012
Beiträge
1.396
Diamanten
0
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.
 
Status
Für weitere Antworten geschlossen.
Oben