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