SSH vor Brute-Force-Attacke schützen

Post Reply
Message
Author
mr

SSH vor Brute-Force-Attacke schützen

#1 Post by mr »

Hi Community,

ich hab in meinen Logs ein paar Attacken entdeckt und wollte nun etwas dagegen unternehmen.
Ich hab es nun mit iptables probiert aber irgendwie funktioniert es nicht:

Code: Select all

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
-A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
(gefunden auf: http://www.aumund.org/node/869)

Was mache ich falsch? :?

glaskugelseher

#2 Post by glaskugelseher »

funktioniert nicht?
jetzt weiss ich alles, achso.

User avatar
Stormbringer
Posts: 1570
Joined: 11. Jan 2001 11:01
Location: Ruhrgebiet

Re: SSH vor Brute-Force-Attacke schützen

#3 Post by Stormbringer »

mr wrote: ...

Code: Select all

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
-A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
...
Was mache ich falsch? :?
Hi,

Du gibst deutlich zu wenige Infos!
Generell: ist das recent Modul vorhanden?
Welche Kernelversion, welche iptables-Version?
Keine Infos in den Logdateien?
Werden die Zeilen bei einem iptables -L aufgeführt?
Solltest Du die SuSE FW2 nutzen: wo hast Du die Zeilen eingefügt?

Und dann gehe ich davon aus, daß am Anfang der Regeln jeweils ein Verweis auf iptables steht ... oder? Also etwas in der Art:
/usr/sbin/iptables -A INPUT -p tcp ...

Weiterhin nehme ich an, daß Du durchaus den Text des geposteten link auch weiter gelesen hast ... sort gibt es nämlich ein Regelupdate:

Code: Select all

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl \
--name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl \
--name SSH -j DROP
So ... dann müßte eigentlich nur noch ein Regel für SSH_WHITELIST erstellt werden (etwa /usr/sbin/iptables -N SSH_WHITELIST), und danach die SSH_WHITELIST befüllt werden (/usr/sbin/iptables -A SSH_WHITELIST -s $TRUSTED_HOST -m recent --remove --name SSH -j ACCEPT).
Vergleich auch (obiges angepaßt): http://blog.andrew.net.au/tech/security

Gruß
Continuum Hierarchy Supervisor:
You have already been assimilated.
(Rechtschreibungsreformverweigerer!)

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#4 Post by Lateralus »

Verzichte auf den Kram. Leg den sshd auf einen anderen Port als 22, oberhalb der well-known ports und gut. Außerdem kannst du das Einloggen per Passwort mit

Code: Select all

ChallengeResponseAuthentication no
verbieten. Benutze statt dessen host-keys, oder wie das gleich hieß.

Edit: Nochmal zur Portnummer. Noch besser wäre, wenn du den Server auf einen Port legst, welcher nur dynamisch zugewiesen wird und nach /etc/services keine feste Funktion hat. Portscans erfolgen sehr selten auf alle Ports - wer hat schon die Zeit.

nmap scannt zum Beispiel nur irgendwas um die 1600 Ports, wenn man's nicht anders sagt. Vielleicht auch mal in der nmap-Doku nachlesen, ich denke die meisten werden den benutzen.

mr

#5 Post by mr »

Auf einen anderen Port legen fällt aus, genauso wie die Anmeldung per host-key.

Ich hab es nun auch hinbekommen.
Am Ende hat einfach noch eine ACCEPT-Regel gefehlt, weil sonst der Port standardmäßig zu wäre.

Code: Select all

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name SSH
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Das Problem ist jetzt aber ein anderes:
Der Port wird für jeden gesperrt und nicht nur für die IP, die es betrifft.

klopskuchen
prolinux-forum-admin
Posts: 1444
Joined: 26. Jun 2004 21:18
Contact:

#6 Post by klopskuchen »

> Auf einen anderen Port legen fällt aus

/etc/ssh/sshd_config:

Code: Select all

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

Port 30005
Protocol 2
#ListenAddress 0.0.0.0
#ListenAddress ::

Code: Select all

user# su
root# /etc/init.d/sshd restart
root# exit
user# nmap -p 30005 localhost

Starting nmap 3.75 ( http://www.insecure.org/nmap/ ) at 2005-08-21 18:46 CEST
Interesting ports on localhost (127.0.0.1):
PORT      STATE  SERVICE
30005/tcp open unknown

Nmap run completed -- 1 IP address (1 host up) scanned in 0.106 seconds
user#     
MfG, Klopskuchen
When all else fails, read the instructions .

Feldi

Brute_Force Attacke

#7 Post by Feldi »

Hi
kann mir mal einer einen link sagen wo ich Brute-Force Attacke downloaden kann
:?: :?: :?: Bitte

Post Reply