Wie sichere ich meinen Linux Server ab?
Dinge die man beachten sollte:
So wenig Angriffsfläche wie möglich bieten – sprich so wenig Services von extern erreichbar machen wie nötig. Dinge wie Webmin, PHPmyadmin usw... sind zwar nett aber ein riesiges Sicherheitsrisiko wenn mans vom Internet aus erreichbar hat. Wenn man wirklich Ports offen lassen will damit man Dinge administrieren kann dann kann man diese auf 127.0.0.1 binden und deren Port per SSH auf den Rechner zuhause tunneln. SSH verschlüsselt alles, somit kann man z.b. Webmin nutzen ohne dass dieses vom Internet aus erreichbar ist.
Wenn das Service von extern erreichbar ist ist es angreifbar, egal wie abgesichert es ist. Deswegen sollte man die von außen erreichbaren Services immer aktuell halten. Um von eventuellen Sicherheitslücken schnell zu erfahren sollte man sich in die Security Mailing Liste seiner Distribution und in die Security Mailing Listen aller von extern erreichbaren Services eintragen. Ein RSS Bookmark auf Heise Security ist auch zu empfehlen.
Wie kann ich sehen welche Services offen sind?
Als root folgendes Commando ausführen, dann sieht man welches Programm welches Port belegt und auf welchen IPs:
netstat -anp | grep "LISTEN "
example output:
Ersteres hört auf Port 2208 und ist nur auf der IP Adresse 127.0.0.1 erreichbar, sprich nicht vom Internet aus. So sollten alle Services konfiguriert werden die man zwar benötigt, aber nicht vom Internet aus erreichbar sein müssen. (z.b. mysql bei einem Apache/PHP Server der auf mysql Datenbanken zurückgreift)Code:tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 7412/hpiod tcp 0 0 0.0.0.0:3493 0.0.0.0:* LISTEN 8133/upsd
Zweiteres hört auf Port 3493 und auf ALLEN IP Adressen, so sollten nur Services aussehen die vom Internet aus erreichbar sein müssen (z.b. SSH oder Apache)
Am Ende der Zeile steht jeweils die Process ID und der Name des Prozesses der diesen Port belegt.
Wie kann ich ein Port über SSH tunneln?
Angenommen ein Service rennt nun auf der IP 127.0.0.1 auf dem Linux Server und ich will auf dieses zugreifen (nehmen wir als Beispiel Webmin her, also Port 10000). Wenn man sich von einem Linux Client auf den Server einloggt ist es relativ einfach:
ssh -p 43242 -l Hansi mein.server.de -L 11000:127.0.0.1:10000
-L bedeutet local port forwarding. Sprich mein lokales Port 11000 wird durch SSH forgewardet, und zwar auf die Ziel IP/Port 127.0.0.1:10000
Somit kann man nun auf dem Linux Client einen Browser öffnen und auf 127.0.0.1:11000 verbinden.
-l hier kann man den Usernamen angeben mit dem man sich anmelden will
-p hier gibt man das Port an auf dem der SSH Server am Linux Server läuft
Hier dasselbe mit Putty unter Windows:
1. ins den Menüpunkt Tunnel wechseln.
2. das Lokale Port angeben
3. die IP + Port des Services angeben welches man tunneln will
4. nicht vergessen auf ADD drücken!
Wenn der Linux Server in einem Lan steht kann man z.b. auch auf die PCs im Lan des Linux Servers forwarden.
ssh -p 43242 -l Hansi mein.server.de -L 3389:192.168.1.20:3389
So würde es aussehen wenn ich mich durch einen SSH Tunnel auf einen Windows Server mit RDP anmelden wollte der im Lan des Linux Servers steht. Nützlich wenn man zuhause z.b. einen WRT54GL stehen hat und gerne RDP nutzen möchte, dieses aber nicht dem ganzen Internet zugänglich machen will.
Keine FTP Server nutzen wenn SSH eh schon offen ist.
Wenn SSH schon läuft (und das ist auf 99,9% aller root/vroot Server so) gibt es keinen Grund einen FTP Server zu nutzen. Standardmäßig bietet SSH noch SFTP/SCP an. Man braucht z.b. unter Windows nur einen SFTP/SCP Client (WINSCP) und schon kann man Files up und downloaden. Allerdings verschlüsselt und nicht wie bei FTP unverschlüsselt. Desweiteren bietet man so keine zusätzliche Angriffsfläche, SSH ist sowieso schon offen also kann mans auch in vollem Umfang nutzen anstatt ein zusätzliches Service anzubieten.
Wie sichere ich SSH ab?
Man sollte SSH nicht auf dem Standardport (Port 22 TCP) belassen!
Wenn mans auf Port 22 laufen lässt wird man von vielen Scannern/Scripten durchgescannt. Die scannen einfach riesige IP Bereiche auf ein offenes Port 22, wenns offen ist versuchen sie Standardlogins wie test/test, root/root, root/linux usw... und sie versuchen auch Exploits für Sicherheitslücken.
Die Datei /etc/ssh/sshd_config im Editor öffnen
Dort findet man die Zeile:
Port 22
Diesen Port dann in den gewünschten Port abändern (z.B. Port 50000). Bitte wählt eine Portnummer zwischen 49152 und 65535.
Danach den Editor verlassen, vorher natürlich speichern.
Jetzt noch den SSH Deamon neustarten:
/etc/ini.d/sshd restart
Hier ein Szenario wenn ich die 2 Punkte nicht beachte:
Eine Sicherheitslücke wird gefunden, ich bekomme davon nichts mit. Patch gibt es noch keinen, oder er wird nicht automatisch installiert. Die Scanner/Scripte haben schon einen Exploit dafür, scannen zufällig deinen Server -> BUMM
Wenn ich nur einen der oberen Punkte beachte falle ich aus dem Schema schon raus.
Nur SSH Protocol 2 erlauben.
Protocol 1 braucht niemand und es ist etwas unsicherer.
In der sshd_config wäre das folgende Zeile:
Protocol 2
Keinen root Login erlauben.
Wenn man der alleinige Administrator des Systems ist ist es ganz einfach. Man erstellt sich einen normalen User (Hansi) der in der Linux Gruppe wheel ist. Nun vergibt man dem User Hansi ein kryptisches Passwort (~9 Zeichen mit nem Sonderzeichen) und erlaubt in der sshd_config ausschließlich diesem User einen Login, das geht mit folgender Zeile:
AllowUsers hansi
Dies verschafft uns wiedereinmal eine geringere Angriffsfläche. Der Angreifer müsste jetzt schon den Usernamen kennen bevor er eine Bruteforceattacke versucht. Den User root gibt’s ja auf jedem Linux System und ist deswegen meist der erste mit dem sie es versuchen. (bei *buntu Systemen wurde der root User ja schon etwas entschärft, da ist sowieso kein direkter root Login möglich)
Selbst wenn der Angreifer nun den User Hansi knackt, wäre er nicht root. Da müsste er nun ein zweites Passwort knacken ...
Optional: Die Verbindungsversuche limitieren.
Mit iptables kann man schön festlegen wieviel Verbindungen pro Minute auf ein Port aufgemacht werden dürfen. Das ist aber eher optional und für Services gedacht die auf dem Standardport laufen und die von Scannern/Scripten abgegrast werden.
NetworkerZ empfiehlt: Ich kann das Tool fail2ban empfehlen, es überwacht die auth.log und setzt automatisch dynamische IPTables Regeln, falls mehrere Loginversuche registriert werden.
SFTP für mehrere Nutzer?
Ist relativ einfach möglich. Linux User anlegen und per SSH einloggen erlauben. Aber einfach heißt leider auch unsicher. Die können sich eben nicht nur per SFTP einloggen sondern auch per SSH und bekommen dann eine normale Linux Shell. Dies lässt sich etwas weniger einfach mit RSSH umgehen. Das ist im Prinzip eine Login Shell (wie bash) die für User verwendet werden kann die nur SFTP/SCP Funktionalität benötigen und sich explizit nicht per normalen SSH verbinden sollen.
Um das ganze noch sicherer zu machen sollte man ein chroot verwenden. So werden die SFTP user dann in ein Unterverzeichnis eingesperrt und können nicht auf die Dateien des restlichen Systems zugreifen. Hier gibt’s dazu ein schönes Howto: http://gentoo-wiki.com/HOWTO_SFTP_Se...without_shell)
Das sind mal die ersten und wichtigsten Punkte. Wird erweitert, wenn jemand Beispiele für spezielle Software hat, immer her damit
Kritik immer erwünscht, bin alles andere als gut in Themen strukturiert wiedergeben![]()
+ Antworten
Ergebnis 1 bis 25 von 44
- 18.12.07, 12:00 #1Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Sammelthread: Wie sichere ich meinen Linux Server ab?
Geändert von ulukay (20.12.07 um 15:25 Uhr)
-
- 18.12.07, 13:31 #2
Ergänzend:
How-to: SSHD Port ändern
Die Datei /etc/ssh/sshd_config im Editor öffnen
Dort findet man die Zeile:
Port 22
Diesen Port dann in den gewünschten Port abändern (z.B. Port 50000). Bitte wählt eine Portnummer zwischen 49152 und 65535.
Danach den Editor verlassen, vorher natürlich speichern.
Jetzt noch den SSH Deamon neustarten:
/etc/ini.d/sshd restart
Das wars
-----------------------
Und zu dem optionalen Teil bez. IPTables:
Ich kann das Tool fail2ban empfehlen, es überwacht die auth.log und setzt automatisch dynamische IPTables Regeln, falls mehrere Loginversuche registriert werden.
greetz
NetworkerZ
Gaming: Intel 2600K @ 4,4Ghz, ASUS P8P67 Deluxe, 16GB DDR3 1600MHz RAM, ATI HD6950 @ 6970 BIOS @ Sharan, Corsair F120 SSD, Samsung F3 1TB HD103SJ, X-Fi Extreme Music, Corsair Graphite 600T black , BeQuiet Straight 580 Watt, Samsung 223c Multiwriter black, Windows 7 Professional x64
Subnotebook: MSI IdeaPad U160, Core i5 520UM, 4GB DDR3 RAM, 500GB HDD, 11,1" LED Display @ 1366x786, 6 Stunden Akkulaufzeit, 1,4 KG
- 18.12.07, 16:24 #3
Schöne Erklärung ulukay, mann könnte vielleicht noch SSH Tunnel mit reinbringen.
- 18.12.07, 16:27 #4
sehr nice, wenn ich meine Game-Server fertig hab, werde ich mich damit auch mal beschäftigen

ps: @ LAW-Mastermind: bräuchte mal eben deine Hilfe -> ICQ
mfg
foxxxHave a look: luxx-area.de
Games: 2500k @ 4,5Ghz | Asus P8Z68-V Pro | 8GB G.Skill 1600Mhz | GTX570 @ H2O | Win 7 Prof. x64
Server: X2 220 @ 2,8Ghz | ASRock 890FX Dlx4 | 8GB Patriot 1333Mhz | Nvidia GF 6200 LE passiv | Debian 6.0 x64 + xen 4.0
Mobile: i5-2520M 2,5 Ghz| Thinkpad T420 | 8GB Corsair 1333Mhz | Intel HD3000 | Vertex 2 120GB | Win 7 Prof. x64
- 18.12.07, 16:57 #5
Btw.:
netstat -an
listet die offenen Ports des Server auf. Hier sollten möglichst wenige auf "Listen" stehn. Wer einen Webserver sicher betreiben will, hat 443 für den Webtraffic offen (Ihr braucht dazu ein SSL Zertifikat, dass man aber auch selbst und kostenlos erstellen kann...) und eben ein Port für SSH, fertig.
Zudem schadet es nicht, auf die Aktualität des Systems zu achten ;-)
Greetz
NetworkerZ
Gaming: Intel 2600K @ 4,4Ghz, ASUS P8P67 Deluxe, 16GB DDR3 1600MHz RAM, ATI HD6950 @ 6970 BIOS @ Sharan, Corsair F120 SSD, Samsung F3 1TB HD103SJ, X-Fi Extreme Music, Corsair Graphite 600T black , BeQuiet Straight 580 Watt, Samsung 223c Multiwriter black, Windows 7 Professional x64
Subnotebook: MSI IdeaPad U160, Core i5 520UM, 4GB DDR3 RAM, 500GB HDD, 11,1" LED Display @ 1366x786, 6 Stunden Akkulaufzeit, 1,4 KG
- 18.12.07, 17:05 #6Kapitänleutnant
- Registriert seit
- 31.05.2005
- Ort
- Schöneiche bei Berlin
- Beiträge
- 1.763
Mit der Portverlegung von ssh bringt aber nichts weiter, da da nur Anfänger die Lust verlieren werden. Ein Portscan und ich habe den Port
Man kann seinen Firewall auch so konfigurieren, das per SSH nur bestimmte IP`s Zugang haben, der Rest wird abgewiesen.
- 18.12.07, 17:08 #7
Is klar, aber wer scannt im Internet den kompletten Portbereich ab? Wenn du einen Server im Internet hast, der auf Port 22 lauscht, dann schau mal in deine auth.log --> dann merk dir gut, wie's da drin ausschaut, "verlege" den Port und schau ne Woche später nochma rein. Dann wirst du sehn, dass sich das durchaus lohnt ;-)
Und ein 5 Schritte How-To sollte auch ein Einsteiger hinbekommen!
Greetz
NetworkerZ
Gaming: Intel 2600K @ 4,4Ghz, ASUS P8P67 Deluxe, 16GB DDR3 1600MHz RAM, ATI HD6950 @ 6970 BIOS @ Sharan, Corsair F120 SSD, Samsung F3 1TB HD103SJ, X-Fi Extreme Music, Corsair Graphite 600T black , BeQuiet Straight 580 Watt, Samsung 223c Multiwriter black, Windows 7 Professional x64
Subnotebook: MSI IdeaPad U160, Core i5 520UM, 4GB DDR3 RAM, 500GB HDD, 11,1" LED Display @ 1366x786, 6 Stunden Akkulaufzeit, 1,4 KG
- 18.12.07, 17:15 #8Kapitänleutnant
- Registriert seit
- 31.05.2005
- Ort
- Schöneiche bei Berlin
- Beiträge
- 1.763
Klar, habe ich ja auch geschrieben, das die normalen Scans abgeblockt werden.
- 18.12.07, 17:39 #9
Stimmt schon, nur dass man selten eine fixe IP hat. Leider werden 99% aller Homesurfer eine dynamische IP zugeteilt, im Internet ist so eine Firewallregel also eher nicht zu realisieren.
Eine andere Alternative ist das Arbeiten mit Keys: Der Server hat einen und der Client, der zugreifen darf auch. Beim SSH Login kommt also keine PW Abfrage mehr sondern es erfolgt ein "Keycheck" und man kommt automatisch auf den Server. SOmit gibt es auch keinen Ansatz mehr für Bruteforceattacken.
Ein How-to hierfür wäre HIER zu finden.
Greetz
NetworkerZ
Gaming: Intel 2600K @ 4,4Ghz, ASUS P8P67 Deluxe, 16GB DDR3 1600MHz RAM, ATI HD6950 @ 6970 BIOS @ Sharan, Corsair F120 SSD, Samsung F3 1TB HD103SJ, X-Fi Extreme Music, Corsair Graphite 600T black , BeQuiet Straight 580 Watt, Samsung 223c Multiwriter black, Windows 7 Professional x64
Subnotebook: MSI IdeaPad U160, Core i5 520UM, 4GB DDR3 RAM, 500GB HDD, 11,1" LED Display @ 1366x786, 6 Stunden Akkulaufzeit, 1,4 KG
- 18.12.07, 17:58 #10Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
ja nur ist der client pc mal kompromittiert kannst den server auch gleich mit abhaken
Hinzugefügter Post:
darum gehts ja auch nicht, sondern um die automatisierten scanner. die scannen immer nur nach port 22. (eben bei exploits wichtig - stichwort WURM. der sasser war nur so erfolgreich weil er einfach riesige ip ranges nach offenen 445er ports durchsuchen musste und auch viel fand. sollte es mal einen wurm für anfällige ssh versionen geben wirst ihn so nicht bekommen)Geändert von ulukay (18.12.07 um 18:00 Uhr) Grund: Antwort auf eigenen Beitrag innerhalb von 4 Stunden!
- 18.12.07, 18:06 #11
Ich habe nicht gesagt, dass es die bessere Variante sei, nur, dass diese Methode GARANTIERT vor Bruteforceattacken schützt
Wer also genervt wird, sollte sich das mal anschauen. Die File kann auch auf einem USB Stick liegen, der nur dann eingesteckt wird, wenn man ihn braucht. Oder eine kleine, verschlüsselte Partition? Oder oder oder ...
Man kann natürlich auch einfach ein 20 stelliges, sicheres PW wählen
Die Loginversuche und damit die wachsende auth.log (die kann sehr groß werden ...) und ebenso der Traffic (!!!) bleiben aber trotzdem erhalten ...
Greetz
NetworkerZGeändert von NetworkerZ (18.12.07 um 18:08 Uhr)
Gaming: Intel 2600K @ 4,4Ghz, ASUS P8P67 Deluxe, 16GB DDR3 1600MHz RAM, ATI HD6950 @ 6970 BIOS @ Sharan, Corsair F120 SSD, Samsung F3 1TB HD103SJ, X-Fi Extreme Music, Corsair Graphite 600T black , BeQuiet Straight 580 Watt, Samsung 223c Multiwriter black, Windows 7 Professional x64
Subnotebook: MSI IdeaPad U160, Core i5 520UM, 4GB DDR3 RAM, 500GB HDD, 11,1" LED Display @ 1366x786, 6 Stunden Akkulaufzeit, 1,4 KG
- 18.12.07, 21:41 #12
Sehr schoen geschrieben Ulukay, das sollte ein Sticky bekommen!

Seb
- 20.12.07, 11:26 #13Leutnant zur See
- Registriert seit
- 23.08.2005
- Beiträge
- 1.044
Hallo zusammen,
guter Thread, habe auch einen Xubuntu Server seit langem laufen und genau sowas gesucht.
Jetzt habe ich mal eine Frage: Das Forwarding müsste doch auch unter Windows z.B. mit putty gehen oder? FAlls ja, kannst du da auch erklären wie es geht?
-p steht das für das Passwort und -l für den Benutzernamen oder?ssh -p 43242 -l Hansi
- 20.12.07, 15:19 #14Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
nein - das -p steht für das port auf dem der ssh server läuft

btw geupdated
Geändert von ulukay (20.12.07 um 15:50 Uhr)
- 01.01.08, 23:50 #15Leutnant zur See
- Registriert seit
- 08.04.2007
- Beiträge
- 1.152
Die meisten werden doch sicher hinter einem Router sitzen ?
Da reicht es ja schon wenn man einfach nur dort die benötigten Ports forwarded.
- 11.01.08, 13:28 #16Bootsmann
- Registriert seit
- 14.07.2004
- Ort
- /dev/null
- Beiträge
- 650
- 11.01.08, 14:15 #17Leutnant zur See
- Registriert seit
- 23.08.2005
- Beiträge
- 1.044
Hi,
hab nochmal eine Frage:
Wie gebe ich Verzeichnisse auf meinem Server frei sodass ich über SFTP darauf zugreifen kann? Ich habe bei mir bis jetzt nur die Samba-Freigaben für das Windows Netzwerk...
Danke und Gruß
- 11.01.08, 15:03 #18Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
bei sftp bekommst du defaultmäßig alles, da wird dir / freigegeben
mit den berechtigungen des jeweiligen users mit dem du dich eingeloggt hast
- 11.01.08, 18:35 #19Leutnant zur See
- Registriert seit
- 23.08.2005
- Beiträge
- 1.044
- 11.01.08, 18:54 #20Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
normal nicht
einfach mit winscp connecten
- 11.01.08, 23:02 #21Leutnant zur See
- Registriert seit
- 23.08.2005
- Beiträge
- 1.044
super es geht jetzt!
Jetzt noch eine letzte Frage, wenn ich auf dem Server bin werden umlaute nicht dargestellt! bei Putty konnte ich einstellen das er UTF-8 nimmt und dann hat er alles richtig angezeigt, jedoch finde ich bei WinSCP eine solche funktion nicht? Oder bin ich einfach nur blind?
Verschlüsselt ist er ja jetzt von alleine oder muss da extra noch was eingestellt werden, weil man da noch was mit Tunneln einstellen kann?
Auf jedenfall schon einmal ein Dankeschön für die Geduld!Geändert von Rockhound (11.01.08 um 23:04 Uhr)
- 13.01.08, 11:00 #22Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
er verschlüsselt alles automatisch
umlaute zeigt er bei mir mit den default settings schon richtig an, wobei ich das jetzt erst schnell testen musste da ich nie umlaute verwende
in winscp gibts noch ne option die heißt "Server does not use UTF8"
vielleicht die mal auf OFF setzn?
http://www.sftpdrive.com/
das wär jetzt auch mal nen versuch wertGeändert von ulukay (13.01.08 um 11:02 Uhr)
- 13.01.08, 17:57 #23Leutnant zur See
- Registriert seit
- 23.08.2005
- Beiträge
- 1.044
Es hat funktioniert mit der Einstellung OFF!
Danke dir!
- 17.01.08, 15:36 #24Banned
- Registriert seit
- 19.07.2006
- Beiträge
- 8.427
Themenstarter
https://help.ubuntu.com/community/Si...tAuthorization
wow jetzt wirds mal extrem geil
quintessenz?
nach außen hin is kein einziges port offen - garnix
da hört ein daemon auf einem udp port (sendet aber NIE ein paket zurück -> ergo unerkennbar) und wenn ein paket kommt welches richtig aufgebaut ist wird für den client ein port geöffnet
- sowas wie portknocking nur 1000000x besser
Geändert von ulukay (17.01.08 um 15:40 Uhr)
- 21.07.08, 21:56 #25
Da ist glaub ich a fehlerchen drinne, beim meinem Linux Mint (Ubuntu basierend) ist esJetzt noch den SSH Deamon neustarten:
/etc/ini.d/sshd restart
/etc/init.d/ssh restart
LinkBacks (?)
-
Server Probleme (DarkRP)
Refback This thread11.12.10, 20:42 - 23.03.10, 12:57

LinkBack URL
About LinkBacks
Zitieren



