13 Apache veebiserveri turvalisuse ja karastamise näpunäiteid


Apache veebiserver on meile kõigile väga tuttav, see on väga populaarne veebiserver teie veebifailide või veebisaidi hostimiseks veebis. Siin on mõned lingid, mis aitavad teil Linuxi kastis Apache veebiserverit konfigureerida.

  1. Installige Apache veebiserver
  2. Seadistage oma veebisait oma Linuxi kasti

Siin selles õpetuses käsitlen mõned peamised näpunäited teie veebiserveri turvalisuse tagamiseks. Enne nende muudatuste rakendamist veebiserveris peaks teil olema Apache serveri põhitõed.

  1. Dokumendi juurkataloog:/var/www/html või/var/www
  2. Põhikonfiguratsioonifail: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) ja /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. HTTP vaikeport: 80 TCP
  4. HTTPS-i vaikeport: 443 TCP
  5. Kontrollige oma konfiguratsioonifaili sätteid ja süntaksit: httpd -t
  6. Veebiserveri logifailidele juurdepääs:/var/log/httpd/access_log
  7. Veebiserveri tõrke logifailid:/var/log/httpd/error_log

1. Kuidas varjata Apache versiooni ja operatsioonisüsteemi identiteeti vigade eest

Kui installite Apache'i lähtekoodiga või mõne muu paketi installijaga, näiteks yum, kuvab see teie serverisse installitud Apache veebiserveri versiooni koos serveri operatsioonisüsteemi nimega Vead. Samuti kuvatakse teave teie serverisse installitud Apache moodulite kohta.

Ülaloleval pildil näete, et Apache näitab oma versiooni koos teie serverisse installitud operatsioonisüsteemiga. See võib olla suur turvalisuse oht nii veebiserverile kui ka teie Linuxi kastile. Et vältida seda, et Apache seda teavet kogu maailmas ei kuvaks, peame Apache peamises konfiguratsioonifailis mõned muudatused tegema.

Avage konfiguratsioonifail vim-redaktoriga ja otsige vaikimisi sisse „ServerSignature“. Me peame selle serveri allkirja välja lülitama ja teine rida „ServerTokens Prod” käsib Apache'il igal lehe päringul serveri vastuse päises tagastada ainult Apache tootena. See pärsib operatsioonisüsteemi, peamise ja väiksema versiooni teabe.

# 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. Keela kataloogide loendamine

Vaikimisi loetleb Apache kogu dokumendi juurkataloogi sisu indeksfaili puudumisel. Palun vaadake allolevat pilti.

Saame kataloogide loendi välja lülitada, kasutades konkreetse kataloogi konfiguratsioonifailis käsku Options. Selleks peame sisestama faili httpd.conf või apache2.conf.

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

3. Jätkake Apache'i regulaarset värskendamist

Apache'i arendajate kogukond töötab pidevalt turvaküsimuste kallal ja annab välja värskendatud versiooni koos uute turvavõimalustega. Seega on alati soovitatav veebiserverina kasutada Apache uusimat versiooni.

Apache'i versiooni kontrollimiseks: oma praegust versiooni saate kontrollida käsuga httpd -v.

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

Oma versiooni saate värskendada järgmise käsuga.

# yum update httpd
# apt-get install apache2

Samuti on soovitatav hoida oma kernel ja operatsioonisüsteem uusimate stabiilsete versioonidena, kui te ei käivita ühtegi konkreetset rakendust, mis töötab ainult konkreetses operatsioonisüsteemis või kernelis.

4. Keelake mittevajalikud moodulid

Alati on hea, kui vähendab võimalust langeda mis tahes veebirünnaku ohvriks. Seega on soovitatav keelata kõik need moodulid, mida praegu ei kasutata. Järgmise käsu abil saate loetleda kõik veebiserveri kompileeritud moodulid.

# 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
....

Eespool on loend moodulitest, mis on vaikimisi lubatud, kuid pole sageli vajalikud: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Konkreetse mooduli keelamiseks võite selle rea algusesse lisada # ja teenuse taaskäivitada.

5. Käivitage Apache eraldi kasutaja ja rühmana

Vaikimisi installimisel töötab Apache oma protsessis kasutajaga keegi või deemon. Turvalisuse huvides on soovitatav Apache käivitada oma privilegeeritud kontol. Näiteks: http-veeb.

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

Nüüd peate käskima Apache'il selle uue kasutajaga töötama ja selleks peame sisestama kanali /etc/httpd/conf/httpd.conf ja taaskäivitama teenuse.

Avage vimiredaktoriga /etc/httpd/conf/httpd.conf ja otsige märksõnad "Kasutaja" ja "Rühm" ning seal peate määrama kasutajanime ja grupinime.

User http-web
Group http-web

6. Kasutage kataloogide juurdepääsu piiramiseks valikut Luba ja keelu

Saame piirata juurdepääsu kataloogidele, kasutades valikuid „Luba” ja „Keela” failis httpd.conf. Selles näites turvame juurkataloogi, seadistades failis httpd.conf järgmise.

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

  1. Valikud „Puudub” - see valik ei luba kasutajatel lubada valikulisi funktsioone.
  2. Tellimuse keelamine, lubamine - see on direktiivide „Keeldu” ja „Luba” töötlemise järjekord. Siin "keelab" kõigepealt ja lubab järgmisena.
  3. Keela kõigilt - see keelab kõigi juurkataloogi taotlemise, keegi ei pääse juurkataloogile juurde.

7. Kasutage Apache'i turvamiseks mod_security ja mod_evasive mooduleid

Need kaks moodulit “mod_security” ja “mod_evasive” on turvalisuse osas Apache väga populaarsed moodulid.

Kus mod_security töötab meie veebirakenduste tulemüürina ja võimaldab meil jälgida liiklust reaalajas. Samuti aitab see kaitsta oma veebisaite või veebiserverit toore jõu rünnakute eest. Mod_security saate oma vaikepaketi installijate abil lihtsalt oma serverisse installida.

$ 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 töötab väga tõhusalt, selle töötlemiseks ja töötlemiseks on vaja ühte taotlust. See takistab DDOS-i rünnakutel nii palju kahju tekitamast. See mod_evasive funktsioon võimaldab tal toime tulla HTTP toore jõu ja Dos või DDos rünnakuga. See moodul tuvastab rünnakud kolme meetodiga.

  1. Kui nii palju taotlusi jõuab samale lehele paar korda sekundis.
  2. Kui mõni laps üritab esitada rohkem kui 50 samaaegset taotlust.
  3. Kui mõni IP ikka proovib uusi taotlusi esitada, kui see ajutiselt mustas nimekirjas on.

mod_evasive'i saab installida otse allikast. Siin on meil nende moodulite installimis- ja häälestusjuhend, mis aitab teil neid Apache-mooduleid oma Linuxi kasti seadistada.

  1. Kaitske Apache'i, kasutades Mod_Security ja Mod_evasive

8. Keelake Apache'i sümboolsete linkide jälgimine

Vaikimisi järgib Apache sümbolilinke, saame selle funktsiooni välja lülitada direktiiviga FollowSymLinks with Options. Ja selleks peamiseks konfiguratsioonifaili tuleb teha järgmine kanne.

Options -FollowSymLinks

Ja kui mõni konkreetne kasutaja või veebisait vajab FollowSymLinksi lubamist, võime selle reegli lihtsalt selle veebisaidi faili .htaccess kirjutada.

# Enable symbolic links
Options +FollowSymLinks

Märkus. Reeglite ümberkirjutamise lubamiseks failis .htaccess peab põhikonfiguratsioonis globaalselt olema AllowOverride All.

9. Lülitage välja serveripoolsed kaasamised ja CGI-täitmine

Kui vaja pole, võime serveripoolse (mod_include) ja CGI-käsu välja lülitada ning selleks peame muutma peamist konfiguratsioonifaili.

Options -Includes
Options -ExecCGI

Saame seda teha ka konkreetse kataloogi jaoks, kasutades kataloogi märgendit. Siin lülitame selles näites välja kataloogi “/ var/www/html/web1” failide täitmise kaasamise ja Cgi.

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

Siin on mõned muud väärtused, mille saab suvandite Valikud abil sisse või välja lülitada.

  1. Valikud Kõik - kõigi suvandite korraga lubamiseks. See on vaikeväärtus. Kui te ei soovi Apache conf-failis või .htaccess-is mingeid väärtusi sõnaselgelt määratleda.
  2. Suvandid sisaldab NOEXEC - see suvand lubab serveri poolseid kaasamisi ilma käsu või cgi-failide täitmisloata.
  3. Valikud MultiViews - lubab mooduliga mod_negotiation sisuga kokku lepitud multivaateid.
  4. Valikud SymLinksIfOwnerMatch - see sarnaneb järgmisega FollowSymLinks. Kuid see juhtub alles siis, kui lingi ja algse kataloogi, millega see on lingitud, omanik on sama.

10. Piirataotluse suurus

Vaikimisi pole Apache'il HTTP-päringu kogumahtu, st piiramatu, ja kui lubate veebiserveris suuri taotlusi, on võimalik, et võite olla teenuse keelamise rünnakute ohver. Saame piirata kataloogimärgendiga Apache direktiivi „LimitRequestBody” taotluste suurust.

Võite määrata väärtuse baitides vahemikus 0 (piiramatu) kuni 2147483647 (2 GB), mis on lubatud päringu kehas. Selle piirangu saate määrata vastavalt saidi vajadustele. Oletame, et teil on sait, kuhu lubate üleslaadimisi, ja soovite piirata konkreetse kataloogi üleslaadimise suurust.

Selles näites on user_uploads kataloog, mis sisaldab kasutajate üles laaditud faile. Selle jaoks paneme 500K piiri.

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

11. Kaitske DDOS-i rünnakuid ja karastamist

Noh, on tõsi, et te ei saa oma veebisaiti täielikult kaitsta DDosi rünnakute eest. Siin on mõned direktiivid, mis aitavad teil seda kontrollida.

  1. TimeOut: see direktiiv võimaldab teil määrata, kui kaua server ootab teatud sündmuste lõpuleviimist, enne kui see ebaõnnestub. Selle vaikeväärtus on 300 sekundit. Hea on hoida seda väärtust madalal saitidel, mis on DDOS-i rünnakute all. See väärtus sõltub täielikult teie veebisaidil saadetavate päringute tüübist. Märkus. See võib tekitada probleeme CGI-skriptidega.
  2. MaxClients: see direktiiv võimaldab teil seada piirangute üheaegselt pakutavatele ühendustele. Iga uus ühendus pannakse pärast seda limiiti järjekorda. See on saadaval nii MPK-ga Prefork kui Worker. Selle vaikeväärtus on 256.
  3. KeepAliveTimeout: selle aja pikkus, mille server enne ühenduse sulgemist järgmist taotlust ootab. Vaikeväärtus on 5 sekundit.
  4. LimitRequestFields: see aitab meil seada klientidele vastuvõetavate HTTP-päringute päiseväljade arvule piirang. Selle vaikeväärtus on 100. Seda väärtust on soovitatav alandada, kui DDos-rünnakud ilmnevad nii paljude http-päringute päiste tagajärjel.
  5. LimitRequestFieldSize: see aitab meil määrata HTTP-päringu päises suuruse piirangu.

12. Luba Apache'i logimine

Apache võimaldab logida OS-i logimisest sõltumatult. Mõistlik on lubada Apache'i logimine, sest see annab rohkem teavet, näiteks teie veebiserveriga suhelnud kasutajate sisestatud käsud.

Selleks peate kaasama mooduli mod_log_config. Apache'iga on saadaval kolm peamist metsaraiega seotud käskkirja.

  1. TransferLog: logifaili loomine.
  2. LogFormat: kohandatud vormingu määramine.
  3. CustomLog: logifaili loomine ja vormindamine.

Võite neid kasutada ka konkreetse veebisaidi jaoks, mida teete virtuaalserveriga, ja selleks peate selle täpsustama jaotises virtuaalne host. Näiteks siin on minu veebisaidi virtuaalse hosti konfiguratsioon, kus logimine on lubatud.

<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. Apache'i turvamine SSL-sertifikaatidega

Viimaseks, kuid mitte vähem tähtsaks SSL-sertifikaadid, saate kogu oma side Interneti kaudu SSL-sertifikaadiga krüptitud viisil turvata. Oletame, et teil on veebisait, kuhu inimesed sisse logivad, tõendades oma sisselogimisandmeid, või teil on e-kaubanduse veebisait, kus inimesed esitavad toodete ostmiseks oma pangaandmed või deebet-/krediitkaardiandmed, vaikimisi saadab teie veebiserver need üksikasjad lihtsa tekstina vormingus, kuid kui kasutate oma veebisaitidele SSL-sertifikaate, saadab Apache kogu selle teabe krüptitud tekstina.

Saate osta SSl-sertifikaate nii paljudelt erinevatelt SSL-pakkujatelt nagu namecheap.com. Kui teil on väga väike veebiäri ja te ei soovi osta SSL-i sertifikaati, saate siiski oma veebisaidile määrata iseallustatud sertifikaadi. Apache kasutab moodulit mod_ssl, et toetada SSL-sertifikaati.

# 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

Kui teie sertifikaat on loodud ja allkirjastatud. Nüüd peate selle lisama Apache'i konfiguratsioonis. Avage peamine konfiguratsioonifail vimiredaktoriga ja lisage järgmised read ning taaskäivitage teenus.

<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>

Avage oma brauser, tippige https://example.com ja näete uut enda allkirjastatud sertifikaati.

Need on mõned turvanõuanded, mida saate kasutada oma Apache veebiserveri installi kindlustamiseks. Kasulike turvalisuse nõuannete ja ideede saamiseks vaadake Apache HTTP Serveri ametlikku veebidokumentatsiooni.