Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
Czy zastanawiałeś się kiedyś jak wygląda praca administratora serwerów? Jak to możliwe, że jeden administrator zarządza dziesiątkami, setkami lub tysiącami maszyn? Już pojedyncze urządzenie to problem w konfiguracji, operowaniu czy utrzymaniu, a co dopiero większe rzędy wielkości. Problem skalowania istnieje w wielu branżach, w tym w sektorze informatycznym. Bez odpowiedniego podejścia, narzędzi i wiedzy nie da się efektywnie zarządzać infrastrukturą serwerową ze względu na poziom jej skomplikowania oraz ilość danych, którą należy przetwarzać w celu wyciągnięcia prawidłowych wniosków na jej temat. Na szczęście istnieje wiele metod, które pomagają administratorom w ich codziennych działaniach. Wśród nich można wymienić takie rozwiązania jak jak:
- podejście IAC (ang. Infrastructure as a Code) – np. Terraform,
- automatyzacja – np. Ansible, Chef, Puppet,
- konteneryzacja i klasteryzacja – np. Docker, Vagrant, Kubernetes, Docker Swarm,
- monitoring – Zabbx, Nagios, Prometheus.
Dzisiaj jako Innokrea zajmiemy się ostatnią kategorią i pokażemy jak efektywnie monitorować swoją infrastrukturę oraz jak zainstalować i obsługiwać oprogramowanie Zabbix.
Rysunek 1. Widok z panelu administratora Zabbix
Zakup serwera i domeny
W celu zainstalowania oprogramowania należy wybrać serwer VPS spełniający odpowiednie wymagania dotyczące zasobów. Dokumentacja Zabbixa określa minimalne wymagania na 128 MB pamięci RAM oraz 256 MB pamięci dyskowej. Jeśli jednak serwer faktycznie ma służyć czemuś więcej niż treningowi początkującego administratora, to należy także wziąć pod uwagę, że obciążenie znacząco się zwiększa jeśli zbieramy i przetwarzamy duże ilości danych z wielu urządzeń. Dla dwóch urządzeń wysyłających około 260 parametrów, które są rysowane na wykresach na serwerze zajętość pamięci RAM serwera lekko przekracza 1 GB. Dodatkowo warto kupić domenę po to by następnie skonfigurować certyfikat i wymóc na serwerze szyfrowanie danych poprzez protokół HTTPS. Należy również pamiętać, że należy odpowiednio skonfigurować domenę, aby wskazywała na nasz serwer VPS.
Rysunek 2. Tabela wymagań z dokumentacji Zabbix
Przed zakupem VPS’a warto również zapoznać się jakie dystrybucje systemu Linux są wspierane przez Zabbix oraz czy każdy komponent (serwer, agent, proxy) jest oferowany na daną platformę. Zwiększamy w ten sposób prawdopodobieństwo bezproblemowej instalacji i działania oprogramowania na serwerze.
Instalacja
Przed instalacją warto wykonać polecenia (mogą być inne w zależności od wybranej dystrybucji systemu Linux):
sudo apt-get update && sudo apt-get upgrade
Pobierze ono informacje o najnowszych paczkach z repozytorium oraz pobierze i zaktualizuje zależności do najnowszej możliwej wersji.
Jeśli chodzi o oprogramowanie administracyjne, poleca się wybierać wersję oznaczoną jako LTS, czyli Long Term Support. Oznacza ona, że oprogramowanie ma wsparcie producenta i będzie aktualizowane. Wybieramy wersję, system na którym instalujemy, komponent (w tym przypadku serwer i frontend), bazę danych i webserwer na którym znajdzie się panel administratora. W przypadku prezentowanej instalacji wybrano kolejno: 6.0 LTS, Debian 10, Server Frontend Agent, MySQL, Apache. W celu zainstalowania serwera skorzystamy z dokumentacji Zabbix, która dokładnie przeprowadza administratora przez ten proces. https://www.zabbix.com/download Następnie, po wejściu naszą domenę (lub adres ip, jeśli nie mamy domeny) powinien ukazać się panel instalacyjny, który należy przejść.
Rysunek 3. Instalator widoczny z poziomu przeglądarki
Certyfikat
Istotnym elementem wpływającym na bezpieczeństwo administracji jest zainstalowanie certyfikatu, który pozwala na szyfrowanie połączenia pomiędzy administratorem a jego panelem Zabbix. Istnieje wiele sposobów na zapewnienie takiego certyfikatu i wgranie, ale najprostszym wydaje się pozyskanie go od firmy Let’s Encrypt, w której taka usługa jest darmowa. Ponieważ korzystamy z serwera Apache, można skorzystać z oprogramowania Certbot, które w imieniu administratora wykona zapytanie do urzędu certyfikacji, a następnie pozyska i zainstaluje certyfikat. Należy jednak pamiętać o wyłączeniu dodatkowych reguł firewalla na serwerze lub po stronie panelu administratora, ponieważ serwer CA (ang. Certification Authority) może nie być w stanie zweryfikować tego, czy domena należy do nas jeśli będzie blokowała to jakaś zapora.
Należy zainstalować Certbota:
apt-get install certbot
A następnie wykonać komendę:
certbot –apache
Druga komenda spowoduje wykonanie tak zwanego HTTP-01 challenge poprzez protokół ACME i potwierdzi to, że domena, która została przypisana do serwera faktycznie do nas należy. Jeżeli chcielibyśmy zautomatyzować proces odnowienia certyfikatu, to należałoby to zrobić np. poprzez program cron w systemie Linux. Warto sprawdzić, czy możliwe jest odnowienie certyfikatu poprzez następującą komendę
sudo certbot renew –dry-run –agree-tos
Przełącznik „—dry-run” powoduje, że będzie to jedynie próba, a nie prawdziwe odnowienie.
Jeśli ten sposób nie zadziałał, możemy także wykonać go manualnie z użyciem tych komend:
apt-get install letsencrypt
apt-get install python-pip
pip install –upgrade pip
pip install certbot
certbot certonly –manual –preferred-challenges dns –email admin@exampledomain.pl –domains *. exampledomain.pl
Instalacja takiego certyfikatu wykracza jednak poza ten artykuł ze względu na różnice w wersjach systemu oraz w samym webserwerze Apache. Manualny certyfikat w tym przypadku zostanie zainstalowany z użyciem DNS ACME Challenge, co wymaga dodania odpowiedniego rekordu TXT do strefy DNS. Jeśli chcielibyśmy zautomatyzować ten proces, to będzie to wymagało połączenia z API naszego dostawcy DNS. Tu warto dodać że nie każdy dostawca wystawia API pozwalające na automatyczne dodawanie rekordu TXT. W źródłach jednak znajdują się stosowne linki do artykułów omawiających ten proces dokładniej.
Po zainstalowaniu należy zmienić także wybrane przy instalacji oprogramowania Zabbix hasło administratora, ponieważ nie zostało ono ustalone poprzez bezpieczny kanał komunikacji.
Rysunek 4. Edycja ścieżek do certyfikatu w konfiguracji serwera Apache. Plik default-le-ssl.conf
Przekierowanie ruchu na https
W przypadku automatycznego montowania certyfikatu z użyciem przełącznika „–apache” zostaniemy zapytani czy chcemy przekierować cały ruch na szyfrowany kanał – należy potwierdzić tę opcję. W przypadku manualnego wgrywania certyfikatu, to administrator jest odpowiedzialny za przekierowanie ruchu poprzez wpisanie odpowiednich reguł do pliku httpd.conf (lub innego pliku konfiguracji webserwera – w zależności od wersji, z jakiej korzystamy).
Podsumowanie
Ze względu na ciągłe zmiany w oprogramowaniu instalacja może przysporzyć kłopotów nawet doświadczonym administratorom. Podstawowym kryterium, które decyduje o naszym sukcesie w tym przypadku jest odpowiedni dobór dystrybucji Linuxa oraz wersji oprogramowania Zabbix. Niezależnie od wszystkiego warto także pamiętać o wybraniu odpowiednio silnych haseł – obojętnie, czy ustawiamy je do połączenia SSH, konta w systemie Linux, bazy danych czy do panelu administracyjnego systemu. W następnym artykule opisujemy m.in. jak skonfigurować bezpiecznie zdalnego agenta na serwerze.
Źródła:
https://www.freecodecamp.org/news/sudo-apt-get-update-vs-upgrade-what-is-the-difference/ https://www.zabbix.com/download
https://www.zabbix.com/documentation/1.8/en/manual/installation/requirements
https://letsencrypt.org/docs/challenge-types/
https://www.cyberciti.biz/faq/issue-lets-encrypt-wildcard-certificate-with-acme-sh-and-cloudflare-dns/
https://gist.github.com/samson-sham/b23fbbfc2b165f9763dc920470303e9c
https://eff-certbot.readthedocs.io/en/stable/using.html