3 Веб сервер

Преглед

Овај одељак садржи најбоље праксе за подешавање веб сервера на безбедан начин.

Омогућавање Zabbix-а у основном директоријуму URL-а

На системима заснованим на RHEL-у, додајте виртуелни домаћин у Apache конфигурацију (/etc/httpd/conf/httpd.conf) и поставите трајно преусмеравање за корен документа на Zabbix SSL URL. Имајте на уму да example.com треба заменити стварним именом сервера.

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

Поново покрените Аpache услугу да бисте применили промене:

systemctl restart httpd.service

Омогућавање HTTP Strict Transport Security (HSTS) на веб серверу

Да бисте заштитили Zabbix кориснички интерфејс од напада враћања протокола на старију верзију, препоручујемо да омогућите политику HSTS на веб серверу.

Да бисте омогућили HSTS политику за ваш Zabbix фронтенд у Apache конфигурацији, пратите ове кораке:

  1. Пронађите конфигурациону датотеку вашег виртуелног домаћина:
  • /etc/httpd/conf/httpd.conf на RHEL-базираним системима
  • /etc/apache2/sites-available/000-default.conf на Debian/Ubuntu
  1. Додајте следећу директиву у конфигурациону датотеку вашег виртуелног домаћина:
<VirtualHost *:*>
       Заглавље подешено на Strict-Transport-Security "max-age=31536000"
       </VirtualHost>
  1. Рестартујте Apache сервис да бисте применили промене:
# На RHEL-базираним системима:
       systemctl restart httpd.service
       
       # На Debian/Ubuntu
       systemctl restart apache2.service

Примена Secure и SameSite сесијских колачића у Zabbix-у

Приликом конфигурисања Zabbix-а, неопходно је применити атрибуте Secure и SameSite за сесијске колачиће како би се побољшала безбедност и спречили напади фалсификовања захтева са више сајтова (CSRF). Међутим, примена SameSite=Strict може изазвати проблеме у одређеним сценаријима, као што су:

  • Виџети URL-ова контролне табле који приказују „корисник није пријављен“ када се уграђују iframe-ови истог домена.
  • Корисници који приступају контролној табли путем HTTP-а уместо HTTPS-а могу се суочити са проблемима са пријављивањем.
  • Немогућност дељења URL-ова са одређеним одељцима менија или хостовима Zabbix-а.

Да би се ублажили ови проблеми, корисници би требало да имају начин да прилагоде SameSite политику.

1. Безбедни колачићи

Постављање заставице secure осигурава да се колачићи преносе само преко HTTPS-а, спречавајући изложеност преко нешифрованих веза.

Да бисте омогућили безбедне колачиће у Zabbix-у, додајте или измените следеће подешавање у конфигурацији веб сервера:

За Apache:

Заглавље увек уређивати Set-Cookie ^(.*)$ $1;Secure

За Nginx:

proxy_cookie_path / "/; Secure";

Уверите се да се вашем Zabbix корисничком интерфјесу приступа путем HTTPS-а; у супротном, колачићи са заставицом Secure неће бити послати.

2. Конфигурисање атрибута SameSite

Подешавања веб сервера такође могу наметнути атрибут SameSite:

За Apache:

<IfModule mod_headers.c> Заглавље onsuccess уређивати Set-Cookie (.*) "$1; SameSite=Strict" </IfModule>

За Nginx (верзија 1.19.3+):

proxy_cookie_flags ~ samesite=Strict; # Замените ~ са 'zbx_session' ради прецизности

Омогућавање Политике безбедности садржаја (CSP) на веб серверу

Да бисте заштитили Zabbix фронтенд од Cross Site Scripting-а (XSS), убризгавања података и сличних напада, препоручујемо да омогућите Политику безбедности садржаја на веб серверу. Да бисте то урадили, конфигуришите веб сервер да враћа HTTP заглавље.

Следећа конфигурација CSP заглавља је само за подразумевану инсталацију Zabbix фронтенда и за случајеве када сав садржај потиче са домена сајта (искључујући поддомене). Другачија конфигурација CSP заглавља може бити потребна ако, на пример, конфигуришете виџет URL да би приказивао садржај са поддомена сајта или спољних домена, прелазите са OpenStreetMap на други мап мотор или додајете спољни CSS или виџете. Ако користите метод Duo Universal Prompt вишефакторска аутентификација, обавезно додајте „duo.com“ CSP директиви у конфигурационој датотеци вашег виртуелног хоста.

Да бисте омогућили CSP за ваш Zabbix фронтенд у Apache конфигурацији, пратите ове кораке:

1. Пронађите конфигурациону датотеку вашег виртуелног хоста:

  • /etc/httpd/conf/httpd.conf на RHEL-базираним системима
  • /etc/apache2/sites-available/000-default.conf на Debian/Ubuntu

2. Додајте следећу директиву у конфигурациону датотеку вашег виртуелног хоста:

<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>
  1. Поново покрените Apache сервис да бисте применили промене:
# На RHEL-базираним системима:
       systemctl restart httpd.service
       
       # На Debian/Ubuntu
       systemctl restart apache2.service

Онемогућавање излагања информација веб сервера

Да би се побољшала безбедност, препоручује се онемогућавање свих потписа веб сервера.

Подразумевано, веб сервер открива потпис софтвера:

Потпис се може онемогућити додавањем следећих параметара у конфигурациону датотеку Apache-а:

ServerSignature Off
       ServerTokens Prod

PHP потпис (X-Powered-By HTTP заглавље) може се онемогућити променом конфигурационе датотеке php.ini (подразумевано, потпис је онемогућен):

expose_php = Off

Потребно је поново покренути веб сервер да би се промене конфигурационе датотеке примениле.

За додатну безбедност, можете користити алат mod_security са Apache-ом (пакет libapache2-mod-security2). Овај алат омогућава уклањање потписа сервера уместо уклањања само верзије из потписа сервера. Потпис сервера се може променити на било коју вредност подешавањем „SecServerSignature“ на било коју жељену вредност након инсталирања mod_security.

Погледајте документацију вашег веб сервера да бисте пронашли помоћ о томе како да уклоните/промените потписе софтвера.

Онемогућавање подразумеваних страница са грешкама веб сервера

Да бисте избегли откривање информација, препоручује се онемогућавање подразумеваних страница са грешкама.

Подразумевано, веб сервер користи уграђене странице са грешкама:

Ове подразумеване странице са грешкама треба заменити/уклонити. На пример, директива „ErrorDocument“ може се користити за дефинисање прилагођене странице/текста са грешком за Apache веб сервер.

Молимо погледајте документацију вашег веб сервера да бисте пронашли помоћ о томе како да замените/уклоните подразумеване странице са грешкама.

Уклањање тест странице веб сервера

Да бисте избегли откривање информација, препоручује се уклањање тест странице веб сервера.

Подразумевано, корен веб сервера Apache садржи тест страницу index.html:

Погледајте документацију вашег веб сервера да бисте пронашли помоћ о томе како да уклоните подразумеване тест странице.

Подесите X-Frame-Options HTTP заглавље одговора

Подразумевано, Zabbix је конфигурисан са параметром Use X-Frame-Options HTTP header постављеним на SAMEORIGIN. То значи да садржај може да се учита само у оквиру који има исто порекло као и сама страница.

Zabbix елементи корисничког интерфејса који повлаче садржај са спољних URL-ова (наиме, URL виџет за контролну таблу) приказују преузети садржај у заштићеном окружењу са омогућеним свим ограничењима у заштићеном окружењу.

Ова подешавања побољшавају безбедност Zabbix корисничког интерфејса и пружају заштиту од XSS и кликџекинг напада. Корисници Супер администратора могу изменити параметре Користи iframe sandboxing и Користити HTTP заглавље X-Frame-Options по потреби. Пажљиво одмерите ризике и користи пре него што промените подразумевана подешавања. Не препоручује се потпуно искључивање HTTP заглавља iframe sandboxing или X-Frame-Options HTTP заглавља.

Скривање датотеке са листом уобичајених лозинки

Да би се повећала сложеност напада грубом употребом лозинке, препоручује се ограничавање приступа датотеци ui/data/top_passwords.txt. Ова датотека садржи листу најчешћих лозинки специфичних за контекст и спречава кориснике да постављају такве лозинке (ако је параметар Избегавајте лозинке које је лако погодити омогућен у политици лозинки).

Да бисте ограничили приступ датотеци top_passwords.txt, измените конфигурацију веб сервера.

На Apache-у, приступ датотеци се може ограничити помоћу датотеке .htaccess:

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

На NGINX-у, приступ фајловима може бити ограничен коришћењем директиве location:

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