3 Tīmekļa serveris

Pārskats

Šajā sadaļā ir aprakstīta labākā prakse tīmekļa servera drošai konfigurēšanai.

Saknes URL novirzīšanas uz Zabbix SSL piespiešana

Uz RHEL bāzētām sistēmām pievienojiet virtuālo hostu Apache konfigurācijai (/etc/httpd/conf/httpd.conf) un iestatiet pastāvīgu dokumentu saknes novirzīšanu uz Zabbix SSL URL. Ņemiet vērā, ka example.com ir jāaizstāj ar faktisko servera nosaukumu.

# Pievienojiet rindas:

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

Pārstartējiet Apache pakalpojumu, lai piemērotu izmaiņas:

systemctl restart httpd.service

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

Lai aizsargātu Zabbix lietotāja saskarni 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, veiciet šādas darbības:

1. Atrodiet sava virtuālā resursdatora 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ā resursdatora konfigurācijas failam:

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

3. Restartējiet Apache pakalpojumu, 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īkfailu ieviešana Zabbix

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

  • Informācijas paneļa URL sīkrīki rāda "user not logged in", ja tiek iegulti viena domēna iframe.
  • Lietotāji, kas piekļūst informācijas panelim, izmantojot HTTP, nevis HTTPS, var saskarties ar pieteikšanās problēmām.
  • Nav iespējams kopīgot URL uz konkrētā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šie sīkfaili

Iestatot secure karodziņu, tiek nodrošināts, ka sīkfaili tiek pārsūtīti tikai pa HTTPS, tādējādi novēršot to atklāšanu nešifrētos savienojumos.

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

Apache:

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

Nginx:

proxy_cookie_path / "/; Secure";

Pārliecinieties, ka jūsu Zabbix lietotāja saskarne ir pieejama, izmantojot HTTPS; pretējā gadījumā sīkfaili ar Secure karodziņu netiks nosūtīti.

2. SameSite atribūta konfigurēšana

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

Apache:

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

Nginx (versija 1.19.3+):

proxy_cookie_flags ~ samesite=Strict; # Replace ~ with 'zbx_session' for specificity

Satura drošības politikas (CSP) iespējošana tīmekļa serverī

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

Tālāk norādītā CSP galvenes konfigurācija ir paredzēta tikai noklusējuma Zabbix lietotāja saskarnes instalācijai un gadījumiem, kad viss saturs nāk no vietnes domēna (izņemot apakšdomēnus).
Var būt nepieciešama cita CSP galvenes konfigurācija, 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 dzinēju vai pievienojat ārēju CSS vai logrīkus.
Ja izmantojat Duo Universal Prompt vairāku faktoru autentifikācijas metodi, noteikti pievienojiet "duo.com" CSP direktīvai sava virtuālā resursdatora konfigurācijas failā.

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

1. Atrodiet sava virtuālā resursdatora 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ā resursdatora 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 pakalpojumu, 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 visas tīmekļa servera parakstu norādes.

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

Parakstu var atspējot, Apache konfigurācijas failam pievienojot šā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 vēlamo vērtību.

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

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

Lai novērstu informācijas noplūdi, 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 ir jāaizstāj/jānoņem. Piemēram, Apache tīmekļa serverim 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 testēšanas lapas noņemšana

Lai novērstu informācijas noplūdi, ieteicams noņemt tīmekļa servera testēšanas lapu.

Pēc noklusējuma Apache tīmekļa servera tīmekļa saknes katalogā ir index.html testēšanas lapa:

Lūdzu, skatiet sava tīmekļa servera dokumentāciju, lai uzzinātu, kā noņemt noklusējuma testēšanas 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 ir iestatīta vērtība SAMEORIGIN. Tas nozīmē, ka saturu var ielādēt tikai rāmī, kura izcelsme ir tāda pati kā pašai lapai.

Zabbix lietotāja saskarnes elementi, kas ielādē saturu no ārējām URL adresēm (proti, URL dashboard widget), attēlo 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 clickjacking uzbrukumiem. Super admin lietotāji var modificēt parametrus Use iframe sandboxing un Use X-Frame-Options HTTP header pēc vajadzības. Lūdzu, rūpīgi izvērtējiet riskus un ieguvumus, pirms maināt noklusējuma iestatījumus. Nav ieteicams pilnībā izslēgt iframe smilškastēšanu vai X-Frame-Options HTTP galveni.

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

Lai palielinātu paroļu brutālpiespiedu uzbrukumu sarežģītību, ieteicams ierobežot piekļuvi failam ui/data/top_passwords.txt. Šajā failā ir iekļauts visbiežāk lietoto un kontekstam specifisko paroļu saraksts, un tas neļauj lietotājiem iestatīt šādas paroles (ja ir iespējots parametrs Avoid easy-to-guess passwords paroļu politikā).

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

Apache gadījumā piekļuvi failam var ierobežot, izmantojot .htaccess failu:

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

NGINX gadījumā piekļuvi failam var ierobežot, izmantojot direktīvu location:

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