Vidokezo 13 vya Usalama vya Seva ya Wavuti ya Apache na Ugumu


Sote tunaifahamu seva ya wavuti ya Apache, ni seva ya wavuti maarufu sana kupangisha faili zako za wavuti au tovuti yako kwenye wavuti. Hapa kuna viungo ambavyo vinaweza kukusaidia kusanidi seva ya wavuti ya Apache kwenye kisanduku chako cha Linux.

  1. Sakinisha Seva ya Wavuti ya Apache
  2. Sanidi Tovuti Yako kwenye Kisanduku chako cha Linux

Hapa katika somo hili, nitaangazia vidokezo muhimu vya kulinda seva yako ya wavuti. Kabla ya kutumia mabadiliko haya kwenye seva yako ya wavuti, unapaswa kuwa na misingi ya seva ya Apache.

  1. Saraka ya mizizi ya hati: /var/www/html au /var/www
  2. Faili Kuu ya Usanidi: /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora) na /etc/apache2/apache2.conf (Debian/Ubuntu).
  3. Mlango chaguo-msingi wa HTTP: 80 TCP
  4. Mlango Chaguomsingi wa HTTPS: 443 TCP
  5. Pima mipangilio ya faili yako ya Usanidi na sintaksia: httpd -t
  6. Fikia faili za Kumbukumbu za Seva ya Wavuti: /var/log/httpd/access_log
  7. Hitilafu katika Kuweka faili za Seva ya Wavuti: /var/log/httpd/error_log

1. Jinsi ya kuficha Toleo la Apache na Utambulisho wa OS kutoka kwa Makosa

Unaposakinisha Apache iliyo na chanzo au visakinishaji vingine vya kifurushi kama vile yum, inaonyesha toleo la seva yako ya wavuti ya Apache iliyosakinishwa kwenye seva yako na jina la Mfumo wa Uendeshaji la seva yako katika Hitilafu. Inaonyesha pia habari kuhusu moduli za Apache zilizosakinishwa kwenye seva yako.

Katika picha hapo juu, unaweza kuona kwamba Apache inaonyesha toleo lake na OS iliyosanikishwa kwenye seva yako. Hili linaweza kuwa tishio kubwa la usalama kwa seva yako ya wavuti na sanduku lako la Linux pia. Ili kuzuia Apache kutoonyesha habari hizi kwa ulimwengu, tunahitaji kufanya mabadiliko fulani katika faili kuu ya usanidi ya Apache.

Fungua faili ya usanidi na mhariri wa vim na utafute ServerSignature, kwa chaguo-msingi Inawashwa. Tunahitaji Kuzima sahihi hizi za seva na mstari wa pili ServerTokens Prod huambia Apache irudishe Apache pekee kama bidhaa katika kichwa cha majibu ya seva kwenye kila ombi la ukurasa, Inakandamiza OS, maelezo ya toleo kuu na ndogo.

# 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. Zima Uorodheshaji wa Orodha

Kwa chaguo-msingi, Apache huorodhesha yaliyomo kwenye saraka ya mizizi ya Hati kwa kukosekana kwa faili ya faharisi. Tafadhali tazama picha hapa chini.

Tunaweza kuzima uorodheshaji wa saraka kwa kutumia Maagizo ya Chaguzi katika faili ya usanidi kwa saraka maalum. Kwa hilo tunahitaji kuingiza faili ya httpd.conf au apache2.conf.

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

3. Endelea kusasisha Apache Mara kwa Mara

Jumuiya ya wasanidi wa Apache inaendelea kufanyia kazi masuala ya usalama na kutoa toleo lake lililosasishwa na chaguo mpya za usalama. Kwa hivyo Inapendekezwa kila wakati kutumia toleo la hivi punde la Apache kama seva yako ya wavuti.

Kuangalia toleo la Apache: Unaweza kuangalia toleo lako la sasa na httpd -v amri.

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

Unaweza kusasisha toleo lako kwa amri ifuatayo.

# yum update httpd
# apt-get install apache2

Inapendekezwa pia kusasisha Kernel na OS yako hadi matoleo ya hivi punde thabiti ikiwa hutumii programu mahususi ambayo inafanya kazi kwenye OS au Kernel mahususi pekee.

4. Lemaza Modules zisizo za lazima

Daima ni vyema kupunguza uwezekano wa kuwa mwathirika wa mashambulizi yoyote ya mtandao. Kwa hivyo inashauriwa kuzima moduli hizo zote ambazo hazitumiki kwa sasa. Unaweza kuorodhesha moduli zote zilizokusanywa za seva ya wavuti, kwa kutumia amri ifuatayo.

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

Hapo juu ni orodha ya moduli ambazo zimewezeshwa kwa chaguo-msingi lakini mara nyingi hazihitajiki: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Ili kuzima moduli fulani, unaweza kuingiza \# mwanzoni mwa laini hiyo na kuanzisha upya huduma.

5. Endesha Apache kama Mtumiaji na Kikundi tofauti

Kwa usakinishaji chaguo-msingi Apache huendesha mchakato wake bila mtumiaji hakuna au daemon. Kwa sababu za usalama inashauriwa kuendesha Apache katika akaunti yake isiyo ya upendeleo. Kwa mfano: http-mtandao.

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

Sasa unahitaji kumwambia Apache aendeshe na mtumiaji huyu mpya na kufanya hivyo, tunahitaji kuingiza /etc/httpd/conf/httpd.conf na kuanzisha upya huduma.

Fungua /etc/httpd/conf/httpd.conf na vim editor na utafute neno kuu Mtumiaji na Kikundi na hapo utahitaji kutaja jina la mtumiaji na jina la kikundi kutumia.

User http-web
Group http-web

6. Tumia Ruhusu na Kataa Kuzuia ufikiaji wa Saraka

Tunaweza kuzuia ufikiaji wa saraka kwa chaguo za Ruhusu na Kataa katika faili ya httpd.conf. Hapa katika mfano huu, tutakuwa tunalinda saraka ya mizizi, kwa hiyo kwa kuweka zifuatazo katika faili ya httpd.conf.

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

  1. Chaguo Hakuna - Chaguo hili halitaruhusu watumiaji kuwasha vipengele vyovyote vya hiari.
  2. kataza agizo, ruhusu - Huu ndio mpangilio ambapo maagizo ya Kataa na Ruhusu yatachakatwa. Hapa itakataa kwanza na kuruhusu ijayo.
  3. Kataa kutoka kwa wote - Hii itakataa ombi kutoka kwa kila mtu kwa saraka ya mizizi, hakuna mtu ataweza kufikia saraka ya mizizi.

7. Tumia Mod_security na Mod_evasive Moduli ili Kulinda Apache

Moduli hizi mbili mod_security na mod_evasive ni moduli maarufu sana za Apache katika suala la usalama.

Ambapo mod_security hufanya kazi kama ngome ya programu zetu za wavuti na huturuhusu kufuatilia trafiki kwa wakati halisi. Pia hutusaidia kulinda tovuti zetu au seva ya wavuti dhidi ya mashambulizi ya kikatili. Unaweza tu kusakinisha mod_security kwenye seva yako kwa usaidizi wa visakinishi vya kifurushi chako chaguo-msingi.

$ 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 inafanya kazi kwa ufanisi sana, inachukua ombi moja kuichakata na kuichakata vizuri sana. Inazuia mashambulizi ya DDOS kufanya uharibifu mwingi. Kipengele hiki cha mod_evasive huiwezesha kushughulikia nguvu kali ya HTTP na shambulio la Dos au DDos. Moduli hii hutambua mashambulizi kwa njia tatu.

  1. Ikiwa maombi mengi yanakuja kwa ukurasa mmoja mara chache kwa sekunde.
  2. Iwapo mtoto yeyote atachakata kujaribu kutuma maombi zaidi ya 50 kwa wakati mmoja.
  3. Ikiwa IP yoyote bado inajaribu kutuma maombi mapya wakati imeorodheshwa kwa muda.

mod_evasive inaweza kusakinishwa moja kwa moja kutoka kwa chanzo. Hapa, tuna mwongozo wa Usakinishaji na usanidi wa moduli hizi ambazo zitakusaidia kusanidi moduli hizi za Apache kwenye kisanduku chako cha Linux.

  1. Linda Apache kwa kutumia Mod_Security na Mod_evasive

8. Lemaza ufuataji wa Apache wa Viungo vya Alama

Kwa chaguo-msingi Apache hufuata ulinganifu, tunaweza kuzima kipengele hiki kwa FollowSymLinks kwa maelekezo ya Chaguo. Na kufanya hivyo tunahitaji kufanya ingizo lifuatalo katika faili kuu ya usanidi.

Options -FollowSymLinks

Na, ikiwa mtumiaji au tovuti yoyote inahitaji kuwashwa kwa FollowSymLinks, tunaweza kuandika sheria katika faili ya .htaccess kutoka kwa tovuti hiyo.

# Enable symbolic links
Options +FollowSymLinks

Kumbuka: Ili kuwezesha sheria za kuandika upya ndani ya faili ya .htaccess AllowOverride All inapaswa kuwepo katika usanidi mkuu duniani kote.

9. Zima Upande wa Seva Inajumuisha na Utekelezaji wa CGI

Tunaweza kuzima upande wa seva ni pamoja na (mod_include) na utekelezaji wa CGI ikiwa hauhitajiki na ili kufanya hivyo tunahitaji kurekebisha faili kuu ya usanidi.

Options -Includes
Options -ExecCGI

Tunaweza kufanya hivi kwa saraka fulani pia na lebo ya Saraka. Hapa Katika mfano huu, tunazima Inajumuisha na utekelezaji wa faili ya Cgi kwa saraka ya /var/www/html/web1.

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

Hapa kuna thamani zingine ambazo zinaweza kuwashwa au kuzimwa kwa maagizo ya Chaguo.

  1. Chaguo Zote - Ili kuwezesha chaguzi zote mara moja. Hii ndiyo thamani chaguo-msingi, Ikiwa hutaki kubainisha thamani zozote kwa uwazi katika faili ya Apache conf au .htaccess.
  2. Chaguo ZinajumuishaNOEXEC - Chaguo hili huruhusu upande wa seva kujumuisha bila idhini ya kutekeleza kwa amri au faili za cgi.
  3. Mionekano Mingi ya Chaguzi - Inaruhusu miwonekano mingi iliyojadiliwa kwa kutumia mod_negotiation moduli.
  4. Chaguo SymLinksIfOwnerMatch - Ni sawa na FollowSymLinks. Lakini, hii itafuata tu wakati mmiliki ni sawa kati ya kiungo na saraka asili ambayo imeunganishwa.

10. Punguza Ukubwa wa Ombi

Kwa chaguo-msingi Apache haina kikomo kwa saizi ya jumla ya ombi la HTTP yaani bila kikomo na unaporuhusu maombi makubwa kwenye seva ya wavuti inawezekana kuwa unaweza kuwa mwathirika wa Kunyimwa kwa mashambulizi ya huduma. Tunaweza Kupunguza ukubwa wa maombi ya maagizo ya Apache LimitRequestBody kwa lebo ya saraka.

Unaweza kuweka thamani katika baiti kutoka 0 (bila kikomo) hadi 2147483647 (2GB) ambazo zinaruhusiwa katika shirika la ombi. Unaweza kuweka kikomo hiki kulingana na mahitaji ya tovuti yako, Tuseme una tovuti ambapo unaruhusu upakiaji na unataka kupunguza ukubwa wa upakiaji kwa saraka fulani.

Hapa katika mfano huu, user_uploads ni saraka ambayo ina faili zilizopakiwa na watumiaji. Tunaweka kikomo cha 500K kwa hili.

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

11. Linda mashambulizi ya DDOS na Ugumu

Kweli, ni kweli kwamba huwezi kulinda kabisa tovuti yako dhidi ya mashambulizi ya DDos. Hapa kuna baadhi ya maagizo ambayo yanaweza kukusaidia kuwa na udhibiti juu yake.

  1. TimeOut : Maagizo haya hukuruhusu kuweka muda ambao seva itasubiri ili matukio fulani yakamilike kabla hayajafaulu. Thamani yake chaguo-msingi ni sekunde 300. Ni vyema kuweka thamani hii chini kwenye tovuti ambazo zinakabiliwa na mashambulizi ya DDOS. Thamani hii inategemea kabisa aina ya ombi unalopata kwenye tovuti yako. Kumbuka: Inaweza kuleta matatizo na hati zinazokuja za CGI.
  2. MaxClients : Maagizo haya hukuruhusu kuweka kikomo cha miunganisho ambayo itatolewa kwa wakati mmoja. Kila muunganisho mpya utawekwa kwenye foleni baada ya kikomo hiki. Inapatikana kwa Prefork na Worker zote MPM. Thamani yake chaguomsingi ni 256.
  3. KeepAliveTimeout : Ni muda ambao seva itasubiri ombi linalofuata kabla ya kufunga muunganisho. Thamani chaguo-msingi ni sekunde 5.
  4. LimitRequestFields : Inatusaidia kuweka kikomo kwa idadi ya sehemu za kichwa za ombi la HTTP ambazo zitakubaliwa kutoka kwa wateja. Thamani yake chaguomsingi ni 100. Inapendekezwa kupunguza thamani hii ikiwa mashambulizi ya DDos yanatokea kutokana na vichwa vingi vya ombi vya http.
  5. LimitRequestFieldSize : Inatusaidia kuweka kikomo cha ukubwa kwenye kichwa cha Ombi la HTTP.

12. Wezesha Kuingia kwa Apache

Apache hukuruhusu kuingia bila kujali ukataji wa OS yako. Ni busara kuwezesha ukataji miti wa Apache, kwa sababu hutoa habari zaidi, kama vile amri zilizowekwa na watumiaji ambao wameingiliana na seva yako ya Wavuti.

Ili kufanya hivyo unahitaji kujumuisha mod_log_config moduli. Kuna maagizo matatu kuu yanayohusiana na ukataji miti yanayopatikana na Apache.

  1. TransferLog: Kuunda faili ya kumbukumbu.
  2. LogFormat : Inabainisha umbizo maalum.
  3. CustomLog : Kuunda na kuumbiza faili ya kumbukumbu.

Unaweza pia kuzitumia kwa tovuti fulani ambayo unafanya Upangishaji Mtandaoni na kwa hilo unahitaji kubainisha katika sehemu ya seva pangishi. Kwa mfano, hapa kuna usanidi wa mwenyeji wa wavuti yangu na ukataji miti umewezeshwa.

<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. Kupata Apache na Vyeti vya SSL

Mwishowe, lakini sio cheti cha chini kabisa cha SSL, unaweza kulinda mawasiliano yako yote kwa njia iliyosimbwa kwenye Mtandao ukitumia cheti cha SSL. Tuseme una tovuti ambayo watu huingia kwa kuthibitisha vitambulisho vyao vya Kuingia au una tovuti ya E-Commerce ambapo watu wanatoa maelezo yao ya benki au maelezo ya kadi ya Debit/Mikopo ili kununua bidhaa, kwa chaguo-msingi seva yako ya tovuti hutuma maelezo haya kwa maandishi - maandishi wazi. umbizo lakini unapotumia vyeti vya SSL kwa tovuti zako, Apache hutuma maelezo haya yote kwa maandishi yaliyosimbwa.

Unaweza kununua vyeti vya SSl kutoka kwa watoa huduma wengi tofauti wa SSL kama vile namecheap.com. Iwapo unafanya biashara ndogo sana ya mtandaoni na hutaki kununua cheti cha SSL bado unaweza kukabidhi cheti kilichosainiwa Nafsi kwa tovuti yako. Apache hutumia moduli ya mod_ssl kusaidia cheti cha 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

Mara cheti chako kimeundwa na kusainiwa. Sasa unahitaji kuongeza hii katika usanidi wa Apache. Fungua faili kuu ya usanidi na mhariri wa vim na ongeza mistari ifuatayo na uanze tena huduma.

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

Fungua kivinjari chako, andika https://example.com, na utaweza kuona cheti kipya ambacho umejiandikisha.

Hivi ni vidokezo vichache vya usalama ambavyo unaweza kutumia ili kupata usakinishaji wako wa seva ya wavuti ya Apache. Kwa vidokezo na mawazo muhimu zaidi ya usalama, angalia hati rasmi ya mtandaoni ya Apache HTTP Server.