W drugiej części artykułu na temat Zabbix przyjrzymy się nietrywialnemu zagadnieniu, jakim jest konfiguracja tego oprogramowania. W pierwszej części artykułu udało nam się zainstalować serwer Zabbix razem z panelem administracyjnym dostępnym pod „twojadomena.com/zabbix”, a także agenta (jeśli oczywiście wybraliśmy agentową wersję).

 

Czym jest agent?

Warto zadać sobie pytanie: jak administrator jest w stanie skonfigurować serwer do przesyłania danych na temat swojego stanu? Można podejrzewać, że przecież chyba nie każdy serwer wysyła takie dane, a tym bardziej nie udostępnia ich publicznie. Tutaj z pomocą administratorom przychodzi tzw. oprogramowanie agentowe. Agent jest aplikacją instalowaną w systemie serwera, który chce monitorować administrator. Takie programy można podzielić na wiele kategorii, ale najważniejsze w naszej ocenie to fakt czy agent jest pasywny czy aktywny.            
- agent pasywny – odpowiada na zapytania serwera, nasłuchując przychodzących połączeń na określonym porcie. Sam nie inicjuje połączenia z serwerem. Używany, gdy monitorowane urządzenie jest widoczne w Internecie     
- agent aktywny – agent inicjuje połączenie z nasłuchującym serwerem. Stosowany, gdy monitorujemy urządzenie niewidoczne z Internetu np. komputer z domowej sieci lokalnej.

Ponieważ artykuł dotyczy monitorowania serwerów, to zakładamy, że są one dostępne z poziomu Internetu i że stosujemy monitoring pasywny.  

Rysunek 1 Konfiguracja agenta w zakładce "hosts" oprogramowania Zabbix

 

W miarę postępu artykułu będziemy analizować czym są parametry widoczne na zdjęciu. Na razie pola, które możemy uznać za istotne, to:

- Host name – nazwa hosta, która powinna być zgodna z nazwą znajdującą się w pliku /etc/zabbix/zabbix_agentd.conf na serwerze, na którym zainstalowany jest agent
- Visible name – nazwa, która pokazywana jest w panelu administratora
- Interfaces – Interfejsy, na które się łączymy, żeby komunikować się z agentem. Może to być adres ip lub nazwa domenowa (o ile taką skonfigurujemy na monitorowanym serwerze). Tutaj jest to adres lokalny 127.0.0.1, ponieważ serwer Zabbix oraz agent Zabbix znajdują się na tej samej maszynie.

 

Instalacja agenta na serwerze zdalnym

Oprócz monitorowania własnego serwera Zabbix warto zadać sobie pytanie: jak skonfigurować agenta na innym serwerze, z którego dane chcemy pozyskiwać? Należy oczywiście zakupić osobny serwer, a następnie postępować według instrukcji z tej strony https://www.zabbix.com/download. Tak jak w przypadku Zabbix Server, oprogramowanie agentowe jest zależne od dystrybucji oraz wersji Zabbixa, na jaką się zdecydowaliśmy.

Rysunek 2 Wybór oprogramowania agentowego ze strony Zabbix

 

W tym przypadku potrzebna będzie jednak edycja konfiguracji, ponieważ serwer ma inny adres ip. Po instalacji przechodzimy do folderu /etc/zabbix i tam w pliku zabbix_agentd.conf uzupełniamy dwie linie do monitoringu pasywnego i aktywnego:
Server=nazwaDomenowaSerwera.com
ServerActive=nazwaDomenowaSerwera.com
Hostname=nazwa_agenta

Aby zastosować zmiany należy uruchomić ponownie agenta. W dystrybucji Debian robimy to za pomocą:
sudo service zabbix-agent restart
sudo service zabbix-agent status

Rysunek 3 Reset agenta Zabbix i sprawdzenie jego statusu

 

Następnie należy dodać agenta za pomocą panelu administratora Zabbix pamiętając, że Host name musi być taki jak ten, który zdefniowaliśmy w konfiguracji zabbix_agentd.conf. Jeśli wszystko wykonaliśmy poprawnie, to agent powinien pojawić się w zakładce hosts w panelu administratora naszego serwera monitorującego.

 

Dodatkowe środki ochrony

W tym momencie konfiguracji interfejs sieciowy agenta jest wystawiony na świat i każdy może się z nim połączyć. Ponieważ stosujemy model pasywny, w którym to serwer odpytuje agenta, należałoby skonfigurować odpowiednie reguły firewall’a tak, aby jedynym przepuszczanym ruchem na porcie agenta był ten pochodzący z serwera. Można to zrobić wpisując następującą komendę:

sudo iptables -A INPUT -p tcp --dport 10050 ! -s xx.xx.xx.xx -j DROP

gdzie x to adres ip serwera Zabbix. Następnie możemy użyć:

iptables –L

aby sprawdzić, czy dana reguła została zastosowana.

Rysunek 4 Przykładowa zawartość iptables z regułą blokowania

 

Takie reguły firewall’a można też często konfigurować z poziomu panelu administratora serwera VPS, którego kupiliśmy u dostawcy. Warto to sprawdzić, ponieważ takie reguły można w prosty sposób włączać i wyłączać w razie potrzeby.

 

Szyfrowanie

Pomimo tego, że dotychczasowa konfiguracja jest dość bezpieczna, to jednak w dalszym ciągu dane płynące z naszego serwera agentowego są wysyłane jako nieszyfrowany ciąg znaków. Zabbix pozwala na rozwiązanie tego problemu na dwa sposoby:
- poprzez zastosowanie współdzielonego hasła (PSK)
- poprzez zastosowanie certyfikatu

My zajmiemy się bardziej podstawową metodą tj. PSK (ang. Pre-shared key). W tym celu na serwerze z agentem należy wykonać następujące polecenia:

cd /home
mkdir zabbix
cd zabbix
openssl rand -hex 32 > secret.psk
chown zabbix:zabbix secret.psk
chmod 640 secret.psk

 

Następnie należy zmodyfikować plik /etc/zabbix/zabbix_agentd.conf dopisując następujące linie:

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/home/zabbix/secret.psk
TLSPSKIdentity=your_agent_hostame

oraz koniecznie przeładować konfigurację z użyciem komend:

sudo service zabbix-agent restart
sudo service zabbix-agent status

Finalnym etapem konfiguracji jest zalogowanie się na serwer Zabbix poprzez panel administratora i zmiana konfiguracji w zakładce Monitoring->Hosts. Należy uzupełnić podane w agencie identity oraz wygenerowany klucz.

Rysunek 5 Widok ustawień szyfrowania z poziomu panelu administratora serwera Zabbix

 

Podsumowanie

Udało nam się skonfigurować agenta na zdalnym serwerze oraz zapewnić ochronę firewallem i warstwą szyfrowania. Jeżeli występują błędy w konfiguracji, należy sprawdzić wielkość liter oraz poprawność wprowadzonych zmian. W następnym artykule pokażemy jak obsługiwać panel administratora, jakie opcje są dostępne i jakie dokładnie informacje możemy uzyskać. 

 

Źródła:

https://www.zabbix.com/download
https://www.zabbix.com/documentation/1.8/en/manual/installation/requirements