13 Apache vefþjónsöryggis- og herðingarráð


Við þekkjum öll Apache vefþjóninn mjög vel, hann er mjög vinsæll vefþjónn til að hýsa vefskrárnar þínar eða vefsíðuna þína á vefnum. Hér eru nokkrir tenglar sem geta hjálpað þér að stilla Apache vefþjóninn á Linux kassanum þínum.

  1. Settu upp Apache vefþjón
  2. Settu upp vefsíðuna þína í Linux kassanum þínum

Hér í þessari kennslu mun ég fara yfir nokkur helstu ráð til að tryggja netþjóninn þinn. Áður en þú notar þessar breytingar á vefþjóninum þínum ættir þú að hafa nokkur grunnatriði Apache þjónsins.

  1. Rótarskrá skjala: /var/www/html eða /var/www
  2. Aðalstillingarskrá: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) og /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. Sjálfgefið HTTP tengi: 80 TCP
  4. Sjálfgefið HTTPS tengi: 443 TCP
  5. Prófaðu stillingar og setningafræði stillingarskrár: httpd -t
  6. Aðgangur að skrám vefþjónsins: /var/log/httpd/access_log
  7. Villuskrár á vefþjóni: /var/log/httpd/error_log

1. Hvernig á að fela Apache útgáfu og OS auðkenni fyrir villum

Þegar þú setur upp Apache með source eða öðrum pakkauppsetningum eins og yum, sýnir það útgáfuna af Apache vefþjóninum þínum sem er uppsettur á netþjóninum þínum með nafni stýrikerfisins á netþjóninum þínum í Villur. Það sýnir einnig upplýsingar um Apache einingar uppsettar á netþjóninum þínum.

Á myndinni hér að ofan geturðu séð að Apache sýnir útgáfu sína með stýrikerfinu uppsett á netþjóninum þínum. Þetta getur verið mikil öryggisógn fyrir vefþjóninn þinn sem og Linux kassann þinn líka. Til að koma í veg fyrir að Apache birti ekki þessar upplýsingar fyrir heiminum þurfum við að gera nokkrar breytingar á Apache aðalstillingarskránni.

Opnaðu stillingarskrá með vim ritstjóra og leitaðu að „ServerSignature“, það er sjálfgefið Kveikt. Við þurfum að slökkva á þessari undirskrift netþjónsins og önnur línan „ServerTokens Prod“ segir Apache að skila aðeins Apache sem vöru í svarhaus þjónsins á hverri síðubeiðni, það bælir niður OS, helstu og minni útgáfuupplýsingar.

# 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. Slökktu á skráarskráningu

Sjálfgefið er að Apache listi allt innihald rótskrár skjalsins í fjarveru vísitöluskráar. Vinsamlegast sjáðu myndina hér að neðan.

Við getum slökkt á skráningarskrá með því að nota Options tilskipun í stillingarskrá fyrir tiltekna möppu. Til þess þurfum við að slá inn httpd.conf eða apache2.conf skrá.

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

3. Haltu áfram að uppfæra Apache reglulega

Apache þróunarsamfélag vinnur stöðugt að öryggismálum og gefur út uppfærða útgáfu sína með nýjum öryggisvalkostum. Svo það er alltaf mælt með því að nota nýjustu útgáfuna af Apache sem vefþjóninn þinn.

Til að athuga Apache útgáfu: Þú getur athugað núverandi útgáfu með httpd -v skipuninni.

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

Þú getur uppfært útgáfuna þína með eftirfarandi skipun.

# yum update httpd
# apt-get install apache2

Einnig er mælt með því að halda kjarnanum þínum og stýrikerfinu uppfærðum í nýjustu stöðugu útgáfurnar ef þú ert ekki að keyra neitt ákveðið forrit sem virkar aðeins á tilteknu stýrikerfi eða kjarna.

4. Slökktu á óþarfa einingum

Það er alltaf gott að draga úr líkunum á að verða fórnarlamb hvers kyns vefárásar. Svo það er mælt með því að slökkva á öllum þeim einingar sem eru ekki í notkun eins og er. Þú getur skráð allar samansettar einingar vefþjónsins með eftirfarandi skipun.

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

Hér að ofan er listi yfir einingar sem eru sjálfgefnar virkjaðar en oft ekki nauðsynlegar: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Til að slökkva á tiltekinni einingu geturðu sett inn \# í upphafi þeirrar línu og endurræst þjónustuna.

5. Keyrðu Apache sem aðskilinn notanda og hóp

Með sjálfgefna uppsetningu keyrir Apache ferlið með engum notanda eða púka. Af öryggisástæðum er mælt með því að keyra Apache á eigin reikningi sem ekki hefur forréttindi. Til dæmis: http-vefur.

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

Nú þarftu að segja Apache að keyra með þessum nýja notanda og til að gera það þurfum við að slá inn /etc/httpd/conf/httpd.conf og endurræsa þjónustuna.

Opnaðu /etc/httpd/conf/httpd.conf með vim ritstjóra og leitaðu að lykilorðinu „Notandi“ og „Hópur“ og þar þarftu að tilgreina notandanafnið og hópnafnið sem á að nota.

User http-web
Group http-web

6. Notaðu Leyfa og neita til að takmarka aðgang að möppum

Við getum takmarkað aðgang að möppum með „Leyfa“ og „Neita“ valmöguleikum í httpd.conf skránni. Hér í þessu dæmi munum við tryggja rótarskrá, fyrir það með því að setja eftirfarandi í httpd.conf skrána.

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

  1. Valkostir „Enginn“ – Þessi valkostur mun ekki leyfa notendum að virkja neina valfrjálsa eiginleika.
  2. Pöntun hafna, leyfa – Þetta er röðin sem tilskipanirnar „Neita“ og „Leyfa“ verða unnar í. Hér mun það „hafna“ fyrst og „leyfa“ næst.
  3. Neita frá öllum – Þetta mun hafna beiðni frá öllum í rótarskrána, enginn mun hafa aðgang að rótarskránni.

7. Notaðu mod_security og mod_evasive Modules til að tryggja Apache

Þessar tvær einingar „mod_security“ og „mod_evasive“ eru mjög vinsælar einingar Apache hvað varðar öryggi.

Þar sem mod_security virkar sem eldveggur fyrir vefforritin okkar og gerir okkur kleift að fylgjast með umferð í rauntíma. Það hjálpar okkur einnig að vernda vefsíður okkar eða vefþjón fyrir árásum árásarmanna. Þú getur einfaldlega sett upp mod_security á netþjóninum þínum með hjálp sjálfgefna uppsetningarpakka þinna.

$ 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 virkar mjög skilvirkt, það tekur eina beiðni til að vinna úr og vinnur hana mjög vel. Það kemur í veg fyrir að DDOS árásir valdi eins miklum skaða. Þessi eiginleiki mod_evasive gerir honum kleift að höndla HTTP brute force og Dos eða DDos árás. Þessi eining greinir árásir með þremur aðferðum.

  1. Ef svo margar beiðnir berast á sömu síðu nokkrum sinnum á sekúndu.
  2. Ef eitthvað barn fer að reyna að gera fleiri en 50 beiðnir samtímis.
  3. Ef einhver IP er enn að reyna að senda inn nýjar beiðnir þegar hún er tímabundið á svartan lista.

mod_evasive er hægt að setja upp beint frá upprunanum. Hér höfum við uppsetningar- og uppsetningarleiðbeiningar fyrir þessar einingar sem mun hjálpa þér að setja upp þessar Apache einingar í Linux kassanum þínum.

  1. Verndaðu Apache með Mod_Security og Mod_evasive

8. Slökktu á því að Apache fylgist með táknrænum hlekkjum

Sjálfgefið er að Apache fylgir tákntenglum, við getum slökkt á þessum eiginleika með FollowSymLinks with Options tilskipuninni. Og til að gera það þurfum við að gera eftirfarandi færslu í aðalstillingarskránni.

Options -FollowSymLinks

Og ef einhver sérstakur notandi eða vefsíða þarf að virkja FollowSymLinks, getum við einfaldlega skrifað reglu í .htaccess skrá frá þeirri vefsíðu.

# Enable symbolic links
Options +FollowSymLinks

Athugið: Til að virkja umritunarreglur inni í „.htaccess“ ætti skránni „AllowOverride All“ að vera til staðar í aðalstillingunum á heimsvísu.

9. Slökktu á Server Side Includes og CGI Execution

Við getum slökkt á netþjónahliðinnihaldi (mod_include) og CGI framkvæmd ef þess er ekki þörf og til að gera það þurfum við að breyta aðalstillingarskránni.

Options -Includes
Options -ExecCGI

Við getum gert þetta fyrir tiltekna möppu líka með skráarmerkinu. Hér Í þessu dæmi erum við að slökkva á Includes og Cgi skrá execution fyrir “/var/www/html/web1” möppu.

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

Hér eru nokkur önnur gildi sem hægt er að kveikja eða slökkva á með Valkostatilskipuninni.

  1. Valkostir Allir – Til að virkja alla valkosti í einu. Þetta er sjálfgefið gildi, ef þú vilt ekki tilgreina nein gildi sérstaklega í Apache conf skrá eða .htaccess.
  2. Valkostir inniheldur NOEXEC – Þessi valkostur gerir kleift að innihalda miðlarahlið án leyfis til að keyra skipun eða cgi skrár.
  3. Valkostir MultiViews – Leyfir efni sem samið er um multiviews með mod_negotiation einingu.
  4. Valkostir SymLinksIfOwnerMatch – Það er svipað og FollowSymLinks. En þetta mun aðeins fylgja þegar eigandinn er sá sami á milli hlekksins og upprunalegu möppunnar sem hann er tengdur við.

10. Takmarka beiðnistærð

Sjálfgefið er að Apache hafi engin takmörk á heildarstærð HTTP beiðninnar, þ.e.a.s. ótakmarkað og þegar þú leyfir stórar beiðnir á vefþjóni er mögulegt að þú gætir orðið fórnarlamb þjónustuneitunarárása. Við getum takmarkað beiðnistærð Apache tilskipunar „LimitRequestBody“ með skráarmerkinu.

Þú getur stillt gildið í bætum frá 0 (ótakmarkað) í 2147483647 (2GB) sem eru leyfð í meginmáli beiðni. Þú getur stillt þessi mörk í samræmi við þarfir vefsvæðisins, Segjum að þú sért með síðu þar sem þú leyfir upphleðslu og þú vilt takmarka upphleðslustærðina fyrir tiltekna möppu.

Hér í þessu dæmi er user_uploads mappa sem inniheldur skrár sem notendur hafa hlaðið upp. Við erum að setja 500K takmörk fyrir þetta.

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

11. Verndaðu DDOS árásir og herslu

Jæja, það er satt að þú getur ekki verndað vefsíðuna þína alveg fyrir DDos árásum. Hér eru nokkrar tilskipanir sem geta hjálpað þér að hafa stjórn á því.

  1. Tímatími : Þessi tilskipun gerir þér kleift að stilla þann tíma sem þjónninn bíður eftir að ákveðnum atburðum ljúki áður en það mistekst. Sjálfgefið gildi þess er 300 sek. Það er gott að halda þessu gildi lágu á þeim síðum sem verða fyrir DDOS árásum. Þetta gildi fer algjörlega eftir því hvers konar beiðni þú færð á vefsíðunni þinni. Athugið: Það gæti valdið vandræðum með CGI forskriftir.
  2. MaxClients : Þessi tilskipun gerir þér kleift að setja takmörk á tengingar sem verða afgreiddar samtímis. Sérhver ný tenging verður í biðröð eftir þessi mörk. Það er fáanlegt með Prefork og Worker bæði MPM. Sjálfgefið gildi þess er 256.
  3. KeepAliveTimeout : Það er sá tími sem þjónninn bíður eftir síðari beiðni áður en tengingunni er lokað. Sjálfgefið gildi er 5 sek.
  4. LimitRequestFields : Það hjálpar okkur að setja takmörk á fjölda hausreita HTTP beiðni sem verða samþykktir frá viðskiptavinum. Sjálfgefið gildi þess er 100. Mælt er með því að lækka þetta gildi ef DDos árásir eiga sér stað vegna svo margra http beiðnihausa.
  5. LimitRequestFieldSize : Það hjálpar okkur að setja stærðartakmörk á HTTP beiðnihausinn.

12. Virkja Apache skógarhögg

Apache gerir þér kleift að skrá þig óháð stýrikerfisskráningu þinni. Það er skynsamlegt að virkja Apache skógarhögg, vegna þess að það veitir meiri upplýsingar, svo sem skipanir sem notendur sem hafa haft samskipti við vefþjóninn þinn slá inn.

Til að gera það þarftu að hafa mod_log_config eininguna með. Það eru þrjár helstu skógarhöggstengdar tilskipanir fáanlegar með Apache.

  1. TransferLog: Að búa til annálaskrá.
  2. LogFormat : Tilgreinir sérsniðið snið.
  3. CustomLog : Að búa til og forsníða annálaskrá.

Þú getur líka notað þau fyrir tiltekna vefsíðu þar sem þú ert að gera sýndarhýsingu og til þess þarftu að tilgreina það í sýndarhýsingarhlutanum. Til dæmis, hér er sýndargestgjafi vefsíðunnar minnar með virkjuð skráningu.

<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. Að tryggja Apache með SSL vottorðum

Síðast en ekki síst SSL vottorð, þú getur tryggt öll samskipti þín á dulkóðaðan hátt yfir internetið með SSL vottorði. Segjum sem svo að þú sért með vefsíðu þar sem fólk skráir sig inn með því að sanna innskráningarskilríki sitt eða þú ert með netverslunarvef þar sem fólk gefur upp bankaupplýsingar sínar eða debet-/kreditkortaupplýsingar til að kaupa vörur, sjálfgefið er að vefþjónninn þinn sendir þessar upplýsingar í venjulegum texta sniði en þegar þú notar SSL vottorð á vefsíðurnar þínar sendir Apache allar þessar upplýsingar í dulkóðuðum texta.

Þú getur keypt SSl vottorð frá svo mörgum mismunandi SSL veitendum eins og namecheap.com. Ef þú ert að reka mjög lítið veffyrirtæki og ert ekki til í að kaupa SSL vottorð geturðu samt úthlutað sjálfstætt undirritað vottorð á vefsíðuna þína. Apache notar mod_ssl eininguna til að styðja SSL vottorð.

# 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

Þegar vottorðið þitt hefur verið búið til og undirritað. Nú þarftu að bæta þessu við í Apache stillingum. Opnaðu aðalstillingarskrá með vim ritstjóra og bættu við eftirfarandi línum og endurræstu þjónustuna.

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

Opnaðu vafrann þinn, sláðu inn https://example.com og þú munt geta séð nýja sjálf-undirritaða vottorðið.

Þetta eru nokkur öryggisráð sem þú getur notað til að tryggja uppsetningu Apache vefþjónsins. Fyrir fleiri gagnlegar öryggisráð og hugmyndir, sjá opinbera netskjöl Apache HTTP Server.