Expunere informații server HTTP

1 octombrie 2009, 08:10, scris de Emil CHERICHEŞ
Din categoria: securitate 

Una din caracteristicile vizibile implicit pe HTTP este versiunea, sau măcar tipul de server folosit pentru a servi fișierele sau pentru a rula scripturile aplicației. Implicit orice distribuție de linux își afișează acolo numele. În felul acesta în funcție de versiunea serverul web se poate determina și ce versiune a distribuției linux avem instalată. În majoritatea cazurilor când versiunea respectivă de linux nu mai are suport tehnic din partea celui ce o menține, iar administratorul acelui server nu este atât de priceput cu actualizarea software-ului așa că această expunere a versiunilor de software poate însemna un risc de securitate. Se întâmplă de multe ori că deși distribuția este menținută, este în perioada în care se oferă suport pentru ea, administratorul să omită să instaleze actualizările. În concluzie, vă recomand să faceți manevra de mai jos.

Mai întâi un exemplu:

Date: Thu, 01 Oct 2009 05:37:25 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Wed, 22 Jul 2009 18:26:49 GMT
Etag: "9e012e-12a6-83ab8c40"
Accept-Ranges: bytes
Content-Length: 4774
Content-Type: text/html; charset=UTF-8

În cazul de față un posibil atacator afă că serverul web este un Apache 2.2.3 ce rulează pe distribuția CentOS. Ar putea verifica alte portițe de intrare în sistem știind anumite vulnerabilități specifice pentru CentOS 5.

Următorul exemplu este cel de pe serverul de găzduiește acest blog:

Date: Wed, 30 Sep 2009 21:24:46 GMT
Server: Apache/2.2.9 (Debian) DAV/2 SVN/1.5.1 PHP/5.2.6-1+lenny3 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.6-1+lenny3
Vary: Cookie,Accept-Encoding
Expires: Wed, 11 Jan 1984 05:00:00 GMT
X-Pingback: http://emil.cheriches.ro/xmlrpc.php
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
WP-Super-Cache: WP-Cache
Content-Encoding: gzip
Content-Length: 17228
Keep-Alive: timeout=15, max=91
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Vedem că este un Debian Lenny cu PHP 5.2.6 dar vedem și alte informații despe alte module instalate.

Dar cum facem să nu mai stăm cu versiunile de software la vedere? În apache, căutăm în fișierul de configurație ServerSignature și ServerTokens. În Debian 5.x aceste directive se află în /etc/apache2/conf.d/security și le modifcăm în felul următor:

ServerSignature Off
ServerTokens Prod

Repornim serviciul și observăm:

Date: Wed, 30 Sep 2009 21:24:02 GMT
Server: Apache
X-Powered-By: PHP/5.2.6-1+lenny3
Vary: Cookie,Accept-Encoding
Expires: Wed, 11 Jan 1984 05:00:00 GMT
X-Pingback: http://emil.cheriches.ro/xmlrpc.php
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
WP-Super-Cache: WP-Cache
Content-Encoding: gzip
Content-Length: 17228
Keep-Alive: timeout=15, max=85
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Server: Apache, dar mai avem un header: X-Powered-By: PHP/5.2.6-1+lenny3. Pentru a scoate acest header edităm în php.ini (în Debian 5.x este /etc/php5/apache2/php.ini) și punem:

expose_php = Off

Repornim încă odată serviciul și vedem că a dispărut și acest header.

Date: Wed, 30 Sep 2009 21:26:09 GMT
Server: Apache
Vary: Cookie,Accept-Encoding
Expires: Wed, 11 Jan 1984 05:00:00 GMT
X-Pingback: http://emil.cheriches.ro/xmlrpc.php
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
WP-Super-Cache: WP-Cache
Content-Encoding: gzip
Content-Length: 17228
Keep-Alive: timeout=15, max=93
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

Pentru a modifica string-ul Apache, sau pentru a-l scoate de tot va trebui să modificați codul sursă al serverul web și să-l recompilați. Nu este una din operațiunile recomandate.
Headerele le-am văzut folosind suplimentul de Firefox Domain Details, în acest domeniu găsiți chiar mai multe suplimente utile.

Mai vezi şi:
->Monitorizarea și repornirea automată a serviciilor pe un server Linux cu monit...

Comentarii

12 comentarii la aricolul: „Expunere informații server HTTP”

  1. Dexter
    1 octombrie 2009, 13:10
  2. :) eu folosesc lighttpd:) imi place mai mult dar din pacate nu are htaccess
    Dexter a scris pe blog ultima dată imi propun

  3. Agkelos
    2 octombrie 2009, 11:10
  4. Dragut articolul :)

    O mica adaugare as vrea sa fac. Sirul “Apache” se poate modifica cu directiva SecServerSignature din mod_security.
    Agkelos a scris pe blog ultima dată Partajare CPU in Xen

  5. George Jipa
    2 octombrie 2009, 13:10
  6. Stiam de micile trick-uri prezentate de tine, dar sunt foarte utile.
    @Dexter: si cu lighttpd ai posibilitatea sa rescrii url-urile (http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModRewrite)

  7. Radion Maria
    7 octombrie 2009, 21:10
  8. frumos articolul.. Ar mai trebui adaugate cateva chestii de teorie pentru incepatori zic eu..

    O distribuţie Linux este un sistem de operare construit din nucleul Linux şi o serie de pachete asortate, precum Sistemul de Ferestre X şi software din proiectul GNU.

    Sistemele de operare bazate pe Linux sunt disponibile în general sub formă de distribuţii (denumite mai rar şi arome). Unele dintre acestea sunt orientate spre utilizatorul casnic, altele către servere sau către utilizatorii cu calculatoare mai vechi.

    Pentru că nucleul şi pachetele software sunt în mare parte (dacă nu în întregime) software liber, distribuţiile Linux există într-o mare varietate de forme, de la desktopuri complete şi servere la sisteme de operare minimale ce rulează pe dispozitive embedded sau sunt capabile să pornească de pe o dischetă.

    În prezent există peste trei sute de distribuţii Linux care sunt dezvoltate activ. Distribuţiile pot intra în două categori:, cele susţinute de firme, precum Fedora (Red Hat), SUSE Linux (Novell), Ubuntu (Canonical Ltd.) şi Mandriva Linux şi distribuţii dezvoltate de comunităţi, precum Debian şi Gentoo.

  9. Ionescu Mihai
    29 octombrie 2009, 16:10
  10. Bun,bun. Data viitoare sa tratezi, daca poti, si problema securitatii, intrucat in Romania foarte putini detinatori de site-uri isi pun probleme de securitate.Pe sistemul “nu mi s-o intampla chiar mie” sau “ce-o sa-mi faca” tot nu se face nimic in sensul asta.

  11. beculetzu
    1 noiembrie 2009, 05:11
  12. Deja m-am debusolat, chiar “este” prea multa informatie. Intr-un fel e bine ca am hosting partajat, asta insemnand ca cineva (nu vreau sa-i fac reclama) se ocupa de securitate, de updatarea softului. etc.
    Eu sunt adeptul ca omul sa faca ce stie el mai bine, cine stie sa programeze – sa programeze, cine stie sa optimizeze – sa optimizeze s.a.m.d.

  13. Valkyrka
    16 noiembrie 2009, 21:11
  14. Poti vedea hedeare-le folosind comanda curl :

    $ curl -I yahoo.com
    HTTP/1.1 301 Moved Permanently
    Date: Mon, 16 Nov 2009 19:35:21 GMT
    Location: http://www.yahoo.com/
    Cache-Control: private
    Connection: close
    Content-Type: text/html; charset=utf-8

    :)

  15. mariuz
    21 noiembrie 2009, 15:11
  16. eu zic ca decat sa ascunzi headerul mai bine sa faci update la server

    oricum din cate am vazut daca ai o versiune nepatch-uita poti sa fii compromis chiar cu header-ul off

  17. Emil CHERICHEŞ
    21 noiembrie 2009, 17:11
  18. Numai că dacă ai headerul pornit poți fi atacat accidental, dacă nu te atacă doar cine e supărat pe tine.

  19. Nelu
    22 decembrie 2009, 06:12
  20. Recent am schimbat hosting-ul. Cat de important este un host pentru o pagina? Este de preferat un host mai “slab” pentru o pagina din RO decat un host apreciat ca mai “bun” din afara? Zi ceva despre astea.
    Nelu a scris pe blog ultima dată Piratii din Caraibe

  21. Emil CHERICHEŞ
    22 decembrie 2009, 09:12
  22. Slab e în general dacă pui un site mare pe un Pentium 3 și durează mai mult de 10 secunde doar generarea. În general ar trebui ca procesul de generare al u nui site pe un server să nu dureze mai mult de 2 secunde.
    Ce se întâmplă după e viteza de internet între server și client(cu cât distanța e mai mare cu atât poate fi mai lentă) și puterea de procesare a clientului(de asta ține durata de randare în browser).
    În concluzie, hosting slab e atunci când sunt mult prea multe site-uri(sau VPS-uri) pe un server sau serverul nu e tocmai un server.
    Faptul că e în .RO nu poate fin decât un lucru bun. În caz că nu știai România e pe locul 5 în lume ca infrastructură de internet.

  23. Nelu
    23 decembrie 2009, 11:12
  24. “serverul nu e tocmai un server” – cine iti poate spune asta, sau pe cine sa crezi, din multitudinea de oferte de hosting!
    Chestia asta, cu locul 5, chiar este interesanta si surprinzatoare; e ceva la care stam bine! Daca ai avut in vedere si calitatea serviciilor, cand ai spus asta!
    Nelu a scris pe blog ultima dată Autobuzul Simfonic





Te rog să comentezi doar dacă ai ceva de spus!
Comentariile de genul „Foarte tare, o să incerc și eu”
vor fi marcate ca SPAM iar mai apoi șterse.
Îmi rezerv dreptul de a șterge orice comentariu îl consider inadecvat.
Deasemena nu accept comentarii care la nume au cuvinte cheie!

Page optimized by WP Minify WordPress Plugin