Absicherung des SSH-Ports bei S4Y

Master-Basti

Registered User
Hallo zusammen,

nachdem ich nun endlich eine feste IP für meinen INET-Anschluss habe und mir Log-Dateien wie diese ziemlich auf den Keks gehen,

Feb 20 00:00:56 s9 sshd[12133]: reverse mapping checking getaddrinfo for 172-117-60-69.serverpronto.com failed - POSSIBLE BREAKIN ATTEMPT!
Feb 20 00:00:57 s9 sshd[12199]: Illegal user public from ::ffff:69.60.117.172

wäre es mal interessant zu wissen, wie ich es hinbekomme, dass mir 1. Loginversuche auf den ssh-port per E-Mail in einem täglichen Bericht zugesandt werden und 2. Der Login nur von meiner IP aus stattfinden kann. (Wobei hier wieder die Frage ist, was S4Y dazu sagen würde) ;-)

Freue mich auf eure Antworten und verbleibe

Mit freundlichem Gruß

Master-Basti

Ps: Eine Änderung des Root-Benutzernamens wäre auch nicht schlecht ;-)
 
Eine tägliche Auswertung solltest Du mit logcheck einrichten können. Aus eigener Erfahrung kann ich Dir aber sagen, dass solche Mails nach kurzer Zeit nerven.

Um Brute-Force-Attacken zu verhindern habe ich Fail2Ban im Einsatz. Das sperrt eine IP nach 5 ungültigen Anmeldeversuchen. Besser noch ist es, ganz auf Passwort-Authentifizierung zu verzichten und sich per Public-Key zu authentifizieren.

Wenn Du Dich nur von Deiner IP aus einloggen willst, kannst Du folgende iptables-Regel erstellen:

Code:
iptables -A INPUT -i eth0 -p tcp --dport 22 -s !$DEINEIP -j REJECT

=> "Weise alle TCP-Pakete ab, die über das Interface eth0 an Port 22 kommen, wenn sie als Absender nicht Deine IP haben."
 
Hallo erst mal

Den SSH-Port sicher machen ist relativ einfach:

Erst mal würde ich einen neuen Benutzer mit unpreviligierten Rechten auf dem Server erstellen, und diesem ein Passwort zuteilen.
Dann öffnest du die sshd.conf mit einem dir vertrauten Editor. Als erste würde ich den Port hier ändern (zb. den Port von 22 auf 4321 umstellen). Das hat zur Folge, dass du dich ab sofort über ssh nichtmehr über den Standartport anmeldest, sondern über den Port 4321. Diesen Port musst du dann auch Putty angeben. Damit hast du die meisten fehlgeschlagenen Loginversuche schon mal weg, denn die Scriptkiddis probiern es in der Regel auf dem Standartport.
Als nächstes solltest du Root-zugriff auf ssh verbieten. und nur dem vorher angelegten User zugriff via ssh gewähren. Außerdem solltest du eine Authentifizierung via Passwort und/oder Key erstellen. Das heißt, dass beim Einloggen nach einem Passwort gefragt werden muss, und dieses nicht leer sein darf, und/oder ein Key abgefragt wird, der auf deinem Rechner liegt. Wenn du die Key-authentifizierung aktivierst, kannst du nur noch von Rechnern auf ssh zugreifen, auf welchen der key auch installiert ist.

Zum Thema ip-Adresse:
Das würde ich über iptables lösen. Vorrausgesetzt du hast eine iptables konfiguration, kannst du mit iptables alle ip-Adressen, die auf den ssh zugreifen wollen sperren, und nur noch deine eigene feste zulassen. Dann solltest du mit SSH eigentlich keine Probleme mehr haben.

Zum Thema Logfiles:
Zuerst musst du in Erfahrung bringen, in welches Logfile dein System die Authorisationsvorgänge speichert. Danach kannst du mit logrotate und einem cron-job das Logfile täglich rotieren lassen, und es dir auch jeden tag mit mpack zuschicken lassen. (dazu muss aber ein MTA oder sendmail installiert sein)
Logrotate sollte eigentlich auf deinem System installiert sein, nur mpack müsstest du vieleicht installieren.
Für den ganzen Ablauf schreibt man dann ein Shell-Script, dass man einfach jede Nacht um Kurz nach 0 Uhr aufruft. Das Logfiel wird rotiert, und dann via Mpack an eine von dir angegebene Adresse verschicket.

Gruß Mordor

Ps In wie weit da S4Y was dagegen hat, oder nicht, kann ich dir nicht sagen. Bin 1und1 Kunde, und da läuft es problemlos.
PPs Da war wohl wer schneller
 
Last edited by a moderator:
Hallo!

Das folgende sollte auch funktionieren:

Code:
# datei /etc/hosts.allow
sshd : deinefesteip/255.255.255.255 : ALLOW

# Datei /etc/hosts.deny
sshd : ALL : DENY

Gruß flyingoffice
 
Hallo,

nettes Thema habt Ihr hier. Habe den ssh Zugang auch soweit schon dicht gemacht wie beschrieben. Ist ja das ah und das oO
Jedoch das mit der Firewall Regel und der IP war mir noch nicht so bekannt.
Nun meine Frage dazu:

kann ich anstatt einer festen IP auch teile einer IP Range zulassen?
Sprich die ersten 2 Segmente meiner IP sind immer gleich 88.169. als Beispiel

würde das den so ausreichen
Code:
iptables -A INPUT -i eth0 -p tcp --dport 22 -s !$88.169 -j REJECT

edit://
ich muss dazu sagen das ich Suse 9.3 habe und dort die Firewall schon anhabe, nicht das sich da die Regeln überschneiden.

mfg
the_condor
 
Last edited by a moderator:
Generell kannst du es schon so machen, denn auch für IpTables kann man Wildcards vergeben.

Das Problem ist nur, dass du so immer noch fast 1.000.000 Ips zulässt, und wenn du dich wirklich mal von nem anderen Rechner einloggen willst, hast du verloren.
Desweiteren ist es doch so, dass die wenigsten Angriffe wirklich vom SSH-Port ausgehen. Viel mehr sind meist Dienste involviert, die nicht zum SSH-System gehören, wie beispielsweise der Apache, oder der MTA.
 
Generell kannst du es schon so machen, denn auch für IpTables kann man Wildcards vergeben.

Das Problem ist nur, dass du so immer noch fast 1.000.000 Ips zulässt, und wenn du dich wirklich mal von nem anderen Rechner einloggen willst, hast du verloren.
Desweiteren ist es doch so, dass die wenigsten Angriffe wirklich vom SSH-Port ausgehen. Viel mehr sind meist Dienste involviert, die nicht zum SSH-System gehören, wie beispielsweise der Apache, oder der MTA.

Ja da muss ich Dir schon Recht geben, gibt da viel Gefährlichere Dinge - auf die man ein Auge haben sollte.

mfg
the_condor
 
Back
Top