Często możecie w naszym serwisie poczytać o konfigurowaniu bezpieczeństwa różnych usług i produktów. Bezpieczeństwo to jednak nie tylko prawidłowa konfiguracja – to także, a może przede wszystkim, odpowiedni monitoring.
Sezon urlopowy jest w pełni, a nic nie psuje urlopu administratora bardziej niż konieczność jego przerwania z powodu awarii i spędzenie doby przed ekranem, by wszystko zaczęło znowu działać. W szybkiej diagnostyce problemu (a często i jego rozwiązaniu) może Wam pomoc dobrze skonfigurowana usługa monitoringu. To naprawdę proste – poczytajcie i pooglądajcie poniżej.
We współpracy z firmą ArubaCloud pokazaliśmy Wam, jak postawić swój serwer backupów, jak skonfigurować własny serwer VPN i podłączyć do niego komputer, telefony komórkowe oraz domowy ruter a także jak schować się przed cenzurą sieci i jak zacząć serwer zabezpieczać, jak postawić swój własny zdalny pulpit, swój serwer WWW, jak monitorować zmiany w plikach, jak zablokować reklamy na komórce, jak skonfigurować bezpieczną kopię zapasową a także jak zabezpieczyć logowanie do serwera za pomocą jednorazowych tokenów lub za pomocą klucza Yubikey.
Jeśli nie macie jeszcze swojego własnego serwera, to jest to dobra okazja by się w taki wyposażyć. Aruba oferuje dwa miesiące korzystania ze swojego podstawowego serwera gratis – a po zakończeniu promocji będzie on Was kosztował zaledwie 4 złote miesięcznie. Instrukcję jak krok po kroku skorzystać z promocji i uruchomić swój serwer znajdziecie w tym artykule. Jeśli macie już swój serwer – to zapraszamy do lektury kolejnych akapitów.
Monitorowanie proste i wygodne
Na poniższym filmie zobaczycie cały proces konfiguracji krok po kroku. Jeśli zaś wolicie opis tekstowy – znajdziecie go tuż poniżej.
W systemie Linux dostępnych jest kilka narzędzi ułatwiających monitorowanie zasobów serwera. Jednym z nich jest Munin. W krytycznych sytuacjach, w których wydajność naszego serwera spadnie do zera, korzystając z oprogramowania Munin możemy w łatwy i prosty sposób zdiagnozować problem.
Munin składa się z dwóch komponentów:
- pierwszym komponentem jest munin-master, który łączy się do agentów i zbiera dane, a następnie generuje wykresy,
- drugim komponentem jest munin-node, agent, który instalowany jest na serwerach, które chcemy monitorować.
W niniejszym artykule pokażemy jak skonfigurować główny serwer (pierwszy komponent) wraz z usługą Apache, a następnie zainstalujemy agenta (drugi komponent) na drugim serwerze. Wynikiem końcowym będzie panel w którym będziemy mieli wykresy podobne do poniższego:
Konfiguracja serwera munin-master
Jeśli posiadacie już usługę www, możecie przejść do kolejnego akapitu. Na początku zainstalujemy i skonfigurujemy usługę Apache. Usługa ta przyda nam się do przeglądania wygenerowanych wykresów. Instalujemy Apache2:
# apt install apache2 libcgi-fast-perl libapache2-mod-fcgid
Instalujemy pakiet munin który będzie odpowiedzialny za odpytywanie serwerów agentów co 5 minut:
# apt install munin
Edytujemy plik /etc/munin/munin.conf
# nano /etc/munin/munin.conf
W liniach 8-11 wskazujemy gdzie będą zapisywane dane:
dbdir /var/lib/munin htmldir /var/www/munin logdir /var/log/munin rundir /var/run/munin
Następnie w linii 98 wskazujemy serwer na którym zainstalowany jest agent:
[aruba-node] address 89.40.113.12 use_node_name yes
Tworzymy katalog zdefiniowany w zmiennej htmldir w pliku munin.conf:
# mkdir /var/www/munin # chown munin:munin /var/www/munin
Zabezpieczamy dostęp do strony
Nie zostawiajmy publicznego dostępu do strony /munin (chyba, że chcecie by został kolejnym znienacka odnalezionym wynikiem wyszukiwania w Google) . Utworzymy podstawowe uwierzytelnianie za pomocą loginu i hasła. Tworzymy plik /etc/apache2/.htpasswd_munin w którym będziemy składować hasła:
# htpasswd -c "/etc/apache2/.htpasswd_munin" krystian
Edytujemy plik /etc/apache2/conf-available/munin.conf:
# nano /etc/apache2/conf-available/munin.conf Alias /munin /var/www/munin <Directory /var/www/munin> Options FollowSymLinks SymLinksIfOwnerMatch AllowOverride AuthConfig AuthType Basic AuthName "Restricted Files" AuthUserFile "/etc/apache2/.htpasswd_munin" Require valid-user </Directory> ScriptAlias /munin-cgi/munin-cgi-graph /usr/lib/munin/cgi/munin-cgi-graph <Location /munin-cgi/munin-cgi-graph> Options FollowSymLinks SymLinksIfOwnerMatch AllowOverride AuthConfig AuthType Basic AuthName "Restricted Files" AuthUserFile "/etc/apache2/.htpasswd_munin" Require valid-user <IfModule mod_fcgid.c> SetHandler fcgid-script </IfModule> <IfModule !mod_fcgid.c> SetHandler cgi-script </IfModule> </Location>
Ostatnim etapem na serwerze munin-master jest uruchomienie usługi www:
# systemctl restart apache2
Nie zapomnijcie uruchomić usługi Apache z obsługą certyfikatów SSL – dane przesyłacie otwartym tekstem! Z tego artykułu dowiecie się jak wdrożyć bezpłatne certyfikaty od Let’s encrypt.
Serwer munin-node
Instalujemy agenta munin’a na serwerze munin-node:
# apt install munin-node munin-plugins-extra
Edytujemy plik konfiguracyjny:
# nano /etc/munin/munin-node.conf
Ustawiamy adres IP serwera munin-master – zezwalamy mu na dostęp do usługi:
# allow ^217\.61\.5\.61$
Konfigurujemy usługi które będą monitorowane przez usługę munin (korzystamy z sugestii skryptu):
# munin-node-configure --suggest --shell | bash
W celu wprowadzenia zmian restartujemy usługę munin-node:
# service munin-node restart
Nie chcemy oczywiście aby wszyscy mieli dostęp do naszego agenta munin’a. Jeśli nie posiadacie żadnych reguł firewall’a, to poniżej znajdziecie przykładową konfigurację:
iptables -A INPUT -i lo -j ACCEPT # loopback iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT #zezwalamy na dostęp do SSH iptables -A INPUT -s 217.61.5.61 -p tcp --dport 4949 -j ACCEPT # zezwalamy na dostęp munin-master do portu 4949 (port agenta munin) iptables -A INPUT -j DROP # blokujemy pozostałe
Instalujemy pakiet iptables-persistent by uruchamiać reguły firewall’a podczas startu systemu:
# apt install iptables-persistent
Zapisujemy obecną konfigurację firewall’a do pliku:
# iptables-save > /etc/iptables/rules.v4
Nasz prosty monitoring jest gotowy i relatywnie bezpieczny. Administratorzy, którzy chcą urlop spędzić spokojnie mając pod ręką nieco więcej niż tylko standardowe wykresy, powinni zainteresować się pakietem Zabbix, Nagios lub Cacti. Jeśli interesuje Was ten temat – dajcie znać, a dzięki Aruba Cloud rozwiniemy go w którymś z kolejnych odcinków.
Dla zachowania pełnej przejrzystości – artykuł ten to tekst sponsorowany, za który otrzymujemy wynagrodzenie.
Komentarze
A do monitorowania serwerów MS co polecacie ? PRTG ?
Zabbix ma wsparcie dla Windowsa tez.
Ja polecam jednak Zabbixa instaluje się go szybko i jest dość przyjemny w obsłudze: https://piestrzynski.pl/zabbix-server-2-4-instalacja-debian/
Jak dla mnie temat fajny i przydatny. Byłoby miło jakbyście rozwinęli temat w kierunku np. Zabbixa
Zabbix, więcej o Zabbiksie poproszę.
Tylko zabbix z darmowych…
Więcej o Zabbixie.
Czy jeżeli mam dwa serwery, to czy jeden może być agentem i masterem naraz?
Oczywiście. Dlatego w przykładowym firewallu zezwolono na połączenia dla loopback, właśnie w tym celu.
Munin i munin-agent to dwa oddzielne pakiety które mogą być zainstalowane na jednym, tym samym serwerze.
No proszę, a ja myślałem ze w Linuxie po to jest Apparmor albo SELinux, po to jest podsystem Cgroup i w tej chwili tymczasowo dwa firewalle, konfigurowane przez iptables i nftables, żeby serwer SAM się przypilnował. xD
Do tego tylko system raportowania o krytycznych zdarzeniach na maila (np error przy backupie bazy danych, jakaś usługa nie wstaje, nieudane aktualizacje, miejsce na dyskach i stan dysków), i gotowe.
O ile mi wiadomo, Cron, Monit i Smartd potrafią wysyłać maile. xD
Pozdro
Twoj komentarz jest w ogole nie na temat.
Jest na temat, wyczuwam po prostu, iż Kolega nie potrzebuje ładnych wykresów (i podobnież niepotrzebnie otwartych portów).
Ja po prostu tak konfiguruję serwery, żeby można je było zostawić na miesiąc bez dozoru, nie martwiąc się o działanie takiej maszyny.
Chociaż po zamknięciu całkowitym projektu Grsecurity robota mi się zdrowo skomplikowała, ale jak na razie daję sobie radę.
Pozdro
Ja polecam jeszcze Zabbixa i LibreNMS + Service Monitoring z checkerami z nagiosa.
Warto też zainteresować się czymś nowszym na nodejs:
https://github.com/firehol/netdata
Tak w ogóle to faktycznie warto pisać o nowszych i superlekkich oraz mało zasobożernych rozwiązaniach (np. jak wspominają inni na nodejs lub wręcz ncurses)…chociażby w kontekście tego „superbohatera” za 4 zeta z aruba. :D
A o check_mk to co, zapomnieli? :)