Blokace opakovanych pokusu o pripojeni?

Vlada Macek tuttle na sandbox.cz
Neděle Březen 5 16:03:41 CET 2006


Petr Barta wrote:

> potreboval bych nejakou metodu, jak zablokovat (automaticky, nejlepe
> pomoci iptables) IP adresu, ze ktere chodi pokusy o ssh (ftp, pop3,
> apod.) ...

Resil jsem asi stejny problem, tuna hlasek od logchecku o pokusech o
prihlaseni ruzne ze sveta. Nechtel jsem je ignorovat, lepsi je se jim
branit.

Moji prioritou bylo, aby uzivatele serveru nebyli vubec obtezovani, tedy
port ssh musi byt standardni 22 a zadne tukani, i kdyz jsem si s tou
myslenkou zahraval. Zadne omezovani Ciny a Koreje, apod.

Sledovani logu nejakym pravidelne spoustenym cmuchadlem jsem nechtel --
kdyz se spusti, je vetsinou pozde, behem par minut mam dve stranky
pokusu. A co kdyby se jeden trefil? :-)

Nize uvedene reseni nestalo zadne programovani. Pouzivam pouze
existujici software -- iptables, modul recent. Neco jsem vycetl, neco
pridal vlastniho. Lze to nazvat IP greylistingem. Po nekolika mesicich
pouzivani zadna stiznost.

$IPTABLES -N recent_ssh

# IP adresy, ze kterych prijimame SSH spojeni libovolnou rychlosti
QUICK_SSH="ip1 ip2 ..."

###############################################################################
# RECENT_SSH
#       Zamezeni brute-force pokusu o prihlaseni pres SSH.

 A="$IPTABLES -A recent_ssh"
 
 #      Nejdrive pustime pakety z adres, ktere pro jistotu nebudeme
omezovat.
 #     
---------------------------------------------------------------------------
 if [ -n "$QUICK_SSH" ]; then
   for IP in $QUICK_SSH; do
     $A -s $IP                                  -j RETURN
   done
 fi

 #      Navrat paketu z tohoto retezu (OK), pokud je jich z jedne IP adresy
 #      v poslednich '--seconds' sekundach min nez '--hitcount'.
 #     
---------------------------------------------------------------------------
 $A -m recent --name recent_ssh       --set
 $A -m recent --name recent_ssh     ! --rcheck --seconds 60 --hitcount 7
-j RETURN

 #      Zde jiz paket bude odmitnut, ale prvnim z nich jeste akci
zalogujeme.
 #     
---------------------------------------------------------------------------
 $A -m recent --name recent_ssh_log ! --update --seconds 60 -j LOG
--log-level debug --log-prefix "Fw:TOOMANY-SSH: "
 $A -m recent --name recent_ssh_log   --set

 #      Finalni akce s pretekajicimi pakety.
 #     
---------------------------------------------------------------------------
 $A -j REJECT --reject-with icmp-admin-prohibited

...

###############################################################################
# INPUT
#       Pakety urcene pouze pro tento stroj.

 A="$IPTABLES -A INPUT"

...

$A -m state --state ESTABLISHED                -j ACCEPT
#      Zbyvaji zadosti o nova spojeni.

#      Zadosti o SSH podrobime testu, zda neprichazeji z nejakeho IP moc
casto.
 #     
---------------------------------------------------------------------------
 $A -p TCP --dport 22                           -j recent_ssh



###############################################################################

Priklad vysledku (mail od logchecku):

Bezpecnostni udalosti
=-=-=-=-=-=-=-=-=-=-=
Mar  4 22:31:41 sshd[25009]: Failed password for root from 221.143.22.24 port 35915 ssh2
Mar  4 22:31:43 sshd[25011]: Failed password for postgres from 221.143.22.24 port 36581 ssh2
Mar  4 22:31:46 sshd[25013]: Failed password for illegal user accept from 221.143.22.24 port 37218 ssh2
Mar  4 22:31:48 sshd[25015]: Failed password for illegal user leo from 221.143.22.24 port 38000 ssh2
Mar  4 22:31:51 sshd[25017]: Failed password for illegal user zeppelin from 221.143.22.24 port 38669 ssh2
Mar  4 22:31:54 sshd[25019]: Failed password for illegal user hacker from 221.143.22.24 port 39856 ssh2

Udalosti v systemu
=-=-=-=-=-=-=-=-=-
Mar  4 22:31:46 sshd[25013]: Illegal user accept from 221.143.22.24
Mar  4 22:31:46 sshd[25013]: error: Could not get shadow information for NOUSER
Mar  4 22:31:48 sshd[25015]: Illegal user leo from 221.143.22.24
Mar  4 22:31:48 sshd[25015]: error: Could not get shadow information for NOUSER
Mar  4 22:31:51 sshd[25017]: Illegal user zeppelin from 221.143.22.24
Mar  4 22:31:51 sshd[25017]: error: Could not get shadow information for NOUSER
Mar  4 22:31:54 sshd[25019]: Illegal user hacker from 221.143.22.24
Mar  4 22:31:54 sshd[25019]: error: Could not get shadow information for NOUSER
Mar  4 22:31:54 kernel: Fw:TOOMANY-SSH: IN=eth0 OUT= MAC=00:60:08:91:ca:f5:00:13:21:fc:55:ca:08:00 SRC=221.143.22.24 DST=x.x.x.x LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=56063 DF PROTO=TCP SPT=40395 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0

###############################################################################

Asi by slo logcheckem to otravovani jeste zmirnit, ale i tak jsem velmi
spokojeny.

Ted jsem si udelal statistiku za dobu, co to bezi. Vetsina IP se
zakazala jen jednou a stacilo to. Je niceme rekordman, ktery byl zakazan
i 7x. Toho asi budu blacklistovat rucne ve skriptu. :-)

-- 

\//\/\
(Sometimes credited as BA92 C339 6DD2 51F6 BACB 4C1B 5470 360E 20E5 926D.)

 [ When you find a virus in mail from me, then I intended to infect you, ]
 [ since I use SW that is not distributing malware w/o my knowledge.     ]



Další informace o konferenci Linux