Mostanában nagyon ráálttam a weboldalak biztonságának erősítésére, aminek eredeti oka a katalógusom meghackelése volt. Majd megszakadt a szívem úgy látni azt a remek oldalt:)
None kívánsága szerint egy automata bad robot defender szkriptet fogok most itt prezentálni. Az összeállításához a metodikát innen szereztem. Ez az oldal részletesen bemutatja a bad robotok azon rossz tulajdonságát, hogy nem hallgatbak a jó szóra és a robots.txt-ben korlátozottként specifikált tartalmat is látni akarják a hackerekhez hasonlóan.
Pár poszttal korábban megismertettem egy módszert, amivel a robots.txt fájl-t az illetéktelenek elől elrejthetjük. Sajnos ezt most majd ki kell szerelni az oldalból, de azt gondolom megéri.
Hát akkor kezdem a védelem ismertetését.
1. Nyisd meg a robots.txt fájl-t és helyezd bele ezt a két sort
User-agent: *
Disallow: /core
A mappa neve bármi lehet, a lényeg az, hogy a rosszindulatú humanoidok is rákapjanak a nevére, mert amint megteszik vége a dalnak.
2. Hozd létre a robots.txt.-ben definiált mappát, és a könyvtárba másold fel az alábbi tartalmú index.php fájlt.
<?php
//gyujtsük össze az IP-t, vagy bármi mást, amit szeretnénk
$ip = $_SERVER[“REMOTE_ADDR”];
$logfile = ‘bannolnilog.txt’;
//logfájlba vele
$fp = fopen($logfile, ‘a’);
fputs($fp, “$ip
“);
fputs($fp, ” “);
fclose($fp);
// kézfogás közben ne felejtsünk el mosolyogni
echo “az IP biztonsági okokból rögzítésre került, sajnos a látogatásod itt véget ért”;
?>
3. A létrehozott mappába (példánál maradva core) másoljuk fel az imént logfile-ként definiált üres bannolnilog.txt-t (644-es attributúmmal működik nálam). Ő fogja majd gyűjteni a bűnösök neveit.
4. A györkérmappába, de oda tesszük, ahová csak szeretnénk töltsük fel az alábbi tartalmű validator.php fájlt.
<?php
$ip = $_SERVER[“REMOTE_ADDR”];
//fontos a target megfelelő elérése, a hibaüzenetek majd tudtunkra adják, ha elrontottunk valamit
$target = file(dirname(__FILE__). “/core/bannolnilog.txt”);
foreach($target as $item){
$item = trim($item);
if(stristr($ip, $item)){
//sima 403 hiba a válasz, de ha gondolod, mond meg nekik a magadét
header(“HTTP/1.0 403 Forbidden”);
exit;
}
}
?>
5. Nyisd meg a header.php fájlt, vagy bármi, ami elkezdi a szkriptet futtatni, és minden elé illeszd be
<?php require “/ide/jön/a/path/validator.php”;?>
6. A védelem felállt, ha véletlenül magadat sikerült kibannolod, ürítsd ki a logfájlt ftpvel és meg is vagy.
További kellemes napot!
Ez szintén nagyon szuper lett! Ahogy gondoltam is! 🙂 Ismét köszönet érte! Viszont sehogy nem lehet ez úgy megcsinálni, hogy a robots.txt is rejtve maradjon? Minden esetre hamarosan kipróbálom.
Köszönet!!!
Na felmerült bennem ismét egy lehet, hogy láma kérdés. Nagy baj, lenne, ha csak a google, msn, és yahoo botokat engedném az oldalra? Miért kell nekem a többi robot látogatása? Szükségem van nekem rájuk? Mert arra gondoltam, hogy a robots.txt védelmet is benne lehetne hagyni, amiben letiltom a google, msn és yahoo robotnak, hogy látogassák a core mappát. Ők mivek “okos” robotok 🙂 ezért sosem mennének be. Minden más egyéb robot, pedig ki lenne tiltva az oldalról. Ez nagy gond lenne? Miért van szükségem nekem a többi robotra?
Sajnos Akhilleuszt is csak a sarkán lehetet megsebezni, így jelen esetben nem tudok más módszert. Ez biztos módszer az identifikálásukra.
Az a probléma a második kérdéssel, hogy ahhoz, hogy valamit kitilts először azonosítanod kell. Robotokat legegyszerűbben user-agenttel lehet talán tiltani. Ha elkészül egy függvény, amely minden google, yahoo msn user agentjétől különböző látogatót tilt, akkor a humanoid látogatók majd vakarhatják a fejüket, mert őket is letiltottad.
Ennél a szkriptnél azért is vannak több fájlban a dolgok, hogy minimálisan terhelje csak az oldalt, hiszen csak a tutira gázos IP-ket fogja elutasítani.
Oké, köszi a választ! Megcsináltam mindent, de sajnos az alábbi hibaüzit kapom:
Parse error: syntax error, unexpected T_STRING in /web/xxx/xycz/templates/templatenev/index.php on line 38
Ez Joomlán van, és a templatem index.php file-ban reklamál valamit ahová beszúrtam ezt, csak természetesen átírva:
Próbáltam több helyre is beszúrni, az index.php fileba, de mindíg ez a hibaüzim.
Ha jól értem a core mappában akkor a TXT-file-nak és az index.php filenak kell lennie. Valamint a gyökérbe tettem. A TXT file-nak adtam 777-es attributúmmot is, de úgy sem akarta az igazságot. De feltételezem nem ez lesz a baj.
Esetleg van valami ötleted?
Köszi!
Teljesen jól értetted, a core mappába megy az inde.php és a logfile, a telepítési helyre megy a validator.php és annak meghívása a template fájl első sorába. Szerintem ezzel a template fájllal zavartam be, mert én másik típusú szkriptbe szereltem be eddig, nem joomla volt és a header.php első sorába kellett tennem.
Ha te joomlával mész, akkor ne a template fájl index.php-jébe szereld a validator meghívását, hanem a telepítési mappa index.php legelső sorába, rögtön a copyright megjegyzések elé. Így már muszály lesz működnie, mert működő joomlán ilyen módon hívom a reversedns.php-t minden hibaüzenet nélkül.
Most kipróbáltam. Itt a Joomla telepítése után nincsen telepítési mappa, mert azt törölni kell a telepítés után. Ez kötelező, mert a mappa törlése nélkül el sem indul a Joomla. De gondolom ezt te is tudod. Szerintem amire gondoltál, az a Joomla alap index.php file-ja ami a gyökérben van.
Oda is beszúrtam a kódot, de így sem akart menni a dolog. Ugyan az a hibaüzi.
Viszont láttam a kódodban olyat, hogy “fopen”.
A weblap tárhelyén ez van:
allow_url_fopen: Off
Lehet, hogy ez a baj? Vagy ez marhaság?
None, megint nem fejeztem ki magam elég értelmesen. Installálási mappa alatt arra a mappára gondoltam, ahova a joomlát telepítetted. Jelen esetünkben az a mappa, ahol az index.php, az index2.php offline.php fájlok is megtalálhatóak. Az ebben lévő index.php fájlba kellene betenni.
Szerintem ha fopen valóban le lenne tilva a joomlát nem nagyon tudtad volna felrakni, mert ha jól emlékszem az installation mappába lévő telepítő fájlok egy részét ezzel nyitja meg. Virtuemartos joomlához volt szerencsém.
Semmi gond. Nem kötekedni akartam. A lényeg, hogy jó helyre tettem és megértettem hová kell rakni. Viszont a fopen ezen a tárhelyemen valóban OFF!
Ezzel szemben megnéztem egy másik Joomlás tárhelyemet és ott ON-ra van állítva. Sajnos én nem tudom konfigurálni a PHP beállításokat. Fizetős tárhely. De elképzelhető, hogy ez a baj?
Köszi!!
Jó hírem van, a directorym phpinfójában szintén off az allow url fopen érték és mégis hiba nélkül megy a szkript, gondolom azért mert nem url-t nyitunk vele.
🙂 Hát sajna nekem ez nem jó hír. 🙂 Most már tényleg nem tudom, hol kell keresem a hibát.
Ha beteszed az index.php első sorába a behívást és alápörkölsz az oldalnak milyen hibát dobat az oldal?
Hasonlót mint az első bejegyzésemnél.
Parse error: syntax error, unexpected T_STRING in /web/turbopower/turbopower.hu/index.php on line 1
Sajnos nem tudom mit jelent ez a hiba. 🙁
Bocsánat, sajnos gyorsan felejtek, ez az átka a párhuzamosan végzett tevékenységekkel. Értem már a helyzetet. Szerintem a word press lesz a bűnös. Elkódolja a blockuote-ba tett ” (idézőjelet). Kérlek, ellenőrizd, hogy a
<?php require “/ide/jön/a/path/validator.php”;?>
meghívóban helyesen szerepelnek-e az idézőjelek, valamint, hogy a <?php után van-e szóköz. Most vettem észre, hogy ez kimaradt a posztban, mármint a szóköz, mindjárt beszúrom.
Igen az idézőjel valóban hiba volt. Ezt én is észrevehettem volna. Miután javítottam egyből megváltozott az egész sornak a színe a PHP editorban. Viszont a probléma továbbra is fenntáll.
Két féle képpen próbáltam.
Próbáltam megadni így a path elérési útvonalat. (Ezt a Joomla adminban mutatja!)
/web/turbopower/turbopower.hu/validator.php
Ekkor ezt a hibaüzit kaptam:
Parse error: syntax error, unexpected T_LNUMBER in /web/turbopower/turbopower.hu/validator.php on line 9
Aztán próbáltam így is megadni a path-ot.
/validator.php
azaz sehogy.
Ekkor ezt a hibaüzit kapom:
Warning: require() [function.require]: open_basedir restriction in effect. File(/validator.php) is not within the allowed path(s): (/web/) in /web/turbopower/turbopower.hu/index.php on line 1
Warning: require(/validator.php) [function.require]: failed to open stream: Operation not permitted in /web/turbopower/turbopower.hu/index.php on line 1
Fatal error: require() [function.require]: Failed opening required ‘/validator.php’ (include_path=’.:/usr/local/php5/lib/php’) in /web/turbopower/turbopower.hu/index.php on line 1
Az első megoldás pedig jó lesz, ha egyszer készen lesz. Át tudnád dobni nekem [bagiz(kackackukac)i-connector.com ] a validator.php-det úgy ahogy most van.
Oké, köszönöm szépen, hogy segítettél. Én voltam a ludas. A validator.php-ban nem javítottam ki az idézőjeleket, de utánna az elkészült index.php fileba is benéztem, és ott is volt mit javítani. Nem csak az idézőjelek voltak elszúrva, hanem ami csak 1 db vonást csinál, nem kettőt. Az is csálén volt. De most megcsináltam az átalakításokat, és hiba nélkül betöltődött az oldal. Elvileg akkor úgy tudom tesztelni, hogy megnyitom a core mappát, és elvileg kibannoltatom magam. Utánna pedig törlöm a logból az IP-m, és már kész is vagyok. Jól sejtem?
Még egyszer köszi Zoli, és bocs, hogy fárasztottalak!!
Imre
Örülök, hogy sikerrel zárult a dolog, majd megpróbálom a wordpresst kicsit kiokítani az elkódolásról.
Pontosan, belenézel a core mappába, és véged (fehér oldal, bármely URL-t kéred le). Ha tiszta előéletet szeretnél, akkor csak kirölöd az IP és megváltottad magad. Szegény Isaurának sokkal nehezebb volt.
“Szegény Isaurának sokkal nehezebb volt.” 😀 Ez marhára tetszett! 🙂
Oki, ki is próbáltam! Kaptam egy BAN-t! 😀
Nagyon pöpec! Ismét csak fejet hajtani tudok előtted!
Köszönöm szépen még egyszer!
Ha gondolod, töröld ezeket a kommenteket.
Üdv: Imre
Imre, hajolgatni nem érdemes, mert megfájdul a derekad, örülök, hogy hasznos lett a cuccos:)
A kommenteket hagyom, valiknek lehet, egyszer segíteni fog, nameg mocskos jól néz ki ez a sok komment a bejegyzés címe mellett.
Jó éjt!
Én is meglepödtem, 20 komment 🙂
Tényleg szuperül működik a script, kipróbáltam és simán kibannoltam magam a turbopower.hu oldalról… Tényleg jó.
Zoli, egy kérdés: estek-e és hányan eddig a kelepcébe?
Kefe, az a helyzet, hogy most beszereltem az oldalamba egy frankó php statisztika scriptet, ami elég jól logol. Robot még nem esett bele, de hackert fogtam már vele. Nem konkrétan ezzel a szkripttel, mert az már az sql injekció gyanús sztringek lekérésének szűrését is tartalmazza.
Ez a bad robot trap szkriptet egy hosszabb út első állomásának tekintem, előbb utóbb mysql-t kellene mögé rakni és lekérdezési mintázatokat bannolni, szóval most az adatgyűjtés korszaka következik.
Eddig “sajnos” csak Kefe lett kibannolva az oldalamról, bár talán ez nem is annyira aggasztó. 🙂
Viszont Zoli ez azt jelenti, hogy egy összetettebb védelmi rendszeren dolgozol?
None, ajjaj még, hogy összetett. 😀
http://seo.forum.hu/seo/t-ahogy-azt-elkepzeltem-1362.seo
A védelem két napos termése:
79.140.1.114
72.20.109.34
72.20.109.36
72.20.109.37
74.6.22.136
79.140.1.180
89.28.3.241
Ebből szerintem az összes a sztring ellenőrzésen csúszott el, a fajankók!
Szia Zoli! Nagyon jól szuperál a kód. Köszi!