Manual:Security/hu


 * Ha úgy gondolod, hogy a MediaWiki-ben vagy a Wikimédia bármely oldalán biztonsági problémát találtál, vedd fel velünk a kapcsolatot (lásd: ) hogy hibajavítást adhassunk ki.



Maradj naprakész
A legfontosabb biztonsági szempont a szoftver naprakészen tartása. Mind a MediaWiki, mind azon szoftverek amelyektől függ, időnként frissülhetnek, amely új kiadások biztonsági foltokat is tartalmaznak.

A MediaWiki fejlesztői erősen ajánlják, hogy a szoftvert használók iratkozzanak fel a mediawiki-announce levelezőlistára. Ez egy alacsony forgalmú lista, ahol az új verziókat jelentik be.

A MediaWiki élettartam-ciklusával összhangban minden kiadáshoz egy éven át érkeznek biztonsági frissítések. A régebbi kiadásokban ismert, de javítatlan biztonsági rések lehetnek.

Ne feledkezz meg az Apache, PHP, MySQL/MariaDB és más, a szervereden futó szoftverek, az operációs rendszer és a webapplikációk frissítéséről sem.

Számos, a MediaWiki 1.3.x kiadását futtató felhasználót érintett a 2004 telén terjedő PHP-féreg, amely más, nem frissített phpBB-oldalakon jutott be a szerverre, ahol az írható PHP-fájlokba, köztük a MediaWiki 1.3 lefordított sablonjaiba is „you are hacked” („oldalad feltörve”) üzenetet helyezett el.

Légy óvatos a használt kiterjesztésekkel
Számos kiterjesztés érhető el a MediaWikihez, azonban ezek változó minőségűek. Az alacsony minőségű kiterjesztések használata a biztonsági hibák egyik leggyakoribb forrása.

Egy kiterjesztés használata előtt járj utána annak. A közösség ismert tagjai által fejlesztett eszközök általában biztonságosak, ugyanez igaz a Wikimédia Alapítvány oldalain telepített kiterjesztésekre is (természetesen erre sincs garancia). Ha egy több éve nem frissített, kevés tapasztalattal rendelkező személy által készített kiterjesztést találsz GitHubon, akkor az magas biztonsági kockázatot rejthet magában.

A nap végén vedd fontolóra a telepítéssel járó biztonsági kockázatot a más szoftvereknél megszokott módon.

A kiterjesztéseket is szükséges naprakészen tartani; a MediaWiki-szoftverrel együtt érkező bővítményekkel kapcsolatos bejelentések a mediawiki-announce levelezőlistán olvashatóak, azonban a többinél ez a lehetőség nem áll fenn. Néhány külső kiterjesztés készítője a biztonsági hibákat közzéteszi a mediawiki-l levelezőlistán.

Fájlengedélyek
Az egyik legfontosabb biztonsági tényező az, hogy a PHP- (Debian esetén gyakran www-data) és a MySQL-futtató felhasználónak ne legyen a PHP engedélyezésekor nyilvánosan hozzáférhető mappákhoz írási joga.

Unix-szerű rendszereken ehhez a MediaWiki-könyvtár tulajdonosa a webszerver- (www-data) vagy a MySQL-felhasználótól eltérő kell, hogy legyen. A telepítés módjától függően ez lehet alapértelmezés is; ha nem, a  segítségével hajtható végre a művelet, ahol a felhasználónév az előbbiektől eltérő (valószínűleg a mysql és a php nem saját neved alatt fut). Ezen lépés után szükséges lehet a képek könyvtára jogosultságának visszaállítása a PHP-felhasználóra, mivel a feltöltéshez a MediaWikinek írási jogra van szüksége (például ). Végül futtasd a  parancsot, így a tulajdonosokon kívül másnak nem lesz írási joga; ezután szükséges lehet a képek mappáján az előzőekben leírtak elvégzésére.

Azon mappák, amelyekhez a szoftvernek írási jogra van szüksége (például $wgCacheDirectory), a gyökérkönyvtáron kívül helyezkedjenek el; ez alól a képek könyvtára kivétel, amelynek a gyökérben kell lennie, viszont fontos, hogy ezen mappában tiltsd le a PHP-t. A részletek a szervertől függenek, de Apache alatt általában a .htaccess fájlban elhelyezett  a kívánt viselkedést hozza. Ha a beállítást magán a könyvtáron belül végzed el, győződj meg róla, hogy a konfigurációs fájl nem írható a webszerver által. A feltöltések biztonságáért lásd a vonatkozó szakaszt.

A LocalSettings.php fájl a PHP-felhasználó által olvasható kell, hogy legyen, azonban az adatbázis-jelszó és más érzékeny információk elrejtéséhez ne legyen írható. A többi MediaWiki-fájlhoz hasonlóan a LocalSettings.php-hoz se legyen a PHP-felhasználónak írási joga.

TLS
A Firesheep-stílusú támadások és az általános adatszivárgások elleni védelemként javasolt a TLS (HTTPS) használata. Ennek beállítása kívül esik ezen útmutató témáján, annyit viszont érdemes megjegyezni, hogy a letsencrypt.org ingyenes tanusítványokat kínál.

A TLS beállítása esetén fontos az ssllabs.com/ssltest/ oldalon való tesztelés, mivel a rendszer könnyen félrekonfigurálható.

Ha engedélyezed a TLS-t, érdemes beállítani a webszerveren a -fejléc küldését, amely erősíti a védelmet az adatlopások ellen, viszont ekkor nem dönthetsz úgy, hogy egy időre kikapcsolod a TLS-t.

Általános PHP-javaslatok

 * További információkért lásd az OWASP PHP-biztonsági útmutatóját.

Ezek a tanácsok nemcsak a MediaWiki, de bármely PHP-környezet esetén megfontolandóak.

Javasolt beállítások a fájlban vagy máshol való konfigurációhoz:

A  kikapcsolása. A beállítás bekapcsolásával a sütik helytelen működése esetén a munkamenet-azonosítók megjelenhetnek az URL-ben, ezzel harmadik felek ajánlóadatokkal vagy másolás-beillesztéssel megszerezhetik ezeket.
 * A  letiltása.
 * Számos PHP-támadás globális változókkal történik, így ezek megelőzésének érdekében győződj meg róla, hogy a register_globals ki van kapcsolva.
 * Ha egy másik applikáció miatt szükséged van a -ra, csak a virtuális hoszt és a kérdéses alkönyvtár esetében engedélyezd.
 * A MediaWiki a beállítás On értéke esetén is biztonságos; a kikapcsolás elővigyázatosság a nem ismert fenyegetések ellen.
 * A  letiltása (kivéve ha szükséged van rá).
 * A távoli PHP-kódok futtatásával kapcsolatos kockázatok attól függenek, hogy a kártékony kódot sikerül-e  vagy   funkcióba burkolni. Ha nem használod a távoli fájlbetöltést, akkor ennek kikapcsolásával megelőzhetőek az ilyen típusú támadások.
 * A MediaWiki esetében a Lucene keresési kiterjesztés, az OAI értelmezőbővítmény, a TitleBlacklist, illetve az 1.5 verzióban a Special:Import egyes funkciói igénylik ennek bekapcsolását, azonban általános beállítások mellett erre nincs szükség.
 * A MediaWiki a beállítás On értéke esetén is biztonságos; a kikapcsolás elővigyázatosság a nem ismert fenyegetések ellen.
 * Ezt mindig kapcsold ki.

Például ha a következőt látod a php.iniben:

register_globals = On

változtasd meg a következőre:

register_globals = Off

Alternatívaként a könyvtáralapú engedélyezéshez használhatod a következő Apache-direktívát:

php_flag register_globals off

Ezután indítsd újra az Apache-ot a változtatások újratöltéséhez ( vagy   (SUSE)).

Többfelhasználós rendszer esetén, ha a PHP Apache-modulként lett telepítve, minden felhasználói szkript ugyanazon, csökkentett jogosultságú fiókon fut. Ezzel más felhasználók láthatják a konfigurációs állományokat (köztük az adatbázis-jelszavakat is), módosíthatják a bejelentkezési munkamenet adatait és ha engedélyezted, írhatják a feltöltési könyvtárat is.

Többfelhasználós rendszerek biztonságához fontold meg CGI/FastCGI-konfiguráció használatát, így minden szkript saját fiókon fog futni.

Általános MySQL- és MariaDB-javaslatok
In general, you should keep access to your MySQL or MariaDB database to a minimum. If it will only be used from the single machine it's running on, consider disabling networking support, or enabling local networking access only (via the loopback device, see below), so the server can only communicate with local clients over Unix domain sockets.

If it will be used over a network with a limited number of client machines, consider setting the IP firewall rules to accept access to TCP port 3306 (MySQL/MariaDB's port) only from those machines or only from your local subnet, and reject all accesses from the larger internet. This can help prevent accidentally opening access to your server due to some unknown flaw in the database server, a mistakenly set overly broad GRANT, or a leaked password.

If you create a new MySQL/MariaDB user for MediaWiki through MediaWiki's installer, somewhat liberal access is granted to it to ensure that it will work from a second server as well as a local one. You might consider manually narrowing this or establishing the user account yourself with custom permissions from just the places you need. The database user only needs to have SELECT, INSERT, UPDATE and DELETE permissions for the database.

In particular, the FILE privilege is a common cause of security issues. You should ensure that the MySQL/MariaDB user does not have this privilege or any of the "server administration" privileges.

Note that the  table in MediaWiki's database contains hashed user passwords and may contain user e-mail addresses, and should generally be considered private data.

Karbantartószkriptek
For the maintenance scripts, you might want to create a DB-admin-user with more rights. For this, set the following variables with the database credentials of that account:



See Manual:Maintenance scripts#Configuration for details on the needed MySQL/MariaDB rights.

A MediaWiki frissítése
During upgrade, more MySQL/MariaDB rights might be needed.

A MySQL-ről és a MariaDB-ről bővebben

 * mysql command-line options.
 * Setting  in your my.ini (under section  ) will cause MySQL/MariaDB to only listen on the loopback interface. This is the default in the EasyPHP install for Windows. (If you are using MySQL/MariaDB on a Unix machine, the setting may be   instead in the my.cnf file.)
 * GRANT and REVOKE syntax

Ha az adatbázis kiszivárgott
If the database has leaked to the public, in LocalSettings.php:


 * 1) Change  if that leaked too
 * 2) Change some letters in
 * 3) Reset the user_token column in your user table so that it can't be used to impersonate your users

Ha a LocalSettings.php kiszivárgott
If LocalSettings.php has leaked to the public, reprotect it and:


 * 1) Change
 * 2) Replace  with a different random string of letters and numbers
 * 3) Make a different  (optional)
 * 4) Reset the user_token column in your user table so that it can't be used to impersonate any users

Adatbázis-jelszavak
See for some precautions you may wish to take to reduce the risk of MySQL/MariaDB passwords being presented to the web.

Alternatív fájlelrendezés
MediaWiki is designed to run in-place after being extracted from the distribution archive. This approach is convenient, but can result in reduced security or unnecessarily duplicated files.

You avoid duplicates in a mass installation or to keep sensitive files out of the web root for safety by manually relocating or consolidating various files.

Moving the main includes and skin files may require carefully picking and choosing and altering the  set in your. Experiment with this as desired.

If working to improve security, keep in mind that  uses the current directory as a base. This means that only setting your  may not help to improve the security of your installation.

Érzékeny adatok mozgatása
Consider moving the database password or other potentially sensitive data from  to another file located outside of the web document root, and including that file from   (through  ). This can help to ensure that your database password will not be compromised if a web server configuration error disables PHP execution and reveals the file's source text.

Similarly, editing  with some text editors will leave a backup file in the same directory with an altered file extension, causing the copy to be served as plain text if someone requests, for example,. If you use such an editor, be sure to disable backup generation or move sensitive data outside the web root.

A MediaWiki debug logfile as it is used for debugging also contains sensitive data. Make sure to always disallow access for non authorized persons and the public as explained, delete remains of such logfiles when they are not needed, and comment or clear the logfile lines in your.

A DocumentRoot /dev/null-ra állítása
A more secure option for the Apache Web Server is to set the  to an empty or non-existent directory, and then use   directives in the Apache configuration to expose only the scripts and directories that need to be web-accessible.

Betöltőszkriptek
A PHP-only solution that will work with any web server is to write a series of scripts that explicitly  to a specific directory and then require one or more source files. For example:

Felhasználói biztonság
Anyone able to edit the user-interface system messages in the MediaWiki: namespace can introduce arbitrary HTML and JavaScript code into page output. This includes wiki users who have the editinterface permission, as well as anyone with direct write access to the text table in the database.

HTML is disabled on many system messages, particularly those displayed at the login screen, so the risk of password-snarfing JavaScript should be minimal. Malicious code could still attempt to exploit browser vulnerabilities (install spyware, etc), though, so, you should make sure that only trusted people can modify system messages.

Feltöltési biztonság

 * Lásd még:

A fő kérdés: Hogyan akadályozhatjuk meg kártékony állományok feltöltését?

A fájlfeltöltés a MediaWiki opcionális eleme, és alapértelmezésben le van tiltva; ha engedélyezed, szükséges a webszerver által írható tárolómappa létrehozása.

Ennek számos biztonsági következménye van:
 * A feltöltési könyvtár bárki által-, vagy csak a webszerver felhasználója által írható is lehet. Többfelhasználós rendszereken ez lehetőséget ad kártékony állományok elhelyezésére (lásd a vonatkozó információkat fentebb). Ha lehetséges, a mappa csak a webszerver által legyen írható.
 * Míg a PHP-konfiguráció korlátozza a feltölthető méretet, a MediaWikiben nincs ilyen kontroll; egy kártékony célú vagy túlbuzgó felhasználó így egy a teljes partíciót megtelítheti.
 * A generált bélyegképek és a felülírás esetére tárolt feltöltött fájlok az images/thumb és az images/tmp könyvtárakban lehetnek, és ennek a MediaWiki felületén nincs látható nyoma. Tartsd szemmel ezek méretét is.

A szoftver alapértelmezésben próbálja a kártékony fájlokat visszaszorítani:


 * Alapértelmezésben a .png, .gif, .jpg és .jpeg kiterjesztések találhatóak meg a fehérlistén.
 * Számos futtatható fájl és szkript eleve feketelistázva van még akkor is, ha a felhasználók felülírhatják a fehérlistát.
 * Több ismert képtípus kiterjesztésének ellenőrzése is a PHP funkciójával történik.
 * A feltöltött fájloknál ellenőrzésre kerül, hogy előidézik-e az Internet Explorerben és a Safariban jelen lévő típusfelismerési hibát, minek következtében HTML-szövegként jelennek meg.

Elővigyázatosságból érdemes a PHP-szkriptek (és más, általad használt szkripttípus) szerveroldali futását letiltanod a feltöltési könyvtárban (alapértelmezésben ).

Például ha a MediaWikit a /Library/MediaWiki/web könyvtárba telepítetted, akkor ez az Apache .conf fájljában a következőképp valósítható meg:

Ha nincs elérésed az Apache konfigurációs fájljaihoz, de használhatsz .htaccess állományokat a beállítások felülírásához bizonyos könyvtárakban, akkor a feltöltési mappában helyezd el a következő tartalmú .htaccess állományt:

A te konfigurációd eltérhet, az használata megnehezítheti a feltöltések kezelését.

Megoldás Nginx esetén: http://serverfault.com/a/585559/162909

A legmagasabb fokú biztonsághoz a feltöltött állományokat külön domainen tárold. For full security it is best to have uploads served from an entirely separate domain, not a subdomain, but even a subdomain will provide additional security. This is especially important if you allow uploading SVG files since that file format is so similar to HTML. MediaWiki checks SVG uploads for security, but it is best to have multiple layers of defense. See for configuring a different domain to serve media files.

Külső programok

 * A  futtatható a szerkesztési ütközések eredményének összevonásához.
 * Ha az ImageMagick bélyegkép- vagy SVG-támogatása engedélyezett, a feltöltött fájlokon futtatható a.
 * A Math kiterjesztés engedélyezése esetén meghívja a -t, amely ugyanezt teszi a ,   és   funkciókkal (utóbbi a  -t hívja meg).

Lásd még

 * Általánosságban
 * meta:Category:MediaWiki authentication
 * Tervezés/Szükségletek begyűjtése
 * Felhasználói azonosítás
 * Authentication
 * AuthPlugin – leírja a felhasználók identitását meghatározó plug-in felépítését
 * – a plug-in felépítése által használt konfigurációs változó
 * – elérhető hitelesítési kiterjesztések
 * – MediaWiki-felhasználók jelszavának visszaállítása
 * A felhasználói tevékenység figyelése
 * Jogosultságok megadása IP- vagy identitás alapján
 * Access control
 * – az alapértelmezett MediaWiki-jogosultsági architektúra konfigurációjának leírása
 * – tippek és útmutatók
 * – IP/felhasználó alapú korlátozások a képekkel kapcsolatban
 * – a jogosultság-kezelésben segítő kiterjesztések
 * Konfigurációs változók:, ,
 * Fokozott biztonságú MediaWiki-verziók/mintakonfigurációk
 * Biztonsági figyelmeztetések
 * – hibajelentések módja, értesítések kérése
 * Template:XSS alert
 * ModSecurity
 * Technikai részletek
 * database schema: User groups table, User table, Revision table, Recentchanges table
 * hooks: UserLoginForm, UserLoginComplete, UserLogout, UserLogoutComplete, UserEffectiveGroups, UserGetImplicitGroups, UserGetRights
 * code:
 * – jogosultságfüggő speciális lapok létrehozása.
 * Nyílt Webes Applikációk Biztonsági Projektje (OWASP)
 * Webapplikációk biztonsága – Szabályok (WAS)
 *  – fejlesztőknek
 * – hibajelentések módja, értesítések kérése
 * Template:XSS alert
 * ModSecurity
 * Technikai részletek
 * database schema: User groups table, User table, Revision table, Recentchanges table
 * hooks: UserLoginForm, UserLoginComplete, UserLogout, UserLogoutComplete, UserEffectiveGroups, UserGetImplicitGroups, UserGetRights
 * code:
 * – jogosultságfüggő speciális lapok létrehozása.
 * Nyílt Webes Applikációk Biztonsági Projektje (OWASP)
 * Webapplikációk biztonsága – Szabályok (WAS)
 *  – fejlesztőknek
 * Webapplikációk biztonsága – Szabályok (WAS)
 *  – fejlesztőknek