Hallo zusammen,
Ein Server ist für viele „einfach“ zu administrieren, da sie Grundkenntnisse in den Befehlen der Shell haben und meinen, da Sie ja die Directory wechseln können wären Sie Linux Pro’s…
Gerade bei Hostern die nicht Off-Shore sind geht man mit dem Mieten eines Servers hohe Risiken ein, grade wenn er von Blackhats gehackt wird können hohe Schadensersatzforderungen kommen.
Im folgenden also ein paar Dinge die man beim Einrichten seines Servers beachten sollte:
SSH-Port ändern:
Oft wird mit irgendwelchen Botnets nach Servern gesucht die den Standart Port 22 nutzen. Dort werden dann Standart Passwörter oder Exploits getestet. Wenn es jemand gezielt auf euren Server abgesehen hat bringt das ganze nicht viel, da oft ein einfacher Port Scan genügt und man hat den neuen Port raus.Wie änder ich den Port?
Folgendes in die Shell eingeben
nano /etc/ssh/sshd_config
Dann den Port 22 ändern, hierbei einen beliebigen Port nutzen der nicht von einem andern Service genutzt wird. Bsp. 40000
Das auskommentieren nicht vergessen indem ihr das # am Zeilenanfang entfernt.
Es sollte bsp. so aussehen:
Jetzt den SSH Server neustarten:
/etc/init.d/ssh restart
Bevor ihr die Shell schließt das ganze nochmal testen und Putty öffnen, dort dann den neuen Port eingeben und verbinden. Sollte alles problemlos funktionieren habt ihr alles richtig gemacht.
KNOCKD verwenden:
Beim Einrichten von KNOCKD sperrt ihr alle Ports bis auf den Apache Server. So verhindert ihr ein eindringen durch Fremde.
Doch wie kommt ihr jetzt auf den Server?
Mit Knockd! Ihr klopft mittels knockd an verschiedenen vorkonfigurierten Ports an, Knockd registriert dies und öffnet für einen bestimmten Intervall den Port für eure IP.Wie richte ich das ein?
Zuerst müssen die IPTables konfiguriert werden, dazu einfach das in die Shell eingeben:
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F iptables -X iptables -N open iptables -N interfaces iptables -A INPUT -p icmp -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j interfaces iptables -A INPUT -j open iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A interfaces -i lo -j ACCEPT
Falls ihr einen Webserver installiert habt der für alle frei Zugänglich sein soll, Port 80 öffnen.
iptables -A open -p tcp --dport 80 -j ACCEPT
Nun Knockd installieren, unzwar mittels:
apt-get install knockd
Die Konfiguration nun anpassen:
nano /etc/knockd.conf
[options] logfile = /var/log/knockd.log [opencloseSSH] sequence = 4743,5783,9998 seq_timeout = 15 tcpflags = syn start_command = /sbin/iptables -A open -s %IP% -p tcp --dport 40000 -j A$ cmd_timeout = 10 stop_command = /sbin/iptables -D open -s %IP% -p tcp --dport 40000 -j A$
Hierbei den Port „40000“ je nach eurem SSH Port anpassen. Die Sequenzen wieder mit unbenutzen Ports belegen und aufschreiben!
Jetzt schalten wir Knockd für die Benutzung frei!
nano /etc/default/knockd
Das ganze testen wir jetzt noch, die Shell bleibt weiterhin für den Notall geöffnet und wir installieren uns auf unserem Client Knockd oder laden falls Windows die Applikation hier herunter!
Wir entpacken die knock.exe und erstellen je nach Client System eine .bat oder .sh Datei.
Dort wird folgendes eingetragen:
knock.exe <host> 4743 5783 9998
Die Sequenzen werden natürlich zu euren geändert.
Solltet ihr jetzt die Batch oder Shell Datei ausführen habt ihr den in eurer Config angegeben Intervall um zu eurem Server per SSH zu verbinden.
Sollte es nicht funktionieren einfach schnell in den Log gucken wo es klemmt.
SSH-Keys:
Wofür SSH-Keys?
SSH-Keys sichern den Server nochmal extrem stark ab, da immernoch mit den richtigen Knockd Sequenzen der Server per Bruteforce angreifbar wäre. Bei den SSH-Keys wird das Private & Public Key Verfahren verwendet. Dies gilt trotz Nsa etc. immernoch als relativ Sicher ;-)
Wie verwende ich SSH-Keys?
Ich gehe hierbei davon aus das ihr Windows als Client nutzt.
Ihr startet die puttygen.exe und es sollte folgende Oberfläche erscheinen:
Jetzt generiert ihr einen Key, achtet dabei auf den „Haken“ bei SSH2-RSA.
Während der Keyerstellung bewegt ihr, ähnlich wie bei Truecrypt, die Maus die ganze Zeit in dem „Viereck“ rum.
Sobald der Key erstellt wurde, gebt ihr bei Key Passphrase euer gewünschtes zukünftiges Root Passwort ein.
Danach speichert ihr euch den Private Key ab.
Für ganz Paranoide auf einer verschlüsselten True Crypt Partition.
Den Public Key makiert ihr vollständig und kopiert ihn, danach loggt ihr euch per SSH wie gewohnt auf dem Server ein und gebt folgendes ein:
mkdir ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys
Dort den Public Key einfügen den ihr kopiert habt.
Danach auf 600 chmodden
chmod 600 ~/.ssh/authorized_keys
Die Session nicht schließen aber Putty erneuert öffnen und wählt wie auf dem Screenshot euren Private Key aus:
Jetzt öffnet ihr die Session und loggt euch mit dem Root User ein.
Es sollte nun folgend aussehen:
Jetzt einfach euer Keyphrase was ihr bereits im Puttygen angegeben habt einfügen.
Sollte alles ohne Probleme geklappt haben deaktiveren wir den Passwort Login wie folgt:
nano /etc/ssh/sshd_config
Hierbei folgende Einträge ändern
PasswordAuthentication no
UsePAM no
Ihr könnt diese mittels Strg + W übrigens einfach suchen.
Mittels Strg + S Speichern und Nano mittel Strg + X verlassen.
Zuletzt den SSH Server neu starten:
/etc/init.d/ssh restart
Glückwunsch euer Server ist nun noch ein Stück sicherer. :Whistle2: