Šioje pamokoje pateikti žingsniai yra rekomendacijos, kurios padės įvertinti serverio būklę ir nustatyti, ar jis gali būti atakuojamas.
Jei nesate tikri arba nežinote, kiek procesorių turi jūsų serveris, tai galite sužinoti šiomis komandomis:
grep processor /proc/cpuinfo | wc -l
nproc
Šios komandos parodys tik procesorių skaičių serveryje, pavyzdžiui 1, 2, 4 ir t. t.
Tuomet serverio apkrovą galite patikrinti kitomis komandomis:
uptime
cat /proc/loadavg
Šių komandų rezultatas yra gana paprastas, tačiau jame galima pastebėti tam tikrų nukrypimų. Pavyzdžiui, štai kaip gali atrodyti "uptime" komandos išvestis:
Komandos išvestis parodo, kiek laiko serveris veikia, kiek naudotojų šiuo metu yra prisijungę ir kokia yra vidutinė apkrova per 1, 5 ir 15 minučių. Jei serveris turi 1 procesorių, tokios apkrovos reikšmės gali atrodyti normalios ir nekelti įtarimų. Tačiau jei vidutinė apkrova būtų, pavyzdžiui, 1.50, 2.23, 8.14, tai jau galėtų reikšti galimą problemą. Reikšmė 1.00 atitinka 100 proc. CPU apkrovą. Todėl 1.50, 2.23, 8.14 galima suprasti taip:
1.50 reiškia, kad per paskutinę 1 minutę CPU buvo perkrautas 50 proc.;
2.23 reiškia, kad per paskutines 5 minutes CPU buvo perkrautas 123 proc.;
8.14 reiškia, kad per paskutines 15 minučių CPU buvo perkrautas 714 proc.
Nors 50 proc. ar net 123 proc. trumpu laikotarpiu dar gali būti priimtina, trečioji reikšmė jau turėtų kelti susirūpinimą. Kita vertus, jei matote, kad šios reikšmės mažėja, tai gali reikšti, kad problema nyksta. O jei apkrovos reikšmės būtų 8.14, 2.23, 1.50, tai galėtų rodyti, kad apkrova kaip tik šiuo metu didėja.
Apkrovos reikšmės gali parodyti galimą problemą, susijusią su tuo, kad serveris patiria ataką. Serverio apkrova gali didėti dėl gaunamų užklausų ar srauto, tačiau tai nebūtinai reiškia ataką, todėl reikėtų tikrinti toliau. Kitas žingsnis yra tinklo srauto analizė.
Linux aplinkoje tam galima naudoti "netstat". Ši komanda gali padėti stebėti tinklą ir nustatyti galimas problemas. Štai kelios bendro pobūdžio komandos:
Ši komanda parodo, kiek jungčių su serveriu turi kiekvienas IP adresas. Ji padeda nustatyti, kurie IP adresai prie serverio jungiasi dažniausiai. Vienas IP adresas gali kreiptis į jūsų serverį kelis kartus, ir tai nebūtinai yra įtartina. Pavyzdžiui, jei talpinate internetinius išteklius, keli ryšiai iš to paties IP gali būti visiškai normalūs, nes mažesnės įmonės ar tinklai, naudojantys bendrą IP, taip pat gali jungtis prie jūsų išteklių. Todėl vertinant situaciją reikėtų atsižvelgti į jūsų serverio paskirtį. Vis dėlto, jei matote, kad vienas IP adresas turi 100 ar daugiau jungčių prie serverio, tai jau gali atrodyti įtartinai ir vertėtų tai patikrinti iš naujo.
netstat -ntu|awk '{print $5}'|cut -d: -f1 -s|sort|uniq -c|sort -nk1 -r
Dar kelios "netstat" komandos bendram stebėjimui.
Ši komanda parodo visas aktyvias jungtis su serveriu:
netstat -na
Ši komanda parodo visą konkretų srautą, pavyzdžiui, per prievadą :80, pagal IP adresus:
netstat -an | grep :80 | sort
Ši komanda parodo jungčių skaičių pagal IP adresus per TCP ir UDP prievadus:
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Visos šios komandos, taip pat ir kitos "netstat" galimybės, gali padėti nustatyti, ar jūsų serverio tinkle vyksta kas nors neįprasto.
Tarkime, apsilankėte savo svetainėje ir pastebėjote, kad ji veikia lėtai arba grąžina 5xx klaidas. Tada prisijungiate prie serverio ir matote, kad jis taip pat reaguoja lėčiau nei įprastai. Tokiu atveju pirmiausia verta patikrinti serverio apkrovą. Jei ji didelė, tai gali patvirtinti, kad kažkas iš tiesų negerai. Tuomet galite patikrinti jungtis prie serverio ir galbūt pamatysite, kad keli IP adresai prie jo jungiasi šimtus kartų. Jei šie IP adresai jums nežinomi, tai jau gali būti laikoma ataka prieš jūsų serverį.
Kitas etapas turėtų būti atakos suvaldymas. Štai keli būdai, kaip tai galima padaryti.
Jei pastebėjote vieną ar kelis nežinomus IP adresus, kurie nuolat kuria jungtis su jūsų serveriu, ir norite tai sustabdyti, galite juos užblokuoti naudodami "iptables", pavyzdžiui:
iptables -A INPUT -s 111.11.1.1 -j DROP(or REJECT)
service iptables save
service iptables restart
Kitas variantas: jei viską sustabdėte, tačiau serveris vis tiek veikia lėtai, gali būti, kad dėl ankstesnių bandymų jungtis užstrigo daug Apache procesų. Tokiu atveju galite pabandyti juos visus užbaigti ir po to iš naujo paleisti Apache. Paprastai tai užtrunka iki kelių minučių, o kartais ir trumpiau:
killall -KILL httpd
service httpd start
Pastaba. Ši pamoka yra paprastas būdas patikrinti ir pabandyti nustatyti, ar jūsų serveris patiria ataką, jei kyla tokių įtarimų. Taip pat galima naudoti daug kitų įrankių, metodų ir procedūrų. Ši informacija skirta kaip pradinis atspirties taškas.

