|
ot valqk(21-07-2006)
reiting (7)
[ dobre ]
[ zle ]
Variant za otpechatvane Iztochnik: http://webreality.org/content/view/18/3...
www.webreality.org
Kakto vsiaka sistema v internet, napulno normalno e i vashiia
kompyutur - bil toi survur ili nastolnata mashina na koiato
rabotite, da e podlozhena na postoianni opiti za hakvane ot
strana na vsiakakvi navletsi v internet.
Razbira se tezi ataki mogat da sa ot proizvolni script
kiddies ili ot dosta dobri krakeri.
Ako atakuvashtiia vashata mashina e ot vtoriia tip, ili vuobshte
niama da razberete, ili shte e prekaleno kusno kogato vi svetne
kakvo stava ili puk shte vi e trudno da go hvanete. Kakto i da
e, v tazi statiia ne stava duma za vtoriia tip atakuvashti.
Purviia tip - skript yuzurite, koito svaliat daden 'eksploit'
(ako moga taka da nareka brute force ssh skriptovete) i
vkarvaneto na rechnik s dumi imat dosta dosaden efekt za
vseki koito nablyudava log failovete si:
1. Generirat dosta izlishen trafik
2. Zaemat resursi na mashinata vi(dori i da sa
minimalni v povecheto sluchai)
3. Nai dosadnoto neshto - pulniat log failovete s
nenuzhna informatsiia
Tazi statiia ima za tsel da vi zapoznae s tehnika koiato se
izpolzva za prezhdevremenno blokirane na vuprosnite brute
force ataki.
Sled dosta rovene i prouchvane, v rezultatite mi ot
turseneto se poiavi edin dosta interesno zvuchasht proekt -
blocksshd.
Mozhe da bude nameren na adres: http://sourceforge.net/projects/blockss...
Proektut e startiran ot James Turnbull
james@lovedthanlost_-_net i pri purvonachalen pogled e nishto
osobenno - oshte edin proekt za blokirane na ssh atakite. Sled
kato go svalih i go razarhivirah obache, ostanah naistina
ocharovan ot koda na tova malko i sladko programche - napisano
na purl, s malko zavisimosti i mnogo krasiv kod.
Sled begul pogled vurhu koda si kazah 'Eeee... strahotno
programche, no zashto niama poddruzhka za BSD... zhalko...'.
Sekunda po kusno mi hrumna misulta... 'Zashto puk ne.....i
zapochnah da dopisvam koda za da mozhe da se integira s
zashtitnata stena pf'.
Izbrah pf za integratsiiata, zashtoto tova e stena, koiato ima
poddruzhka vuv vsichki BSD sistemi i tova puk znachi, che mozhe
da se izpolzva navsiakude.
I taka zapochvame.
Kakto spomenah po gore, programkata e pisana na perl - t.e.
shte e nuzhno toi da e instaliran, sushto taka malko moduli ot
cpan.org:
Sys::Syslog Sys::Hostname File::Tail Net::DNS::Resolver
Proc::Daemon Proc::PID::File Getopt::Long
Tova sa nuzhnite zavisimosti - molia ako operatsionnata vi
sistema e s paketna sistema, da gi instalirate prez neia, ako
ne - na ruka.
Sled kato osigurite neobhodimite zavisimosti, razarhivirate
programkata.
V paketa ima standartnite README, CHANGES, INSTALL,
CREDITS, blocksshd - samoto programche i blocksshd.conf -
konfiguratsionniia fail.
Sushto taka, ima direktoriia init v koiato mozhe da se otkrie rc
startirasht skript podhodiasht za povecheto linuks
distributsii.
Razpolozhenieto na failovete e po zhelanie, kato za da
sraboti bez da redaktirate blocksshd faila, triabva da
slozhite blocksshd.conf v /usr/local/etc/ , ako iskate,
razbira se, mozhe da pipnete samiia purl skript.
Neka da vidim sudurzhanieto na blocksshd.conf:
--------------------
# vim: syntax=perl
$cfg = {
os
=> 'linux', # Target OS - either linux or bsd
chain
=> 'blocksshd', # Name of iptables or pf chain
logfile =>
'/var/log/secure', # Log file to monitor
logcheck =>
'10', # How often to check the log file
max_attempts => '4', # Max
number of failures
timeout =>
'360', # Reset IP count if no activity after time out in
seconds
unblock =>
'1', # Enable unblocking
unblock_timeout => '43200', # Time in
seconds after which to unblock a blocked IP address
restore_blocked => '0', # Turn on checking
for previously blocked IPs
log_ips =>
'/usr/local/etc/blocksshd.list', # Log file for blocked
IPs
pid_file =>
'/var/run/blocksshd.pid', # Location of PID file
send_email => '1', #
Enable the sending of email notifications
email
=> 'root', # Email address to send notifications
mail
=> '/bin/mail', # Location of mail binary
iptables =>
'/sbin/iptables', # Location of iptables binary - only for
Linux
pfctl
=> '/sbin/pfctl', # Location of pfctl binary - only for
BSD
whitelist => [qw{
127.0.0.1
}], # whitelist - list of IPs that will never
be blocked
};
#leave 1; here!
1;
--------------------
Tuk e predstavena konfiguratsiiata, koiato ida po podrazbirane
s paketa.
Neka ia razgledame red po red.
Na purviia red e ukazano ako otvariame faila s vim redaktor,
kak toi da otsveti koda. Ne mislia, che e nuzhno da go
promeniate.
Na sledvashtiia red se suzdava hesh, koito posle programkata da
mozhe da chete direktno. Ako iskate da raboti ne pipaite(osven
razbira se ako znaete kakvo pravite).
Po nadolu zapochva sushtinskata nastroika.
Vsiaka stoinost triabva da e vuv vida:
key => 'value',
Posledniia red ot stoinostite triabva da e bez ,
Neka da opisha i koe kakvo znachi(vupreki, che optsiite sa
razbiraemi ot pruv pogled).
* os - tip na operatsionnata sistema - linux
ili bsd.Ot tuk programkata razbira koia stena da polzva.
* chain - tova e imeto na 'verigata' vuv
vashata stena, dori i da go ostavite po podrazbirane, posle
samo shte triabva da dobavite DENY ili block pravilo za
paketite ot tazi veriga(opisano po dolu).
* logfile - faila v koito se zapisvat
zaiavkite vi za autentikatsiia.
* logcheck - intervala prez koito se
proveriava po gorniia fail.
* max_attempts - maksimalen broi greshni
autentikatsii ot daden ares, predi da se blokira.
* timeout - vreme sled koeto se restartira
broiacha za greshni opiti za vlizane.
* unblock - flag 1/0 koito ukazva dali
blokiranite adres da se razblokirat.
* unblock_timeout - period sled koito
blokiranite adresi bivat razblokirani, ako e pozvoleno
avtomatichno razblokirane.
* restore_blocked - flag 1/0 koito ukazva
dali pri startirane na blocksshd da se vuztanovi blokazha na
adresi ot blokiranite predi negovoto spirane.
* log_ips - ukazva putia kum fail v koito, shte
se paziat vsichki blokirani adres i v posledstvie ako e
pusnata optsiiata restore_blocked, te shte budat cheteni ot tozi
fail.
* pid_file - ukazva kude shte se pazi faila v
koito e zapisan nomera na protsesa na blocksshd (PID
file).
* send_email - flag 1/0 - puska ili spira
izprashtaneto na e.poshta pri dobaviane na nov adres v spisuka s
blokiranite.
* email - E.poshta na koiato da bude izprateno
uvedomiavaneto, ako e pusnato.
* mail - Ukazvane na putia kum standartnata
mail programa na linuks/*BSD.
* iptables - Ukazvane na putia kum programata
iptables.
* pfctl - Ukazvane na putia kum programata
pfctl.
* whitelist - Spisuk s adresi, koito ne
triabva da se blokirat.Adresite se vpisvat V kudravite skobi
- edin adres na red.
Tova sa vsichki optsii, koito blocksshd predlaga (za sega -
19.07.2006).
V zavisimost ot OS vi sistema, vuv vashite 'ogneni
steni'(firewalls) shte triabva da dobavite po 1 red.
Toi shte sluzhi da blokira vruzkite koito sa dobaveni v
suotvetnata veriga(chain) ot blocksshd.
Za Linuks OS v nai obshtiia sluchai i nai prosto izpulnenie, vi
triabva da izpulnite tozi red kato super
potrebitel(root):
#> iptables -I INPUT -p tcp -m tcp --dport 22 -j
Kudeto e imeto, koeto ste napisali v konfiguratsionniia fail
- chain optsiiata.
VNIMANIE: Poradi razlichnite nachini na zarezhdane na linuks
sistemite, triabva da prochetete v stranitsata na vashata
distributsiia, kak da nakarate tozi red da se zarezhda pri
vseki start na mashinata.
Sled kato imate pravilo, koeto zabraniava vruzkata kum vas
ot spisuka s blokirani adres, shte triabva da startirate
blocksshd da raboti postoianno na vashata mashina.
Tui kato za normalna rabota blocksshd, triabva da raboti
kato daemon(demon) v pametta, mozhe da izpolzvate skripta ot
init direktoriiata, na paketa i da go dobavite v startirashtite
skriptove na vashiia Linuks.
Vuzmozhno e startirane na ruka(za testovi tseli ili pisane na
sobstveni inir skriptove.
Za da startirate blocksshd v ne rezidenten rezhim prosto
izvikvate izpulnimiia fail: /usr/local/sbin/blocksshd ili
kudeto ste go slozhili. Za da go pusnete da raboti kato demon
blocksshd se vika s optsiia --start za puskane i --stop za
spirane.
#>/usr/local/sbin/blocksshd --start
#>/usr/local/sbin/blocksshd --stop
Za FreeBSD (mozhe bi i za drugite *BSD sistemi - ne sum
testval, molia za komentar) shte triabva da dobavite tova
pravilo v /etc/pf.conf niakude predi poslednite redove:
block in on $ext_if proto tcp from to me port { 21,22
}
Kudeto chain e imeto na verigata ot konfiguratsiiata.
Sled kato zapazite promianata v /etc/pf.conf, shte triabva da
prezaredite pravilata s komandata:
#>pfctl -f /etc/pf.conf
Sled kato ia izpulnite, ako razbira se polzvate pf zashtitnata
stena, veche shte imate pravilo koeto da blokira vruzkite ot
-a.
Ako ne izpolzvate pf zashtitna stena, shte triabva da ia
razreshite za izpolzvane ot /etc/rc.conf (man rc.conf i
tursite pf).
Sled kato ia razreshite, ako ne iskate da restartirate i da
razreshite pf izpulnete komandata:
#>pfctl -e
Za statistiki na pf, mozhe da probvate:
#>pfctl -sa
ili da si prochetete: pf manual.
Tui kato pri *BSD (i konkretno pri FreeBSD) startirashtite
skriptove sa organizirani po suvsem razlichen nachin ot
Linuks, shte se nalozhi da polzvate start skripta koito shte dam
po dolu, dokato napravia port za FreeBSD i go kacha tuk.
blocksshd.sh
#!/bin/sh
#
# $FreeBSD: ports/sysutils/blocksshd/files/blocksshd.in,v
1.2 2006/07/13 03:37:57 dougb Exp $
#
# PROVIDE: blocksshd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable
blocksshd:
#
#blocksshd_enable="YES"
#
# See blocksshd.conf.
#
. /etc/rc.subr
name=blocksshd
rcvar=`set_rcvar`
blocksshd_pidfile="/var/run/blocksshd.pid"
command="/usr/local/sbin/blocksshd"
start_precmd="print_start"
start_cmd="${command} --start"
stop_precmd="print_stop"
stop_cmd="${command} --stop"
command_args=" "
# set defaults
blocksshd_enable=${blocksshd_enable:-"NO"}
blocksshd_conf=${blocksshd_conf:-"/usr/local/etc/blocksshd.conf"}
blocksshd_flags=${blocksshd_flags:-""}
load_rc_config ${name}
required_files=${blocksshd_conf}
print_stop() {
echo "Stopping ${name}."
return 0
}
print_start() {
echo "Starting ${name}."
}
run_rc_command "$1"
Postavete tozi fail v /usr/local/etc/rc.d/.
Otvorete /etc/rc.conf i dobavete:
blocksshd_enable="YES"
sled koeto izpulnete:
/usr/local/etc/rc.d/blocksshd.sh start
i ste gotovi, sega pri vseki start na sistemata shte se
startira i blocksshd.
Ako niakoi pusne programkata pod drugi BSD sistemi i si
napravi startirashti skriptove, molia da gi prati na za
da gi dobavia v paketa.
Malko samoreklama - pfctl integratsiiata i vuzmozhnostta za
zapisvane na vsichki blokirani adres i vuztanoviavaneto im pri
start sa moia realizatsiia.
Vsiakakvi komentari i podobreniia sa dobre doshli!
---------------------------------------
Anton Blajev - www.webreality.org team
<< Prosta zashtita za SSH ataki (bruteforce, dictionary) | Ponizhavane na naprezhenieto na Pentium M >>
|
|