ot Vladsun(12-09-2006)
reiting (22)
[ dobre ]
[ zle ]
Variant za otpechatvane Povecheto administratori vizhdat ogromni logove za neuspeshni
(dai bozhe;) ) opiti za SSH login chrez izpolzvane na slabi
paroli i chesto sreshtani potrebitelski imena. S uvelichavaneto
na broia na potrebitelite, koito se nuzhdaiat ot SSH dostup do
konzolata se uvelichava i veroiatnostta ot probiv.
Sushtestvuvat mnogo nachini za zashtita ot podoben vid ataki
(bruteforce ili dictionary). Neka spomenem niakoi ot tiah:
- smiana na porta na SSH uslugata;
CHesto sreshtana praktika, no pri narochna ataka sreshtu samiia
surver lesno shte se otkrie na koi port slusha sshd deamon-a.
Vednaga shte se poiaviat predlozheniia za polzvane na PSD (port
scan detection), no po sushtestvo PSD tehnikata
"opazva" vsichki portove, a ne samo opredelen. S
izpolzvaneto na podhodiashti optsii na nmap, tazi zashtita bi
mogla da se prekochi. Sledvasht problem e man-in-the-middle
atakite, pri koito lesno se otkriva koi port e za sshd. Sled
otkrivaneto na SSH porta zapochva vtora ataka nasochena sreshtu
samite paroli;
- blokirane na opredeleni IP-ta za opredeleno vreme chrez
sledene na sistemnite logove;
Ima mnogo proekti bazirani na tozi metod. Na men lichno ne
mi haresva ideiata za periodichnostta na proverka na logovete.
- zabrana za izpolzvane na user/pass, razreshavane samo na
key-authorization;
CHudesna zashtita, stiga obstoiatelstvata da vi pozvoliavat
takova reshenie.
Predlaganoto ot men reshenie se harakterizira sus slednite
svoistva:
- zashtita samo na port 22;
- zashtita pri ataki ot tipa bruteforce i dictionary;
- lipsa na periodichnost na proverka za nevalidni opit za
login;
- lipsa na zavisimost ot sistemnite logove;
- prostota na izpulnenieto;
- lesna promiana na parametrite na zashtitata;
Kato nuzhen softuer izpolzvam samo iptables + recent
patch-a. Ne zabraviaite da kompilirate recent match-a kato
modul za da mozhete da promeniate dulzhinata na tablitsite ot
IP-ta.
V zashtitnata stena dobaviame:
Zashtitna
stena |
iptables -N SSH
iptables -A INPUT -p tcp --dport 22 --syn -j SSH
iptables -A SSH -p tcp -s 127.0.0.1 -j RETURN
iptables -A SSH -p tcp --syn --dport 22 -m recent --name
bad_ssh --update --seconds 60 -j DROP
iptables -A SSH -p tcp --syn --dport 22 -m recent --name
bad_ssh --set -j RETURN |
Kakvo praviat tezi pravila?
Purvo se prihvashtat samo opitite za initsializatsiia na SSH
sesiia. Sled tova se proveriava dali IP adresa ot koito se
poluchava tozi opit ne e veche v spisuka (bad_ssh) sus sledeni
IP-ta i ako e se proveriava dali intervala ot vremeto na
posledniia mu opit za initsializirane na SSH sesiia kum
tekushtoto vreme e po-maluk ot 60 sek. Ako ne, to syn-paketa
se othvurlia i ednovremenno s tova se obnoviava vremeto na
posledniia opit za vruzka na tova IP. Ako li da, to paketa
produlzhava po verigata nadolu, kato v sushtoto vreme se pravi
zapis za vremeto na opit za dostup i IP-to v spisuka.
Efektut ot obnoviavaneto na vremeto pri povtoren opit e, che
se iziskva pone 60 sek. sledenoto IP da ne pravi povtoren
opit za dostup.
S tezi zashtitni pravila bi moglo da se schita, che zashtitata e
izgradena. No sushtestvuva edno iavno neudobstvo - dori pri
validen opit za dostup do SSH uslugata, triabva da se izchakat
60 sek. za suzdavane na vtora SSH sesiia (lichno az otvariam po
niakolko konzoli). Za preodoliavaneto na tova neudobstvo e
nuzhno da se sledi koe IP ima validen dostup do SSH sesiia i
za nego gornite pravila da ne vazhat. Proverkata za validnost
na sesiiata ia pravia chrez .bash_profile - izpulniava se pri
vseki validen login na potrebitelia.
Suzdavame (ako ne sushtestvuva) .bash_profile vuv vsiaka home
direktoriia na vseki potrebitel, koito iskame da zashtitim. V
tezi failove triabva da ima reda:
Kod |
sudo
/usr/local/sbin/ssh_user_allow |
Zabelezhete, che se izpolzva sudo, taka che grupata
(ili potrebitelite) triabva da sa opisani v /etc/sudoers
faila s root prava za puskane na
/usr/local/sbin/ssh_user_allow. Tova se nalaga zaradi 0644
razresheniiata na /proc/net/ipt_recent/* failovete.
Samiiat fail /usr/local/sbin/ssh_user_allow e sus slednoto
sudurzhanie:
ssh_user_allow |
user_ip=`echo $SSH_CLIENT |
awk '{print $1}'`
echo "-$user_ip" >
/proc/net/ipt_recent/bad_ssh |
Kakvo pravi toi?
Purvo namira IP-adresa na lognatiia potrebitel i vtoro
premahva IP adresa mu ot spisuka sus sledenite IP-ta.
Po tozi nachin iptables pravilata opisani po-gore niama da
zadeistvat zashtitata po IP/vreme.
Vuzmozhno e vmesto opisaniia nachin za razreshavane na veche
lognati potrebiteli, kum iptables pravilata da se dobavi i
--hitcount parametura. Po tozi nachin se ukazva kolko opita
(validni ili ne) za opredelen period ot vreme (v sluchaia 60
sek.) shte se dopuskat. Proverka za validnost na login-a ne se
pravi.
<< Polezni suveti za Firefox | Blokirane na avtomatizirani ataki pod Linuks i *BSD >>
|