Apache Web Server Hardening and Security Guide

Publicat: 2015-02-14

Un ghid practic pentru a securiza și a consolida Apache HTTP Server.

Serverul Web este o parte esențială a aplicațiilor bazate pe web. Apache Web Server este adesea plasat la marginea rețelei, de aceea devine unul dintre cele mai vulnerabile servicii la atac.

Având configurația implicită, furnizează multe informații sensibile care pot ajuta hackerul să se pregătească pentru un atac asupra aplicațiilor. Majoritatea atacurilor aplicațiilor web sunt prin atacuri XSS, Info Leakage, Session Management și SQL Injection, care se datorează codului de programare slab și eșecului de a igieniza infrastructura aplicațiilor web.

O cercetare interesantă realizată de Positive Technologies arată că 52% din aplicația scanată avea vulnerabilități mari.

raport de vulnerabilitate

În acest articol, voi vorbi despre unele dintre cele mai bune practici pentru a securiza serverul Apache HTTP pe platforma Linux.

Următoarele sunt testate pe versiunea Apache 2.4.x.

  • Aceasta presupune că ați instalat Apache pe platforma UNIX. Dacă nu, puteți parcurge ghidul de instalare.
  • Voi apela directorul de instalare Apache /opt/apache ca $Web_Server pe parcursul acestui ghid.
  • Vă recomandăm să faceți o copie de rezervă a fișierului de configurare existent înainte de orice modificare.

Public

Acesta este conceput pentru Administrator Middleware, Suport pentru aplicații, Analist de sistem sau pentru oricine lucrează sau dornic să învețe regulile de Hardening & Security.

Cunoașterea corectă a comenzii Apache Web Server și UNIX este obligatorie.

Note

Aveți nevoie de un instrument pentru a examina antetele HTTP pentru o parte din verificarea implementării. Există două moduri de a face acest lucru.

  1. Utilizați instrumentele de dezvoltator încorporate în browser pentru a inspecta anteturile HTTP. De obicei, se află în fila Rețea
  2. Utilizați instrumentul online de verificare a antetului răspunsului HTTP

Eliminați bannerul versiunii serverului

Aș spune că acesta este unul dintre primele lucruri de luat în considerare, deoarece nu doriți să expuneți ce versiune de server web utilizați. Expunerea versiunii înseamnă că îl ajutați pe hacker să accelereze procesul de recunoaștere.

Configurația implicită va expune versiunea Apache și tipul de sistem de operare, așa cum se arată mai jos.

apache-server-banner

  • Accesați folderul $Web_Server/conf
  • Modificați httpd.conf utilizând editorul vi
  • Adăugați următoarea directivă și salvați httpd.conf
 ServerTokens Prod ServerSignature Off
  • Reporniți apache

ServerSignature va elimina informațiile despre versiune de pe pagina generată de Apache.

ServerTokens va schimba antetul numai în producție, adică Apache

După cum puteți vedea mai jos, informațiile despre versiune și sistem de operare au dispărut.

apache-server-banner-mascat

Dezactivați listarea în browserul directorului

Dezactivați listarea directoarelor într-un browser, astfel încât vizitatorul să nu vadă toate fișierele și folderele pe care le aveți în rădăcină sau subdirector.

Să testăm cum arată în setările implicite.

  • Accesați directorul $Web_Server/htdocs
  • Creați un folder și câteva fișiere în interiorul acestuia
 # mkdir test # touch hi # touch hello

Acum, să încercăm să accesăm Apache prin http://localhost/test

apache-directory-listing

După cum puteți vedea, dezvăluie toate fișierele/folderele pe care le aveți și sunt sigur că nu doriți să expuneți asta.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi
  • Căutați Director și modificați directiva Opțiuni la Niciunul sau –Indexuri
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(sau)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • Reporniți Apache

Notă : dacă aveți mai multe directive Directory în mediul dvs., ar trebui să luați în considerare să faceți același lucru pentru toate.

Acum, să încercăm să accesăm Apache prin http://localhost/test

listare-directoare-dezactivate

După cum puteți vedea, afișează o eroare interzisă în loc să afișeze lista de foldere de testare.

Etag

Permite atacatorilor de la distanță să obțină informații sensibile, cum ar fi numărul inodului, granița MIME cu mai multe părți și procesul copil prin antetul Etag.

Pentru a preveni această vulnerabilitate, să o implementăm ca mai jos. Acest lucru este necesar pentru a remedia conformitatea PCI.

  • Accesați directorul $Web_Server/conf
  • Adăugați următoarea directivă și salvați httpd.conf
 FileETag None
  • Reporniți apache

Rulați Apache dintr-un cont fără privilegii

O instalare implicită rulează ca nimeni sau demon. Utilizarea unui utilizator separat non-privilegiat pentru Apache este bună.

Ideea aici este de a proteja alte servicii care rulează în cazul oricărei gauri de securitate.

  • Creați un utilizator și un grup numit apache
 # groupadd apache # useradd –G apache apache
  • Schimbați proprietarul directorului de instalare apache cu un utilizator nou creat fără privilegii
 # chown –R apache:apache /opt/apache
  • Accesați $Web_Server/conf
  • Modificați httpd.conf folosind vi
  • Căutați Directiva utilizator și grup și modificați-l ca cont apache neprivilegiat
 User apache Group apache
  • Salvați httpd.conf
  • Reporniți Apache

grep pentru rularea procesului http și asigurați-vă că rulează cu utilizatorul Apache

 # ps –ef |grep http

Ar trebui să vedeți că un proces rulează cu root. Asta pentru că Apache ascultă pe portul 80 și trebuie pornit cu root.

Protejați permisiunea pentru directorul binar și de configurare

În mod implicit, permisiunea pentru binar și configurare este 755, ceea ce înseamnă că orice utilizator de pe un server poate vizualiza configurația. Puteți interzice unui alt utilizator să intre în folderul conf și bin.

  • Accesați directorul $Web_Server
  • Schimbați permisiunea folderului bin și conf
 # chmod –R 750 bin conf

Protecția setărilor sistemului

Într-o instalare implicită, utilizatorii pot suprascrie configurația Apache folosind .htaccess. Dacă doriți să împiedicați utilizatorii să modifice setările serverului dvs. Apache, puteți adăuga AllowOverride la None , așa cum se arată mai jos.

Acest lucru trebuie făcut la nivel de rădăcină.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi
  • Căutați Director la nivel rădăcină
 <Directory /> Options -Indexes AllowOverride None </Directory>
  • Salvați httpd.conf
  • Reporniți Apache

Metode de solicitare HTTP

Protocolul HTTP 1.1 acceptă multe metode de solicitare care pot să nu fie necesare și unele dintre ele prezintă un risc potențial.

De obicei, este posibil să aveți nevoie de metode de solicitare GET, HEAD, POST într-o aplicație web, care poate fi configurată în directiva respectivă Directory.

Configurația implicită acceptă metoda OPȚIUNI, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT în protocolul HTTP 1.1.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi
  • Căutați Director și adăugați următoarele
 <LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • Reporniți Apache

Dezactivați urmărirea solicitării HTTP

În mod implicit, metoda Trace este activată pe serverul web Apache.

Activarea acestei opțiuni poate permite atacul Cross Site Tracing și poate oferi o opțiune unui hacker de a fura informații despre cookie-uri. Să vedem cum arată în configurația implicită.

  • Faceți un IP server web telnet cu port de ascultare
  • Faceți o solicitare TRACE așa cum se arată mai jos
 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

După cum ați putut vedea în cererea TRACE de mai sus, a răspuns la întrebarea mea. Să-l dezactivăm și să-l testăm.

  • Accesați directorul $Web_Server/conf
  • Adăugați următoarea directivă și salvați httpd.conf
 TraceEnable off
  • Reporniți apache

Efectuați un IP server web telnet cu port de ascultare și faceți o solicitare TRACE , așa cum se arată mai jos

 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

După cum ați putut vedea în cererea TRACE de mai sus, mi-a blocat solicitarea cu metoda HTTP 405 nepermisă.

Acum, acest server web nu permite solicitarea TRACE și nu ajută la blocarea atacului Cross Site Tracing.

Setați cookie-ul cu HttpOnly și Secure flag

Puteți atenua majoritatea atacurilor comune Cross Site Scripting folosind HttpOnly și Secure flag într-un cookie. Fără a avea HttpOnly și Secure, este posibil să furi sau să manipulezi sesiunea de aplicații web și cookie-urile și este periculos.

  • Asigurați-vă că mod_headers.so este activat în httpd.conf
  • Accesați directorul $Web_Server/conf
  • Adăugați următoarea directivă și salvați httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • Reporniți apache

Clickjacking Attack

Clickjacking este o vulnerabilitate bine-cunoscută a aplicațiilor web.

  • Asigurați-vă că mod_headers.so este activat în httpd.conf
  • Accesați directorul $Web_Server/conf
  • Adăugați următoarea directivă și salvați httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • Reporniți apache

apache-x-frame-options

X-Frame-Options acceptă și alte două opțiuni pe care le-am explicat aici.

Include partea serverului

Server Side Include (SSI) are riscul de a crește sarcina pe server. Dacă ați partajat mediul și aplicațiile web cu trafic intens, ar trebui să luați în considerare dezactivarea SSI prin adăugarea directivei Includes in Options.

Atacul SSI permite exploatarea unei aplicații web prin injectarea de scripturi în pagini HTML sau prin executarea de coduri de la distanță.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi
  • Căutați Director și adăugați directiva Includes în Opțiuni
 <Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • Reporniți Apache

Notă: dacă aveți mai multe directive Directory în mediul dvs., ar trebui să luați în considerare să faceți același lucru pentru toate.

Protecție X-XSS

Protecția Cross Site Scripting (XSS) poate fi ocolită în multe browsere. Puteți aplica această protecție pentru o aplicație web dacă a fost dezactivată de utilizator. Acesta este folosit de majoritatea companiilor web gigant precum Facebook, Twitter, Google etc.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi și adăugați următoarea directivă Header
 Header set X-XSS-Protection "1; mode=block"
  • Reporniți Apache

După cum puteți vedea, XSS-Protection este injectat în antetul răspunsului.

apache-xss

Dezactivați protocolul HTTP 1.0

Când vorbim despre securitate, ar trebui să protejăm cât de mult putem. Deci, de ce folosim versiunea HTTP mai veche a protocolului, să le dezactivăm și pe acestea?

HTTP 1.0 are o deficiență de securitate legată de deturnarea sesiunii. Putem dezactiva acest lucru folosind modulul mod_rewrite.

  • Asigurați-vă că încărcați modulul mod_rewrite în fișierul httpd.conf
  • Activați directiva RewriteEngine după cum urmează și adăugați condiția Rewrite pentru a permite numai HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

Configurarea valorii timeout

În mod implicit, valoarea de expirare a Apache este de 300 de secunde, care poate fi o victimă a atacului Slow Loris și a DoS. Pentru a atenua acest lucru, puteți reduce valoarea timeout-ului la poate 60 de secunde.

  • Accesați directorul $Web_Server/conf
  • Deschideți httpd.conf folosind vi
  • Adăugați următoarele în httpd.conf
 Timeout 60

SSL

A avea SSL este un nivel suplimentar de securitate pe care îl adăugați în aplicația web. Cu toate acestea, configurația SSL implicită duce la anumite vulnerabilități și ar trebui să luați în considerare modificarea acestor configurații.

Cheie SSL

Încălcarea cheii SSL este grea, dar nu imposibilă. Este doar o chestiune de putere de calcul și timp.

După cum probabil știți, folosind un PC din era 2009 care se sparge timp de aproximativ 73 de zile, puteți face ingineria inversă a unei chei de 512 biți.

Deci, cu cât lungimea cheii este mai mare, cu atât devine mai complicat să spargeți cheia SSL. Majoritatea companiilor web gigant folosesc cheia de 2048 de biți, ca mai jos, așa că noi de ce nu?

  • Outlook.com
  • Microsoft.com
  • Live.com
  • Skype.com
  • Apple.com
  • Yahoo.com
  • Bing.com
  • Hotmail.com
  • Twitter.com

Puteți utiliza OpenSSL pentru a genera CSR cu 2048 de biți, ca mai jos.

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

Acesta va genera un CSR pe care va trebui să-l trimiteți unei autorități de certificare pentru a-l semna. Odată ce primiți fișierul certificat semnat, le puteți adăuga în fișierul httpd-ssl.conf

 SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • Reporniți serverul web Apache și încercați să accesați adresa URL cu https

Cifrare SSL

SSL Cipher este un algoritm de criptare, care este folosit ca o cheie între două computere prin Internet. Criptarea datelor este procesul de conversie a textului simplu în coduri secrete cifrate.

Se bazează pe configurația serverului dvs. web SSL Cipher, criptarea datelor va avea loc. Prin urmare, este important să configurați SSL Cipher, care este mai puternic și nu vulnerabil.

  • Accesați folderul $Web_Server/conf/extra
  • Modificați directiva SSLCipherSuite în httpd-ssl.conf ca mai jos pentru a accepta numai algoritmi de criptare mai mari
 SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • Salvați fișierul de configurare și reporniți serverul Apache

Notă: dacă aveți multe cifruri slabe în raportul dvs. de audit SSL, le puteți respinge rapid adăugând! la inceput.

Dezactivați SSL v2 și v3

SSL v2 și v3 au multe defecte de securitate și, dacă lucrați pentru testarea de penetrare sau conformitatea PCI, atunci este de așteptat să închideți găsirea de securitate pentru a dezactiva SSL v2/v3.

Orice comunicare SSL v2/v3 poate fi vulnerabilă la un atac Man-in-The-Middle care ar putea permite manipularea sau dezvăluirea datelor.

Să implementăm serverul web apache pentru a accepta numai cel mai recent TLS și a respinge cererea de conexiune SSL v2/v3.

  • Accesați folderul $Web_Server/conf/extra
  • Modificați directiva SSLProtocol în httpd-ssl.conf ca mai jos pentru a accepta numai TLS 1.2+
 SSLProtocol –ALL +TLSv1.2

Odată ce ați terminat cu configurarea SSL, este o idee bună să testați aplicația dvs. web cu instrumentul de certificat SSL/TLS online pentru a găsi orice eroare de configurare.

Mod Securitate

Mod Security este un firewall pentru aplicații web open-source, pe care îl puteți utiliza cu Apache.

Vine ca un modul pe care trebuie să îl compilați și să îl instalați. Dacă nu vă puteți permite un firewall comercial pentru aplicații web, aceasta ar fi o alegere excelentă.

Pentru a oferi protecție generică a aplicațiilor web, Regulile de bază utilizează următoarele tehnici:

  • Protecție HTTP – detectarea încălcărilor protocolului HTTP și a unei politici de utilizare definite la nivel local
  • Căutări în timp real pe lista neagră – utilizează reputația IP a terților
  • Detectare malware bazată pe web – identifică conținutul web rău intenționat prin verificarea API-ului Google Safe Browsing.
  • Protecții HTTP de refuzare a serviciului – apărare împotriva inundațiilor HTTP și a atacurilor HTTP lente DoS.
  • Protecție împotriva atacurilor web comune – detectarea atacurilor comune de securitate a aplicațiilor web
  • Detectarea automatizării – Detectarea roboților, crawlerelor, scanerelor și a unei alte activități de suprafață rău intenționate
  • Integrare cu Scanarea AV pentru încărcări de fișiere – identifică fișierele rău intenționate încărcate prin intermediul aplicației web.
  • Urmărirea datelor sensibile – Urmărește utilizarea cardului de credit și blochează scurgerile.
  • Protecție împotriva troienilor – Detectarea accesului la caii troieni.
  • Identificarea defectelor aplicației – alerte privind configurațiile greșite ale aplicației.
  • Detectarea și ascunderea erorilor – Mascarea mesajelor de eroare trimise de server.

Descărcare și instalare

Următoarele cerințe preliminare trebuie să fie instalate pe serverul pe care doriți să utilizați Mod Security cu Apache. Dacă oricare dintre acestea nu există, compilarea Mod Security va eșua. Puteți utiliza instalarea yum pe Linux sau Centos pentru a instala aceste pachete.

  • apache 2.x sau o versiune ulterioară
  • pachet libpcre
  • pachet libxml2
  • pachet liblua
  • pachet libcurl
  • pachetul libapr și libapr-util
  • modulul mod_unique_id inclus cu serverul web Apache

Acum, să descarcăm cea mai recentă versiune stabilă a Mod Security 2.7.5 de aici

  • Transferați fișierul descărcat în /opt/apache
  • Extrageți modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • Accesați folderul extras modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • Rulați scriptul de configurare, inclusiv calea apxs către Apache existent
 # ./configure –with-apxs=/opt/apache/bin/apxs
  • Compilați și instalați cu make script
 # make # make install
  • Odată ce instalarea este finalizată, veți vedea mod_security2.so în folderul module sub /opt/apache

Acum se încheie, ați instalat modulul Mod Security pe serverul web Apache existent.

Configurare

Pentru a utiliza funcția de securitate Mod cu Apache, trebuie să încărcăm modulul de securitate mod în httpd.conf. Modulul mod_unique_id este o condiție prealabilă pentru Mod Security.

Acest modul oferă o variabilă de mediu cu un identificator unic pentru fiecare cerere, care este urmărită și utilizată de Mod Security.

  • Adăugați următoarea linie pentru a încărca modulul pentru Mod Security în httpd.conf și salvați fișierul de configurare
 LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • Reporniți serverul web apache

Mod Security este acum instalat!

Următorul lucru pe care trebuie să-l faceți este să instalați regula de bază Mod Security pentru a profita din plin de caracteristica acesteia.

Cele mai recente reguli de bază pot fi descărcate de la un link, care este gratuit. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Copiați fișierul zip al regulilor de bază descărcate în folderul /opt/apache/conf
  • Dezarhivați fișierul cu regulile de bază
  • Poate doriți să redenumiți folderul în ceva scurt și ușor de reținut. În acest exemplu, voi redenumi în crs.
  • Accesați folderul crs și redenumiți modsecurity_crs10_setup.conf.example în modsecurity_crs10_setup.conf

Acum, să activăm aceste reguli pentru ca acesta să funcționeze cu serverul web Apache.

  • Adăugați următoarele în httpd.conf
 <IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

În configurația de mai sus, încărcăm fișierul de configurare principal Mod Security modsecurity_crs_10_setup.conf și regulile de bază base_rules/*.conf furnizate de Mod Security Core Rules pentru a proteja aplicațiile web.

  • Reporniți serverul web apache

Ați configurat cu succes Mod Security cu Apache!

Bine făcut. Acum, serverul web Apache este protejat de firewall-ul aplicației web Mod Security.

Noțiuni de bază

Să începem cu unele dintre configurațiile critice din Mod Security pentru a consolida și a securiza aplicațiile web.

În această secțiune, vom face toate modificările configurației în /opt/apache/conf/crs/modsecurity_crs_10_setup.conf.

Vom face referire la /opt/apache/conf/crs/modsecurity_crs_10_setup.conf ca setup.conf în această secțiune pentru un scop de exemplu.

Este important să înțelegeți care sunt regulile OWASP oferite gratuit. Există două tipuri de reguli oferite de OWASP.

Reguli de bază – aceste reguli sunt puternic testate și probabil că raportul de alarmă falsă este mai mic.

Reguli experimentale – aceste reguli au un scop experimental și este posibil să aveți o alarmă falsă ridicată. Este important să configurați, să testați și să implementați în UAT înainte de a le utiliza într-un mediu de producție.

Reguli opționale – aceste reguli opționale pot să nu fie potrivite pentru întregul mediu. În funcție de cerințele dvs., le puteți utiliza.

Dacă sunteți în căutarea protecției CSRF, urmărirea utilizatorilor, deturnarea sesiunii etc., atunci puteți lua în considerare utilizarea regulilor opționale. Avem regulile de bază, opționale și experimentale după extragerea fișierului zip crs descărcat de pe pagina de descărcare OWASP.

Acest fișier de configurare a regulilor este disponibil în folderul crs/base_rules, crs/optional_rules și crs/experimental_rules. Să ne familiarizăm cu unele dintre regulile de bază.

  • modsecurity_crs_20_protocol_violations.conf: Această regulă protejează împotriva vulnerabilităților protocolului, cum ar fi împărțirea răspunsurilor, contrabanda cererilor, folosind protocolul nepermis (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: Aceasta este pentru a proteja de o solicitare, care lipsește cu Host, Accept, User-Agent în antet.
  • modsecurity_crs_23_request_limits.conf:Această regulă are dependență de aplicație specifică, cum ar fi dimensiunea cererii, dimensiunea încărcării, lungimea unui parametru etc.
  • modsecurity_crs_30_http_policy.conf:Acesta este pentru a configura și proteja metodele permise sau interzise precum CONNECT, TRACE, PUT, DELETE etc.
  • modsecurity_crs_35_bad_robots.conf:Detectați roboți rău intenționați
  • modsecurity_crs_40_generic_attacks.conf:Acest lucru este pentru a proteja împotriva injectării comenzii sistemului de operare, includerii fișierelor de la distanță etc.
  • modsecurity_crs_41_sql_injection_attacks.conf:Această regulă pentru a proteja SQL și cererea oarbă de injectare SQL.
  • modsecurity_crs_41_xss_attacks.conf:Protecție împotriva solicitării de scriptare între site-uri.
  • modsecurity_crs_42_tight_security.conf:Detecția și protecția traversării directorului.
  • modsecurity_crs_45_trojans.conf:Această regulă pentru a detecta ieșirea generică de gestionare a fișierelor, încărcarea paginii HTTP backdoor, semnătură cunoscută.
  • modsecurity_crs_47_common_exceptions.conf:Acest lucru este folosit ca un mecanism de excepție pentru a elimina falsele pozitive comune care pot fi întâlnite suck ca conexiune internă inactivă Apache, pinger SSL etc.

Logare

Înregistrarea este unul dintre primele lucruri de configurat, astfel încât să puteți crea jurnale pentru ceea ce face Mod Security. Există două tipuri de logare disponibile; Jurnal de depanare și audit.

Jurnal de depanare: aceasta este pentru a duplica mesajele de eroare Apache, de avertizare și notificare din jurnalul de erori.

Jurnal de audit: acesta este pentru a scrie jurnalele de tranzacții care sunt marcate de regula Mod Security. Mod Security vă oferă flexibilitatea de a configura Audit, Debug sau ambele.

În mod implicit, configurația va scrie ambele jurnale. Cu toate acestea, puteți modifica în funcție de cerințele dvs. Jurnalul este controlat în directiva SecDefaultAction . Să ne uităm la configurația implicită de logare în setup.conf

 SecDefaultAction “phase:1,deny,log”

Pentru a înregistra Debug, jurnal de audit – utilizați „log” Pentru a înregistra numai jurnalul de audit – utilizați „nolog,auditlog” Pentru a înregistra doar jurnalul de depanare – utilizați „log,noauditlog” Puteți specifica locația jurnalului de audit care urmează să fie stocată, care este controlată de SecAuditLog directivă.

Să scriem jurnalul de audit în /opt/apache/logs/modsec_audit.log adăugând după cum se arată mai jos.

  • Adăugați directiva SecAuditLog în setup.conf și reporniți Apache Web Server
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • După repornire, ar trebui să vedeți generat modsec_audit.log

Activați Rule Engine

În mod implicit, Rule Engine este Off, ceea ce înseamnă că dacă nu activați Rule Engine, nu utilizați toate avantajele Mod Security.

Activarea sau dezactivarea Rule Engine este controlată de directiva SecRuleEngine .

  • Adăugați directiva SecRuleEngine în setup.conf și reporniți Apache Web Server
 SecRuleEngine On

Există trei valori pentru SecRuleEngine:

  • Activat – pentru a activa Rule Engine
  • Off – pentru a dezactiva Rule Engine
  • DetectionOnly – activați Rule Engine, dar nu execută niciodată acțiuni precum blocarea, refuzul, eliminarea, permiterea, proxy-ul sau redirecționarea

Odată ce Rule Engine este pornit – Mod Security este gata să fie protejat cu unele dintre tipurile obișnuite de atac.

Protecție împotriva tipului de atac comun

Acum serverul web este gata să se protejeze cu tipuri obișnuite de atac, cum ar fi XSS, SQL Injection, Protocol Violation etc., deoarece am instalat Core Rule și am activat Rule Engine. Să testăm câteva dintre ele.

Atacul XSS

  • Deschideți Firefox și accesați aplicația și puneți eticheta <script> la sfârșit sau URL
  • Monitorizați modsec_audit.log în folderul apache/logs

Veți observa solicitarea blocurilor Mod Security, deoarece conține eticheta <script>, care este rădăcina atacului XSS.

Atacul de traversare a directorului: - Atacurile de traversare a directoarelor pot crea multe daune profitând de aceste vulnerabilități și accesând fișierele legate de sistem. Ex – /etc/passwd, .htaccess etc.

  • Deschideți Firefox și accesați aplicația dvs. cu traversarea directoarelor
  • Monitorizați modsec_audit.log în folderul apache/logs
 http://localhost/?../.../boot
  • Veți observa solicitarea blocurilor Mod Security, deoarece conține traversarea directoarelor.

Schimbați bannerul serverului

Mai devreme în acest ghid, ați învățat cum să eliminați Apache și tipul de sistem de operare, versiunea de ajutor a directivei ServerTokens.

Să mergem cu un pas înainte, ce zici de păstrarea numelui serverului, oricum dorești? Este posibil cu directiva SecServerSignature în Mod Security. Vezi ca e interesant.

Notă: pentru a utiliza Mod Security pentru a manipula Server Banner dintr-un antet, trebuie să setați ServerTokesn la Full în httpd.conf al serverului web Apache.

  • Adăugați directiva SecServerSignature cu numele serverului dorit în setup.conf și reporniți Apache Web Server
 SecServerSignature YourServerName

Ex:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

Configurație generală

Să verificăm câteva dintre configurațiile generale ca cele mai bune practici.

Configurați Ascultați

Când aveți mai multe interfețe și IP-uri pe un singur server, este recomandat să aveți directiva Listen configurată cu IP absolut și numărul de port.

Când părăsiți configurația Apache pentru a Asculta pe toate IP-urile cu un număr de port, se poate crea o problemă în redirecționarea cererii HTTP către un alt server web. Acest lucru este destul de comun în mediul partajat.

  • Configurați directiva Listen în httpd.conf cu IP absolută și portul, ca exemplu de mai jos
 Listen 10.10.10.1:80

Acces în jurnal

Este esențial să configurați corect jurnalul de acces pe serverul dvs. web. Unul dintre parametrii importanți de captat în jurnal ar fi timpul necesar pentru a servi cererea, ID-ul sesiunii.

În mod implicit, Apache nu este configurat să capteze aceste date. Trebuie să le configurați manual, după cum urmează.

  • Pentru a captura timpul necesar pentru a servi cererea și ID-ul SESIUNII într-un jurnal de acces
  • Adăugați %T și %sessionID în httpd.conf sub directiva LogFormat
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

Puteți consulta http://httpd.apache.org/docs/2.2/mod/mod_log_config.html pentru o listă completă a parametrilor acceptați în directiva LogFormat în Apache Web Server.

Dezactivați Încărcarea modulelor nedorite

Dacă ați compilat și instalat cu toate modulele, atunci există șanse mari să aveți multe module încărcate în Apache, care ar putea să nu fie necesare.

Cea mai bună practică este să configurați Apache cu modulele necesare în aplicațiile dvs. web. Următoarele module au probleme de securitate și ați putea fi interesat de dezactivarea în httpd.conf a Apache Web Server.

WebDAV (Web-based Distributed Authoring and Versioning) Acest modul permite clienților la distanță să manipuleze fișierele de pe server și să fie supuși diferitelor atacuri de refuz de serviciu. Pentru a dezactiva următoarele comentarii în httpd.conf

 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

Modulul Info Modulul mod_info poate scurge informații sensibile folosind .htaccess odată ce acest modul este încărcat. Pentru a dezactiva următoarele comentarii în httpd.conf

 #LoadModule info_module modules/mod_info.so

Referință: acest lucru nu ar fi posibil fără îndrumări de la următorul link:

  • http://httpd.apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

Deci, acestea au fost unele dintre cele mai bune practici pe care le puteți utiliza pentru a vă securiza serverul web Apache.

Verificați acest link dacă doriți să implementați o pagină de eroare personalizată în Apache.

Dacă sunteți nou la Apache HTTP, atunci aș recomanda să urmați cursul de administrare Apache HTTP.