3 Tīmekļa serveris

Pārskats

Šajā sadaļā ir apkopota labākā prakse, kā drošā veidā iestatīt tīmekļa serveri.

Saknes URL pāradresācijas uz Zabbix SSL piespiedu iestatīšana

Sistēmās, kuru pamatā ir RHEL, pievienojiet Apache konfigurācijai (/etc/httpd/conf/httpd.conf) virtuālo hostu un iestatiet pastāvīgu dokumenta saknes pāradresāciju uz Zabbix SSL URL. Ņemiet vērā, ka example.com jāaizstāj ar faktisko servera nosaukumu.

# Pievienojiet rindas:

<VirtualHost *:*>
    ServerName example.com
    Redirect permanent / https://example.com
</VirtualHost>

Lai piemērotu izmaiņas, restartējiet Apache servisu:

systemctl restart httpd.service

HTTP Strict Transport Security (HSTS) iespējošana tīmekļa serverī

Lai aizsargātu Zabbix lietotāja saskarne pret protokola pazemināšanas uzbrukumiem, iesakām tīmekļa serverī iespējot HSTS politiku.

Lai Apache konfigurācijā iespējotu HSTS politiku jūsu Zabbix lietotāja saskarnei, izpildiet šīs darbības:

1. Atrodiet sava virtuālā hosta konfigurācijas failu:

  • /etc/httpd/conf/httpd.conf uz RHEL bāzētās sistēmās
  • /etc/apache2/sites-available/000-default.conf uz Debian/Ubuntu

2. Pievienojiet šādu direktīvu sava virtuālā hosta konfigurācijas failam:

<VirtualHost *:*>
    Header set Strict-Transport-Security "max-age=31536000"
</VirtualHost>

3. Restartējiet Apache servisu, lai piemērotu izmaiņas:

# On RHEL-based systems:
systemctl restart httpd.service

# On Debian/Ubuntu
systemctl restart apache2.service

Drošu un SameSite sesijas sīkdatņu piespiedu izmantošana Zabbix

Konfigurējot Zabbix, ir būtiski piespiest izmantot drošos un SameSite atribūtus sesijas sīkdatnēm, lai uzlabotu drošību un novērstu starpvietņu pieprasījumu viltošanas (CSRF) uzbrukumus. Tomēr SameSite=Strict piespiedu izmantošana noteiktos scenārijos var radīt problēmas, piemēram:

  • Informācijas paneļa URL logrīki rāda "lietotājs nav pieteicies", iegulstot tā paša domēna iframe.
  • Lietotājiem, kas piekļūst informācijas panelim, izmantojot HTTP, nevis HTTPS, var rasties pieteikšanās problēmas.
  • Nav iespējams kopīgot URL uz noteiktām Zabbix izvēlnes sadaļām vai hostiem.

Lai mazinātu šīs problēmas, lietotājiem jābūt iespējai pielāgot SameSite politiku.

1. Drošās sīkdatnes

Iestatot secure karogu, tiek nodrošināts, ka sīkdatnes tiek pārsūtītas tikai caur HTTPS, novēršot to noplūdi nešifrētos savienojumos.

Lai iespējotu drošās sīkdatnes Zabbix, pievienojiet vai modificējiet šādu iestatījumu tīmekļa servera konfigurācijā:

Apache gadījumā:

Header always edit Set-Cookie ^(.*)$ $1;Secure

Nginx gadījumā:

proxy_cookie_path / "/; Secure";

Pārliecinieties, ka jūsu Zabbix lietotāja saskarnei piekļūst, izmantojot HTTPS; pretējā gadījumā sīkdatnes ar Secure karogu netiks nosūtītas.

2. SameSite atribūta konfigurēšana

Tīmekļa servera iestatījumi var arī piespiest izmantot SameSite atribūtu:

Apache gadījumā:

<IfModule mod_headers.c>
    Header onsuccess edit Set-Cookie (.*) "$1; SameSite=Strict"
</IfModule>

Nginx gadījumā (versija 1.19.3+):

proxy_cookie_flags ~ samesite=Strict; # Aizstājiet ~ ar 'zbx_session', lai nodrošinātu lielāku precizitāti

Content Security Policy (CSP) iespējošana tīmekļa serverī

Lai aizsargātu Zabbix lietotāja saskarne pret Cross Site Scripting (XSS), datu injekciju un līdzīgiem uzbrukumiem, iesakām iespējot Content Security Policy tīmekļa serverī. Lai to izdarītu, konfigurējiet tīmekļa serveri tā, lai tas atgrieztu HTTP header.

Tālāk norādītā CSP header konfigurācija ir paredzēta tikai noklusējuma Zabbix lietotāja saskarne instalācijai un gadījumiem, kad viss saturs tiek ielādēts no vietnes domēna (izņemot apakšdomēnus). Citāda CSP header konfigurācija var būt nepieciešama, ja, piemēram, konfigurējat URL logrīku, lai attēlotu saturu no vietnes apakšdomēniem vai ārējiem domēniem, pārslēdzaties no OpenStreetMap uz citu kartes dzini vai pievienojat ārēju CSS vai logrīkus. Ja izmantojat Duo Universal Prompt daudzfaktoru autentifikācijas metodi, noteikti pievienojiet "duo.com" CSP direktīvai sava virtuālā hosta konfigurācijas failā.

Lai iespējotu CSP jūsu Zabbix lietotāja saskarne Apache konfigurācijā, izpildiet šīs darbības:

1. Atrodiet sava virtuālā hosta konfigurācijas failu:

  • /etc/httpd/conf/httpd.conf RHEL bāzētās sistēmās
  • /etc/apache2/sites-available/000-default.conf Debian/Ubuntu

2. Pievienojiet šādu direktīvu sava virtuālā hosta konfigurācijas failam:

<VirtualHost *:*>
    Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
</VirtualHost>

3. Restartējiet Apache servisu, lai piemērotu izmaiņas:

# On RHEL-based systems:
systemctl restart httpd.service

# On Debian/Ubuntu
systemctl restart apache2.service

Tīmekļa servera informācijas atklāšanas atspējošana

Lai uzlabotu drošību, ieteicams atspējot visus tīmekļa servera parakstus.

Pēc noklusējuma tīmekļa serveris atklāj programmatūras parakstu:

Parakstu var atspējot, pievienojot Apache konfigurācijas failam šādus parametrus:

ServerSignature Off
ServerTokens Prod

PHP parakstu (X-Powered-By HTTP galveni) var atspējot, mainot php.ini konfigurācijas failu (pēc noklusējuma paraksts ir atspējots):

expose_php = Off

Lai konfigurācijas faila izmaiņas stātos spēkā, ir nepieciešams restartēt tīmekļa serveri.

Papildu drošībai varat izmantot rīku mod_security kopā ar Apache (pakotne libapache2-mod-security2). Šis rīks ļauj noņemt servera parakstu, nevis tikai noņemt versiju no servera paraksta. Servera parakstu var mainīt uz jebkuru vērtību, pēc mod_security instalēšanas iestatot "SecServerSignature" uz jebkuru vēlamo vērtību.

Lūdzu, skatiet sava tīmekļa servera dokumentāciju, lai uzzinātu, kā noņemt/mainīt programmatūras parakstus.

Tīmekļa servera noklusējuma kļūdu lapu atspējošana

Lai izvairītos no informācijas atklāšanas, ieteicams atspējot noklusējuma kļūdu lapas.

Pēc noklusējuma tīmekļa serveris izmanto iebūvētās kļūdu lapas:

Šīs noklusējuma kļūdu lapas būtu jāaizstāj/jānoņem. Piemēram, Apache tīmekļa serverī var izmantot direktīvu "ErrorDocument", lai definētu pielāgotu kļūdu lapu/tekstu.

Lūdzu, skatiet sava tīmekļa servera dokumentāciju, lai uzzinātu, kā aizstāt/noņemt noklusējuma kļūdu lapas.

Tīmekļa servera testa lapas noņemšana

Lai izvairītos no informācijas atklāšanas, ir ieteicams noņemt tīmekļa servera testa lapu.

Pēc noklusējuma Apache tīmekļa servera tīmekļa saknes direktorijā ir index.html testa lapa:

Lūdzu, skatiet sava tīmekļa servera dokumentāciju, lai uzzinātu, kā noņemt noklusējuma testa lapas.

Iestatīt X-Frame-Options HTTP atbildes galveni

Pēc noklusējuma Zabbix ir konfigurēts ar parametru Use X-Frame-Options HTTP header, kam iestatīta vērtība SAMEORIGIN. Tas nozīmē, ka saturu var ielādēt tikai rāmī, kam ir tāda pati izcelsme kā pašai lapai.

Zabbix lietotāja saskarnes elementi, kas iegūst saturu no ārējiem URL (proti, URL paneļa logrīks), parāda iegūto saturu smilškastē ar iespējotiem visiem smilškastes ierobežojumiem.

Šie iestatījumi uzlabo Zabbix lietotāja saskarnes drošību un nodrošina aizsardzību pret XSS un klikšķu pārtveršanas uzbrukumiem. Super admin lietotāji pēc vajadzības var mainīt parametrus Use iframe sandboxing un Use X-Frame-Options HTTP header. Pirms noklusējuma iestatījumu maiņas, lūdzu, rūpīgi izvērtējiet riskus un ieguvumus. Nav ieteicams pilnībā izslēgt iframe smilškasti vai X-Frame-Options HTTP atbildes galveni.

Faila ar biežāk lietoto paroļu sarakstu paslēpšana

Lai palielinātu paroļu brutālā spēka uzbrukumu sarežģītību, ieteicams ierobežot piekļuvi failam ui/data/top_passwords.txt. Šajā failā ir ietverts biežāk lietoto un kontekstam specifisko paroļu saraksts, un tas neļauj lietotājiem iestatīt šādas paroles (ja paroļu politikā ir iespējots parametrs Izvairīties no viegli uzminamām parolēm).

Lai ierobežotu piekļuvi failam top_passwords.txt, modificējiet sava tīmekļa servera konfigurāciju.

Apache vidē piekļuvi failam var ierobežot, izmantojot .htaccess failu:

<Files "top_passwords.txt">
    Order Allow,Deny
    Deny from all
</Files>

NGINX vidē piekļuvi failam var ierobežot, izmantojot location direktīvu:

location = /data/top_passwords.txt {
    deny all;
    return 404;
}