Biztonság Szakszó

Server-fejléc kitettség

Szerző: · 7 perc olvasás · Frissítve:
Server-fejléc kitettség - Biztonság (szakszó) a tudástárban
Server-fejléc kitettség - Biztonság | eClick GEO-audit tudástár

A Server-fejléc kitettség az az állapot, amikor a webszerver a HTTP-válaszban elárulja a saját nevét és verziószámát, tipikusan a Server és az X-Powered-By fejlécben. Ilyenkor bárki, aki egy kérést küld az oldalra, megtudja, hogy Apache/2.4.29 fut rajta PHP/7.4.3 alatt.

Hogyan működik

Minden HTTP-válasz fejlécekkel kezdődik. A Server fejléc a webszerver szoftverét azonosítja, az X-Powered-By pedig a futtatókörnyezetet, leggyakrabban a PHP-t. Mindkettő alapértelmezetten be van kapcsolva a legtöbb telepítésnél.

A verziószám a kritikus rész. A puszta Server: nginx önmagában kevés információ. A Server: Apache/2.4.29 (Ubuntu) viszont már egy pontos célpont: ehhez a verzióhoz nyilvános CVE-lista tartozik, és percek alatt kiderül, mely sebezhetőségek érintik.

Miért érdekli ez a támadót

Egy automatizált szkennelés első lépése a felderítés. A bot végigmegy sok ezer domainen, elmenti a fejléceket, és kiszűri azokat, ahol a verzió egyezik egy ismert sebezhetőséggel. Nem kell gondolkodnia rajta, csak illesztenie egy listához.

Ez nem jelenti azt, hogy a fejléc elrejtése megvéd. A verziófrissítés a valódi védelem, a fejléc-elrejtés csak zaj a támadó felderítésében. De a zaj is számít: a tömeges, alacsony erőfeszítésű szkennelések nagy részét pont az ilyen szűrés vezérli.

Mit néz ebből a riport

A riport egy alacsony hatású megállapításként jelzi, ha a Server vagy az X-Powered-By fejléc verziószámot tartalmaz. A hatókör itt környezet és hoszting, nem kód: a szerverkonfigurációban javítod, nem a CMS-ben.

Röviden: a verziószám a fejlécben ingyen ad felderítési információt a támadónak, és semmit nem ad cserébe neked.

Miért fontos

Biztonsági szempont

A verziószám felderítési információ. Egy X-Powered-By: PHP/7.4.3 fejléc megmondja, hogy a futtatókörnyezet évek óta nem kap biztonsági javítást. Ez a bot számára azt jelenti: érdemes itt próbálkozni.

A tömeges szkennelés olcsó és folyamatos. A riportokban rendszeresen látjuk, hogy a feltört oldalak nagy részén nem célzott támadás volt, hanem egy automata talált rá egy ismert résre.

SEO és AI szempont

Közvetlen rangsorolási hatása nincs. A Google nem bünteti a Server fejlécet, a generatív keresők pedig nem is látják. A hatás közvetett: ha az oldalt feltörik, az indexbe spam-oldalak kerülnek, és a márkád hitelessége sérül.

Üzleti szempont

Ez a legolcsóbb biztonsági javítás, amit egy oldalon el lehet végezni. Nincs kockázata, nincs mellékhatása, nem befolyásol semmilyen funkciót. Ha egy hoszting-szolgáltató ezt sem állítja be, az jelzés a többi beállításának a színvonaláról is.

Kikre vonatkozik

Kikre vonatkozik

  • Minden nyilvános weboldalra, függetlenül a mérettől és a CMS-től.
  • Saját szerveren vagy VPS-en futó oldalakra, ahol te férsz hozzá a konfigurációhoz.
  • WordPress-oldalakra, ahol a PHP alapértelmezetten kiírja magát az X-Powered-By fejlécbe.
  • Webshopokra, ahol a fizetési folyamat miatt a biztonsági alapállapot komolyabb tét.

Kikre nem

  • Zárt SaaS-platformokra (Shopify, Unas, Shoprenter): ott a szolgáltató kezeli a szerverkonfigurációt, te nem tudod és nem is kell módosítanod.
  • Belső, nem publikus rendszerekre, ahol a felderítési kockázat lényegesen kisebb.
  • Staging-környezetekre, ha jelszóval védettek. Ha nincsenek védve, ott nagyobb baj is van a fejlécnél.

CDN mögött érdemes ellenőrizni, mit lát a külvilág. A CDN gyakran felülírja a Server fejlécet a saját nevére, ilyenkor az eredeti szerver már nem látszik.

Hogyan ellenőrzöd

Lépések

  1. Nyisd meg a böngésző devtools panelét (F12), a Network fülön.
  2. Töltsd újra az oldalt, és kattints az első, dokumentum típusú kérésre.
  3. A Response Headers blokkban keresd a Server és az X-Powered-By sorokat.
  4. Ha gyorsabban akarod: futtasd le terminálból a curl -sI https://pelda.hu parancsot.
  5. Nézd meg több oldaltípuson is: főoldal, egy aloldal, egy statikus fájl. Előfordul, hogy eltér.

Jó jel

  • Nincs X-Powered-By fejléc a válaszban.
  • A Server fejléc hiányzik, vagy csak a terméknevet adja: Server: nginx.
  • A válasz tartalmaz biztonsági fejléceket is, például Strict-Transport-Security-t.

Rossz jel

  • Server: Apache/2.4.29 (Ubuntu) - teljes verzió és disztribúció.
  • X-Powered-By: PHP/7.4.3 - elavult futtatókörnyezet, nyilvánosan.
  • X-Powered-By: Express vagy hasonló keretrendszer-azonosító.
  • Hibaoldalakon (404, 500) megjelenő szerver-aláírás a HTML törzsében.

A hibaoldalakat külön nézd meg. Az Apache alapértelmezett 404-es oldala a lábléceben kiírja a teljes verziót, még akkor is, ha a fejlécet már levetted.

Hogyan javítod

WordPress

A PHP X-Powered-By fejlécét PHP-szinten kell kikapcsolni:

  1. Nyisd meg a php.ini fájlt a szerveren.
  2. Állítsd be: expose_php = Off.
  3. Indítsd újra a PHP-FPM-et vagy a webszervert.

Ha nincs php.ini-hozzáférésed, a .htaccess-be is teheted: Header unset X-Powered-By. Ez csak akkor működik, ha a mod_headers modul aktív.

A WordPress emellett kiírja a saját verzióját egy <meta name="generator"> tagbe. Ezt a remove_action('wp_head', 'wp_generator'); sorral tudod eltávolítani a téma functions.php fájljából.

Shopify

Nincs teendőd és nincs is lehetőséged. A platform kezeli a szerverkonfigurációt, a fejlécek nem szerkeszthetők. Ez a megállapítás zárt platformon nem releváns.

Unas

Szintén szolgáltatói hatáskör. Az admin felületen nincs szerverfejléc-beállítás. Ha a riportban mégis megjelenik verziószám, jelezd a támogatásnak, de ne várj gyors változást.

Shoprenter

Ugyanaz a helyzet: a hosztingot a szolgáltató üzemelteti. A te felelősséged inkább az egyedi kód és a fejléc-beállítások azon része, amit a felület enged.

Egyedi fejlesztés

Apache esetén a fő konfigurációban (nem .htaccess-ben):

  1. ServerTokens Prod - csak a terméknév marad.
  2. ServerSignature Off - eltűnik az aláírás a hibaoldalakról.
  3. apachectl configtest, majd újraindítás.

nginx esetén a http blokkban:

  1. server_tokens off; - eltűnik a verziószám.
  2. Ha a terméknevet is el akarod tüntetni, arra a headers-more modul kell.
  3. nginx -t, majd nginx -s reload.

Node/Express esetén: app.disable('x-powered-by'); vagy használd a helmet csomagot.

A javítás után ellenőrizd curl -sI paranccsal, hogy tényleg eltűnt-e. A magyar KKV-oldalak többségén ez a beállítás alapból nincs megcsinálva, mert a sablonos hoszting-telepítések nem foglalkoznak vele.

Gyakori hibák

  • A fejléc elrejtését biztonságnak hiszik - a verzió elrejtése nem javítja ki a sebezhetőséget, csak nehezíti a megtalálását.
  • Csak a fejlécet veszik le, a verziót nem frissítik - a PHP 7.4 attól még lejárt támogatású, hogy nem írja ki magát.
  • A hibaoldalakat kihagyják - az Apache ServerSignature alapértelmezetten a 404-es oldal aljára írja a teljes verziót.
  • A .htaccess-re bíznak mindent - a ServerTokens direktíva .htaccess-ben nem működik, csak a fő konfigurációban.
  • A WordPress generator metát elfelejtik - a <meta name="generator" content="WordPress 6.2"> ugyanazt a verzióinformációt adja HTML-ben.
  • CDN mögött nem ellenőrzik újra - a proxy mögötti eredeti szerver fejléce néha átszivárog bizonyos válaszoknál.
  • A staging-környezetet kihagyják - ott gyakran régebbi szoftver fut, és nyilvánosan elérhető, ha nincs noindex és jelszó.

Technikai példa

Így néz ki egy kitett válasz. A curl -sI csak a fejléceket kéri le:

$ curl -sI https://pelda.hu
HTTP/2 200
server: Apache/2.4.29 (Ubuntu)
x-powered-by: PHP/7.4.3
content-type: text/html; charset=UTF-8

Két sor, két pontos célpont. A verzió alapján egy szkennelő azonnal tudja, hogy mely ismert hibák jöhetnek szóba.

Ugyanez a válasz megfelelő konfiguráció után, biztonsági fejlécekkel kiegészítve:

HTTP/2 200
server: nginx
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=31536000; includeSubDomains
x-content-type-options: nosniff
referrer-policy: strict-origin-when-cross-origin

Az X-Powered-By eltűnt, a Server nem ad verziót. A HSTS és az X-Content-Type-Options pedig valódi védelmet ad, nem csak elrejt valamit.

nginx konfigurációban a teljes beállítás így néz ki:

http {
    server_tokens off;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
}

Az always kapcsoló fontos: e nélkül a fejléc hibakódoknál (404, 500) nem kerül a válaszba.

Gyakori kérdések

Tényleg biztonsági kockázat ez, vagy csak elmélet?
Önmagában nem sebezhetőség, ezért kapja az alacsony hatást. A kockázat közvetett: felderítési információt ad az automatizált szkennelőknek, amelyek verzió alapján szűrik a célpontokat. A javítás olcsó, ezért nincs értelme kihagyni.
Ha elrejtem a verziót, biztonságban vagyok?
Nem. Ez csak annyit ér, hogy a támadónak egy lépéssel többet kell dolgoznia. A valódi védelem a naprakész szoftververzió, a rendszeres frissítés és a biztonsági fejlécek beállítása. A fejléc-elrejtés ezek kiegészítője, nem pótléka.
Rontja a SEO-t, ha kiírom a verziót?
Nem, közvetlen rangsorolási hatása nincs. A Google nem veszi figyelembe a Server fejlécet. A közvetett hatás viszont valós: egy feltört oldal indexeléssel és bizalommal kapcsolatos károkat szenved.
Shopify-on vagy Unason mit tudok tenni?
Gyakorlatilag semmit, és ez rendben van. Zárt platformon a szolgáltató felel a szerverkonfigurációért. Ha a riport mégis jelzi, tekintsd tájékoztatásnak, ne feladatnak.
Miért látok még mindig verziószámot a javítás után?
Három tipikus ok van. Böngésző- vagy CDN-cache adja vissza a régi választ, a konfiguráció nem a megfelelő blokkba került, vagy egy alkalmazásszintű keretrendszer írja ki a fejlécet. Ellenőrizd curl -sI paranccsal, cache-megkerüléssel.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „Server-fejléc kitettség”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása