01.08.2017 | 07:04

krystian

Jak spokojnie pojechać na urlop i zaufać systemom monitoringu serwerów

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.

Administratorzy przed urlopem

Artykuł pod patronatem Aruba Cloud

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 pulpitswój serwer WWWjak monitorować zmiany w plikachjak 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.

Powrót

Komentarze

  • 2017.08.01 07:11 Mariusz

    A do monitorowania serwerów MS co polecacie ? PRTG ?

    Odpowiedz
  • 2017.08.01 08:53 Greg

    Jak dla mnie temat fajny i przydatny. Byłoby miło jakbyście rozwinęli temat w kierunku np. Zabbixa

    Odpowiedz
  • 2017.08.01 11:26 Marek

    Zabbix, więcej o Zabbiksie poproszę.

    Odpowiedz
  • 2017.08.01 12:02 Sebastian

    Tylko zabbix z darmowych…

    Odpowiedz
  • 2017.08.01 13:09 Daniel

    Więcej o Zabbixie.

    Odpowiedz
  • 2017.08.01 13:45 Wojtek

    Czy jeżeli mam dwa serwery, to czy jeden może być agentem i masterem naraz?

    Odpowiedz
    • 2017.08.02 08:45 Krystian

      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.

      Odpowiedz
  • 2017.08.01 14:56 Obserwator

    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

    Odpowiedz
    • 2017.08.01 20:30 Trok

      Twoj komentarz jest w ogole nie na temat.

      Odpowiedz
      • 2017.08.02 12:36 Monter

        Jest na temat, wyczuwam po prostu, iż Kolega nie potrzebuje ładnych wykresów (i podobnież niepotrzebnie otwartych portów).

        Odpowiedz
        • 2017.08.02 16:13 Obserwator

          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

          Odpowiedz
  • 2017.08.01 20:31 Trok

    Ja polecam jeszcze Zabbixa i LibreNMS + Service Monitoring z checkerami z nagiosa.

    Odpowiedz
  • 2017.08.02 01:10 oczkers

    Warto też zainteresować się czymś nowszym na nodejs:

    https://github.com/firehol/netdata

    Odpowiedz
  • 2017.08.10 01:15 S.J.

    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

    Odpowiedz
  • 2017.08.17 12:18 olo

    A o check_mk to co, zapomnieli? :)

    Odpowiedz

Zostaw odpowiedź do Tadeusz

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Jak spokojnie pojechać na urlop i zaufać systemom monitoringu serwerów

Komentarze