1 |
Hallo, |
2 |
|
3 |
Am 29. Dezember 2005 schrieb Cyrill Helg: |
4 |
> http://www.pettingers.org/code/sshblack.html |
5 |
> Das scheint eigentlich das zu sein, was ich brauche. |
6 |
|
7 |
Wenn Du automatisch bannen willst, ja. |
8 |
|
9 |
Ich hab bei mir auf nem VServer bissl Iptables-Voodoo gemacht und jetzt |
10 |
halte ich die "Einbrecher" bissl länger auf. |
11 |
|
12 |
IPT=/sbin/iptables |
13 |
|
14 |
# SSH max 3 Versuche pro Minute von einer IP-Adresse |
15 |
|
16 |
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set |
17 |
|
18 |
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent \ |
19 |
--update --seconds 60 --hitcount 3 -m limit --limit 5/m -j LOG \ |
20 |
--log-prefix "SSH_BRUTE_FORCE: " |
21 |
|
22 |
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent \ |
23 |
--update --seconds 60 --hitcount 3 -j REJECT --reject-with \ |
24 |
icmp-host-prohibited |
25 |
|
26 |
$IPT -A Server -p tcp --dport 22 -j ACCEPT |
27 |
|
28 |
Aaaalso, ich benutze hier das Recent-Modul von iptables, womit man eine |
29 |
bestimmte Häufigkeit festlegen kann, die ein Ereignis nur auftreten |
30 |
darf. |
31 |
|
32 |
Mit der ersten Regel erstelle ich einfach eine neue Recent-Zählung |
33 |
(oder wie man es nennen will). Mit der zweiten und dritten wird |
34 |
gesetzt, wie oft man sich verbinden darf zum Rechner, in meinem Fall |
35 |
hab ich max. 3 Versuche in 60 Sekunden zugelassen. Das limit-Modul |
36 |
hilft in der zweiten Zeile noch, die Log-Einträge zu reduzieren, es |
37 |
wird nur 5x pro Minute geloggt (aber wenn ich mir meine Logs so |
38 |
anschaue, scheint das nicht zu funktionieren, denn ich hab auch |
39 |
schonmal 10 Einträge in einer Minute gefunden). Womit Du die Rechner |
40 |
abweisen willst, kannst Du noch angeben in dem dritten Eintrag, bei mir |
41 |
gibts ein Host prohibited per ICMP zurück. Kannst auch einfach nur ein |
42 |
tcp-reset schicken oder was Dir so gefällt. ;) |
43 |
|
44 |
Die dritte Regel akzeptiert dann alles, was bis jetzt noch |
45 |
durchgekommen ist. |
46 |
|
47 |
Wie kannst Du das testen? Z.B. mit nem Einzeiler wie |
48 |
|
49 |
for i in `seq 1 5` ; do echo 'quit' | nc telnet servername 22 ; done |
50 |
|
51 |
Ab dem dritten Mal bekomm ich da ein "No route to host" geliefert. |
52 |
Kannst es gern mit mail.sdamm.de probieren, wie es aussehen sollte (ahh, |
53 |
was hab ich gesagt? ;)). Statt nc (=netcat) kannst Du auch telnet |
54 |
nehmen, funktioniert auch. |
55 |
|
56 |
So, viel Spaß beim Basteln. ;) |
57 |
|
58 |
Ciao |
59 |
Sebastian |
60 |
-- |
61 |
Sebastian Damm |
62 |
Blog: http://blog.sdamm.de |
63 |
GPG-Encrypted mail welcome! ID: 0x64D96827 @ pgpkeys.pca.dfn.de |
64 |
Fingerprint: CB7F F23F D950 644D 838B 215A 550F 75EC 64D9 6827 |