13 Suġġerimenti dwar is-Sigurtà u l-Ebusija ta' Apache Web Server


Aħna lkoll familjari ħafna mas-server tal-web Apache, huwa server tal-web popolari ħafna biex jospita l-fajls tal-web tiegħek jew il-websajt tiegħek fuq il-web. Hawn huma xi links li jistgħu jgħinuk tikkonfigura s-server tal-web Apache fuq il-kaxxa Linux tiegħek.

  1. Installa Apache Web Server
  2. Imwaqqaf il-Websajt Tiegħek fil-Kaxxa tal-Linux Tiegħek

Hawnhekk f'dan it-tutorja, ser inkopri xi suġġerimenti ewlenin biex niżgura s-server tal-web tiegħek. Qabel ma tapplika dawn il-bidliet fis-server tal-web tiegħek, għandu jkollok xi punti bażiċi tas-server Apache.

  1. Direttorju ta' l-għerq tad-dokument: /var/www/html jew /var/www
  2. Fajl tal-Konfigurazzjoni Prinċipali: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) u /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. Port HTTP default: 80 TCP
  4. Port HTTPS default: 443 TCP
  5. Ittestja l-issettjar u s-sintassi tal-fajl tal-Konfigurazzjoni tiegħek: httpd -t
  6. Aċċess fajls tar-Reġistri tal-Web Server: /var/log/httpd/access_log
  7. Fajls ta' log ta' Żbalji ta' Web Server: /var/log/httpd/error_log

1. Kif taħbi l-Verżjoni Apache u l-Identità tal-OS minn Żbalji

Meta tinstalla Apache b'sors jew kwalunkwe installaturi ta' pakketti oħra bħal yum, turi l-verżjoni tas-server tal-web Apache tiegħek installat fuq is-server tiegħek bl-isem tas-sistema operattiva tas-server tiegħek fi Żbalji. Juri wkoll l-informazzjoni dwar il-moduli Apache installati fis-server tiegħek.

Fl-istampa ta 'hawn fuq, tista' tara li Apache qed juri l-verżjoni tiegħu bl-OS installat fis-server tiegħek. Dan jista 'jkun theddida kbira għas-sigurtà għas-server tal-web tiegħek kif ukoll għall-kaxxa Linux tiegħek ukoll. Biex jiġi evitat li Apache ma jurix din l-informazzjoni lid-dinja, għandna bżonn nagħmlu xi bidliet fil-fajl tal-konfigurazzjoni prinċipali ta 'Apache.

Iftaħ il-fajl tal-konfigurazzjoni bl-editur tal-vim u fittex ServerSignature, li huwa awtomatikament Fuq. Għandna bżonn li Off dawn il-firma tas-server u t-tieni linja ServerTokens Prod tgħid Apache biex jirritorna biss Apache bħala prodott fl-intestatura tar-rispons tas-server fuq it-talba ta 'kull paġna, Huwa jrażżnu l-OS, l-informazzjoni tal-verżjoni maġġuri u minuri.

# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache2/apache2.conf (Debian/Ubuntu)
ServerSignature Off
ServerTokens Prod
# service httpd restart (RHEL/CentOS/Fedora)
# service apache2 restart (Debian/Ubuntu)

2. Iddiżattiva l-Elenkar tad-Direttorju

B'default Apache jelenka l-kontenut kollu tad-direttorju tal-għerq tad-Dokument fin-nuqqas ta 'fajl indiċi. Jekk jogħġbok ara l-immaġni hawn taħt.

Nistgħu itfi l-elenkar tad-direttorju billi nużaw id-direttiva tal-Għażliet fil-fajl tal-konfigurazzjoni għal direttorju speċifiku. Għal dan irridu nagħmlu dħul fil-fajl httpd.conf jew apache2.conf.

<Directory /var/www/html>
    Options -Indexes
</Directory>

3. Żomm aġġorna Apache Regolarment

Il-komunità tal-iżviluppaturi Apache qed taħdem kontinwament fuq kwistjonijiet ta 'sigurtà u tirrilaxxa l-verżjoni aġġornata tagħha b'għażliet ta' sigurtà ġodda. Għalhekk huwa dejjem rakkomandat li tuża l-aħħar verżjoni ta 'Apache bħala server tal-web tiegħek.

Biex tiċċekkja l-verżjoni Apache: Tista 'tiċċekkja l-verżjoni attwali tiegħek bil-kmand httpd -v.

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

Tista 'taġġorna l-verżjoni tiegħek bil-kmand li ġej.

# yum update httpd
# apt-get install apache2

Huwa rakkomandat ukoll li żżomm il-kernel u l-OS tiegħek aġġornati għall-aħħar rilaxxi stabbli jekk m'intix qed tħaddem xi applikazzjoni speċifika li taħdem biss fuq OS jew Kernel speċifiċi.

4. Iddiżattiva Moduli bla bżonn

Dejjem huwa tajjeb li tnaqqas iċ-ċansijiet li tkun vittma ta 'kwalunkwe attakk fuq il-web. Għalhekk huwa rakkomandat li tiddiżattiva dawk il-moduli kollha li mhumiex qed jintużaw bħalissa. Tista' telenka l-moduli kollha kkumpilati tas-server tal-web, billi tuża l-kmand li ġej.

# grep LoadModule /etc/httpd/conf/httpd.conf

# have to place corresponding `LoadModule' lines at this location so the
# LoadModule foo_module modules/mod_foo.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
....

Hawn fuq hemm il-lista ta 'moduli li huma attivati awtomatikament iżda ħafna drabi mhux meħtieġa: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Biex tiddiżattiva l-modulu partikolari, tista' daħħal \# fil-bidu ta' dik il-linja u terġa' tibda s-servizz.

5. Mexxi Apache bħala Utent u Grupp separati

B'installazzjoni default Apache imexxi l-proċess tiegħu bl-utent ħadd jew daemon. Għal raġunijiet ta' sigurtà huwa rakkomandat li tħaddem Apache fil-kont mhux privileġġjat tiegħu stess. Per eżempju: http-web.

# groupadd http-web
# useradd -d /var/www/ -g http-web -s /bin/nologin http-web

Issa trid tgħid lil Apache biex jaħdem ma' dan l-utent ġdid u biex nagħmlu dan, irridu nagħmlu dħul f' /etc/httpd/conf/httpd.conf u nibdew mill-ġdid is-servizz.

Iftaħ /etc/httpd/conf/httpd.conf bl-editur vim u fittex il-kelma prinċipali Utent u Grupp u hemm ikollok bżonn tispeċifika l-isem tal-utent u l-isem tal-grupp li tuża.

User http-web
Group http-web

6. Uża Ħalli u Tiċħad biex tirrestrinġi l-aċċess għad-Diretorji

Nistgħu nirrestrinġu l-aċċess għad-direttorji b'għażliet Ħalli u Ċaħda fil-fajl httpd.conf. Hawnhekk f'dan l-eżempju, se nkunu qed niżguraw id-direttorju tal-għeruq, għal dan billi nissettjaw dan li ġej fil-fajl httpd.conf.

<Directory />
   Options None
   Order deny,allow
   Deny from all
</Directory>

  1. Għażliet “Xejn” – Din l-għażla ma tippermettix lill-utenti jattivaw xi karatteristiċi fakultattivi.
  2. Ordni ċaħda, tippermetti – Din hija l-ordni li fiha se jiġu pproċessati d-direttivi Iċħad u Ħalli. Hawnhekk se tiċħad l-ewwel u jħalli wara.
  3. Iċħad minn kulħadd – Dan se jiċħad it-talba minn kulħadd għad-direttorju tal-għeruq, ħadd ma jkun jista' jaċċessa d-direttorju tal-għeruq.

7. Uża Moduli mod_security u mod_evasive biex tassigura Apache

Dawn iż-żewġ moduli mod_security u mod_evasive huma moduli popolari ħafna ta 'Apache f'termini ta' sigurtà.

Fejn mod_security jaħdem bħala firewall għall-applikazzjonijiet tal-web tagħna u jippermettilna nissorveljaw it-traffiku fuq bażi ta' ħin reali. Jgħinna wkoll biex nipproteġu l-websajts jew is-server tal-web tagħna minn attakki ta’ forza bruta. Tista 'sempliċement tinstalla mod_security fuq is-server tiegħek bl-għajnuna tal-installaturi tal-pakketti default tiegħek.

$ sudo apt-get install libapache2-modsecurity
$ sudo a2enmod mod-security
$ sudo /etc/init.d/apache2 force-reload
# yum install mod_security
# /etc/init.d/httpd restart

mod_evasive jaħdem b'mod effiċjenti ħafna, tieħu talba waħda biex tipproċessaha u tipproċessaha tajjeb ħafna. Jipprevjeni attakki DDOS milli jagħmlu ħsara kbira. Din il-karatteristika ta 'mod_evasive tippermettilha timmaniġġja l-forza bruta HTTP u l-attakk Dos jew DDos. Dan il-modulu jiskopri attakki bi tliet metodi.

  1. Jekk daqstant talbiet jaslu fl-istess paġna fi ftit drabi kull sekonda.
  2. Jekk xi tifel jipproċessa jipprova jagħmel aktar minn 50 talba konkorrenti.
  3. Jekk xi IP għadu qed jipprova jagħmel talbiet ġodda meta jkun temporanjament fil-lista sewda.

mod_evasive jista 'jiġi installat direttament mis-sors. Hawnhekk, għandna gwida ta 'Installazzjoni u setup ta' dawn il-moduli li tgħinek twaqqaf dawn il-moduli Apache fil-kaxxa Linux tiegħek.

  1. Ipproteġi Apache billi tuża Mod_Security u Mod_evasive

8. Iddiżattiva s-segwitu ta' Apache ta' Links Simboliċi

B'mod awtomatiku Apache isegwi symlinks, nistgħu nitfi din il-karatteristika bid-direttiva FollowSymLinks with Options. U biex nagħmlu dan irridu nagħmlu d-dħul li ġej fil-fajl tal-konfigurazzjoni prinċipali.

Options -FollowSymLinks

U, jekk xi utent jew websajt partikolari jeħtieġ li FollowSymLinks jawtorizzaw, nistgħu sempliċement niktbu regola fil-fajl .htaccess minn dik il-websajt.

# Enable symbolic links
Options +FollowSymLinks

Nota: Biex tippermetti regoli ta' kitba mill-ġdid ġewwa l-fajl .htaccess AllowOverride All għandu jkun preżenti fil-konfigurazzjoni ewlenija globalment.

9. Itfi Server Side Includes u CGI Execution

Nistgħu itfi server side includes (mod_include) u eżekuzzjoni CGI jekk mhux meħtieġ u biex nagħmlu hekk għandna bżonn li timmodifika l-fajl tal-konfigurazzjoni prinċipali.

Options -Includes
Options -ExecCGI

Nistgħu nagħmlu dan għal direttorju partikolari wkoll bit-tikketta tad-Direttorju. Hawnhekk F'dan l-eżempju, qed nitfi l-eżekuzzjonijiet tal-fajls Jinkludi u Cgi għad-direttorju /var/www/html/web1.

<Directory "/var/www/html/web1">
Options -Includes -ExecCGI
</Directory>

Hawn huma xi valuri oħra li jistgħu jinxtegħlu jew jitfi bid-direttiva tal-Għażliet.

  1. Għażliet Kollha – Biex tippermetti l-għażliet kollha f'daqqa. Dan huwa l-valur default, Jekk ma tridx tispeċifika xi valuri b'mod espliċitu fil-fajl Apache conf jew .htaccess.
  2. Għażliet IncludesNOEXEC – Din l-għażla tippermetti l-inklużjoni tan-naħa tas-server mingħajr il-permess ta' eżekuzzjoni għal kmand jew fajls cgi.
  3. Għażliet MultiViews – Jippermetti kontenut innegozjat multiviews b'mod_negotiation module.
  4. Għażliet SymLinksIfOwnerMatch – Huwa simili għal FollowSymLinks. Iżda, dan isegwi biss meta s-sid ikun l-istess bejn il-link u d-direttorju oriġinali li miegħu huwa marbut.

10. Limitu tad-Daqs tat-Talba

B'mod awtomatiku Apache m'għandu l-ebda limitu fuq id-daqs totali tat-talba HTTP jiġifieri illimitat u meta tippermetti talbiet kbar fuq server tal-web huwa possibbli li inti tista 'tkun vittma ta' attakki ta 'Ċaħda ta' servizz. Nistgħu Nillimitaw id-daqs tat-talbiet ta 'direttiva Apache LimitRequestBody bit-tikketta tad-direttorju.

Tista' tissettja l-valur f'bytes minn 0 (illimitat) sa 2147483647 (2GB) li huma permessi f'korp tat-talba. Tista' tissettja dan il-limitu skont il-bżonnijiet tas-sit tiegħek, Ejja ngħidu li għandek sit fejn tippermetti uploads u trid tillimita d-daqs tal-upload għal direttorju partikolari.

Hawnhekk f'dan l-eżempju, user_uploads huwa direttorju li fih fajls imtella' mill-utenti. Qed inpoġġu limitu ta '500K għal dan.

<Directory "/var/www/myweb1/user_uploads">
   LimitRequestBody 512000
</Directory>

11. Ipproteġi l-attakki DDOS u l-Ebusija

Ukoll, huwa veru li ma tistax tipproteġi kompletament is-sit web tiegħek minn attakki DDos. Hawn xi direttivi li jistgħu jgħinuk biex ikollok kontroll fuqha.

  1. TimeOut : Din id-direttiva tippermettilek li tissettja l-ammont ta' ħin li s-server se jistenna li ċerti avvenimenti jitlestew qabel ma jfalli. Il-valur default tiegħu huwa 300 sek. Tajjeb li dan il-valur jinżamm baxx fuq dawk is-siti li huma suġġetti għal attakki DDOS. Dan il-valur jiddependi totalment fuq it-tip ta' talba li qed tirċievi fuq il-websajt tiegħek. Nota: Jista' joħloq problemi bl-iskripts CGI ġejjin.
  2. MaxClients : Din id-direttiva tippermettilek li tissettja l-limitu fuq konnessjonijiet li se jiġu moqdija fl-istess ħin. Kull konnessjoni ġdida se tkun fil-kju wara dan il-limitu. Huwa disponibbli bi Prefork u Worker kemm MPM. Il-valur default tiegħu huwa 256.
  3. KeepAliveTimeout : Huwa l-ammont ta' ħin li s-server se jistenna għal talba sussegwenti qabel ma jagħlaq il-konnessjoni. Valur default huwa 5 sekondi.
  4. LimitRequestFields : Jgħinna biex nissettjaw limitu fuq in-numru ta' oqsma ta' header tat-talba HTTP li se jiġu aċċettati mill-klijenti. Il-valur default tiegħu huwa 100. Huwa rakkomandat li dan il-valur jitnaqqas jekk qed iseħħu attakki DDos bħala riżultat ta' tant headers ta' rikjesti http.
  5. LimitRequestFieldSize : Jgħinna nissettjaw limitu ta' daqs fuq l-header tat-Talba HTTP.

12. Ippermetti Apache Logging

Apache jippermettilek li tilloggja indipendentement mill-illoggjar tal-OS tiegħek. Huwa għaqli li tippermetti l-illoggjar ta 'Apache, għaliex jipprovdi aktar informazzjoni, bħall-kmandi mdaħħla mill-utenti li jkunu interazzjoni mas-server tal-Web tiegħek.

Biex tagħmel dan għandek bżonn tinkludi l-mod_log_config modulu. Hemm tliet direttivi ewlenin relatati mal-qtugħ disponibbli b'Apache.

  1. TransferLog: Il-ħolqien ta' fajl ta' log.
  2. LogFormat : Tispeċifika format personalizzat.
  3. CustomLog : Il-ħolqien u l-ifformattjar ta' log file.

Tista 'wkoll tużahom għal websajt partikolari li tkun qed tagħmel Virtual hosting u għal dak għandek bżonn tispeċifikaha fit-taqsima tal-host virtwali. Pereżempju, hawnhekk hija l-konfigurazzjoni tal-host virtwali tal-websajt tiegħi bil-logging attivat.

<VirtualHost *:80>
DocumentRoot /var/www/html/example.com/
ServerName www.example.com
DirectoryIndex index.htm index.html index.php
ServerAlias example.com
ErrorDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log
CustomLog /var/log/httpd/example.com_access_log combined
</VirtualHost>

13. L-iżgurar ta' Apache b'Ċertifikati SSL

L-aħħar, iżda mhux l-inqas iċ-ċertifikati SSL, tista 'tiżgura l-komunikazzjoni kollha tiegħek b'mod kriptat fuq l-Internet b'ċertifikat SSL. Ejja ngħidu li għandek websajt li fiha n-nies jidħlu billi jagħtu prova tal-kredenzjali tal-Login tagħhom jew għandek websajt tal-Kummerċ elettroniku fejn in-nies jipprovdu d-dettalji bankarji tagħhom jew id-dettalji tal-karta ta’ Debitu/Kreditu biex jixtru prodotti, b’mod awtomatiku s-server tal-web tiegħek jibgħat dawn id-dettalji b’mod sempliċi – test format iżda meta tuża ċertifikati SSL għall-websajts tiegħek, Apache jibgħat din l-informazzjoni kollha f'test encrypted.

Tista 'tixtri ċertifikati SSl minn tant fornituri SSL differenti bħal namecheap.com. Jekk qed tmexxi negozju tal-web żgħir ħafna u m'intix lest li tixtri ċertifikat SSL xorta tista' tassenja ċertifikat iffirmat minnha nnifisha lill-websajt tiegħek. Apache juża l-mod_ssl modulu biex jappoġġja ċertifikat SSL.

# openssl genrsa -des3 -out example.com.key 1024
# openssl req -new -key example.com.key -out exmaple.csr
# openssl x509 -req -days 365 -in example.com.com.csr -signkey example.com.com.key -out example.com.com.crt

Ladarba ċ-ċertifikat tiegħek ikun inħoloq u ffirmat. Issa trid iżżid dan fil-konfigurazzjoni Apache. Iftaħ il-fajl tal-konfigurazzjoni prinċipali bl-editur vim u żid il-linji li ġejjin u erġa ibda s-servizz.

<VirtualHost 172.16.25.125:443>
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/example.com.crt
        SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
        SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt
        ServerAdmin [email 
        ServerName example.com
        DocumentRoot /var/www/html/example/
        ErrorLog /var/log/httpd/example.com-error_log
        CustomLog /var/log/httpd/example.com-access_log common
</VirtualHost>

Iftaħ il-brawżer tiegħek, ittajpja https://example.com, u tkun tista' tara ċ-ċertifikat il-ġdid iffirmat minnha stess.

Dawn huma ftit suġġerimenti dwar is-sigurtà li tista 'tuża biex tiżgura l-installazzjoni tas-server tal-web Apache tiegħek. Għal aktar suġġerimenti u ideat utli dwar is-sigurtà, ara d-dokumentazzjoni uffiċjali onlajn ta’ Apache HTTP Server.