W dzisiejszym dynamicznym świecie IT, gdzie cyberzagrożenia rosną w zastraszającym tempie, niezbędne jest posiadanie narzędzi umożliwiających efektywne zarządzanie bezpieczeństwem systemów. Jednym z takich narzędzi jest Lynis, wszechstronny i potężny skaner bezpieczeństwa dla systemów Linux, Unix i macOS. W tym artykule pokażę wam, czym jest Lynis, jakie są jego główne funkcje oraz jak skutecznie go wykorzystać w systemie. Na potrzeby tego artykułu wykorzystamy Debiana w najnowszej wersji 12-stej. 

Lynis – co to jest

Lynis to otwartoźródłowe narzędzie do audytu bezpieczeństwa, rozwijane przez firmę CISOfy. Jego głównym celem jest ocena konfiguracji systemów operacyjnych, aplikacji oraz ich zabezpieczeń, aby zidentyfikować potencjalne luki i obszary wymagające poprawy. Oferując szerokie spektrum funkcji, pomaga on w ocenie i poprawie bezpieczeństwa infrastruktury IT. Narzędzie to przeprowadza szczegółowe analizy konfiguracji systemu, uprawnień, polityk bezpieczeństwa oraz dostępnych usług. Identyfikuje potencjalne luki i obszary wymagające poprawy. Jego zalety obejmują łatwość instalacji i użytkowania, możliwość dostosowania do specyficznych potrzeb użytkownika oraz wsparcie dla różnych standardów bezpieczeństwa takich jak ISO 27001, PCI-DSS czy HIPAA. Lynis umożliwia także testy penetracyjne, monitorowanie integralności systemu oraz generowanie szczegółowych raportów z rekomendacjami dotyczącymi poprawy bezpieczeństwa. Dzięki możliwości integracji z systemami SIEM oraz automatyzacji audytów, Lynis staje się nieocenionym narzędziem dla administratorów systemów oraz specjalistów ds. bezpieczeństwa, którzy pragną skutecznie chronić swoje środowisko IT przed zagrożeniami. 

Instalacja w systemie i uruchomienie podstawowego audytu 

apt install lynis -y 

lynis audit system 

To polecenie uruchomi pełny audyt systemu, sprawdzając konfigurację, uprawnienia, usługi i inne kluczowe aspekty bezpieczeństwa. Po zakończeniu audytu Lynis wygeneruje szczegółowy raport zawierający wykryte problemy oraz rekomendacje. 

Poniżej kilka przykładowych screenów z działania aplikacji oraz wyglądu. To o czym już wcześniej przy okazji kilku artykułów wspominałem to fakt, że samo zainstalowanie najnowszej wersji systemu operacyjnego, a także utrzymywanie jego aktualnej wersji wraz z aktualnymi wersjami pakietów to zdecydowanie za mało. Na potrzeby tego artykułu zainstalowałem zupełnie czysty, goły system z jakimiś usługami postawowymi jak apache czy php czy dns. Czy są one w pełni bezpieczne na domyślnych ustawieniach? Spójrzmy na zrzuty i poniżej na komentarz. 

Jak widać domyślne ustawienia nigdy nie są w pełni zadowalające i choć nie widać na pierwszy rzut oka krytycznych dziur to jednak same ustawienia poszczególnych aplikacji zwiększają ryzyko.

W całości mamy tu zatem 49 zaleceń do poprawki. Przypomnę tylko, że jest to goły system z apache, php i dns.

Na pocieszenie można dodać, że wszystkie wykryte luki bezpieczeństwa Lynis opisał dość dobrze w swojej dokumentacji zatem po przejściu na ich stronę z podanego linka dowiemy się jak poprawić daną lukę bezpieczeństwa.

Przykładowo:

Konfiguracja personalizowanych audytów

Plik konfiguracyjny /etc/lynis/default.prf jest centralnym miejscem, w którym można dostosować działanie skanera do specyficznych potrzeb użytkownika lub organizacji. Konfiguracja audytów za pomocą tego pliku pozwala na precyzyjne kontrolowanie, które testy są uruchamiane, jakie są poziomy szczegółowości raportów oraz wiele innych parametrów. Poniżej postaram się omówić najważniejsze opcje konfiguracyjne oraz zalecenia dotyczące ich ustawień.

Przykładowa konfiguracja w pliku /etc/lynis/default.prf

# Skip specific tests

skip-test=TEST-1234,TEST-5678

# Log file location

log-file=/var/log/lynis.log

# Verbose mode (1 to enable, 0 to disable)

verbose=1

# Color output (1 to enable, 0 to disable)

color=1

# Cronjob mode (1 to enable, 0 to disable)

cronjob=1

# Upload results to a remote server

upload-url=https://server.domena.pl/siem/audits

Samo narzędzie jest niezwykle intuicyjne I skonfigurowane od razu do działania tak, aby wykonać wszystkie testy. Czasem jednak jakiegoś testu przeprowadzać nie chcemy, wtedy możemy go właśnie w tym pliku wyłączyć. Jednak jak znacie mnie z władców sieci, zalecam zawsze aby jednak testy wykonywać „na maksa”.

Najważniejsze opcje konfiguracyjne

skip-test:

Opcja, która pozwala na pominięcie określonych testów podczas audytu. Może być użyteczna, gdy wiemy, że pewne testy nie mają zastosowania do naszego środowiska lub chcemy zaoszczędzić czas. Przykładowo, aby pominąć testy o identyfikatorach TEST-1234 i TEST-5678:

skip-test=TEST-1234,TEST-5678

log-file

Umożliwia z kolei określenie pliku, do którego mają być zapisywane logi z audytu. Domyślnie Lynis zapisuje logi w /var/log/lynis.log, ale możemy to zmienić:

log-file=/ścieżka/do/pliku/lynis.log

verbose

Włącza tryb szczegółowego logowania, co jest przydatne podczas debugowania lub gdy chcemy uzyskać bardziej szczegółowe informacje o przebiegu audytu. Ustawienie tej opcji na 1 włącza tryb szczegółowy. Użycie opcji verbose oraz log-file pozwala na dokładne śledzenie przebiegu audytu i zachowanie pełnej historii zmian oraz problemów, które mogą być później analizowane.

verbose=1

color

Określa, czy wyniki audytu mają być wyświetlane w kolorze. Ustawienie tej opcji na 1 włącza kolorowe wyjście, co może ułatwić czytelność raportów. Jest to szczególnie pomocne jak można zajrzeć na powyższe screeny, aby od razu rzucić nasz wzrok na problemy.

color=1

cronjob

Umożliwia uruchamianie Lynis w trybie cron, co jest przydatne do automatyzacji regularnych audytów. Włączenie tej opcji powoduje, że Lynis działa w trybie bez interakcji z użytkownikiem. Ustawienie opcji cronjob i skonfigurowanie odpowiedniego zadania cron pozwala na regularne przeprowadzanie audytów. Dzięki temu mamy pewność, że system jest regularnie sprawdzany pod kątem nowych zagrożeń.

cronjob=1

upload

Pozwala na automatyczne przesyłanie wyników audytu na zewnętrzny serwer. Może to być użyteczne w przypadku integracji z systemami centralnego zarządzania logami lub systemami SIEM.

upload-url=https://server.domena.pl/siem/audits

Automatyzacja wykonywania testów

Crontab

Jak już wiemy, narzędzie to może działać z crona, aby wykonywać automatyczne testy. Jak zaplanować takie zadanie w crontabie?

Na przykład, niech testy uruchamiają się każdej nocy o północy.

0 0 * * * /usr/bin/lynis audit system –cronjob > /var/log/lynis/cron_audit.log 2>&1

Integracja z Ansible

Z pomocą przyjdzie nam także moduł Ansible, o którym już pisałem na władcach. Przy pomocy prostego playbooka możemy zautomatyzować wykonywanie testów na wielu różnych serwerach.

Przykład playbooka:

– hosts: all

  become: yes

  tasks:

    – name: Install Lynis

      apt:

        name: lynis

        state: present

    – name: Run Lynis audit

      command: lynis audit system

      register: lynis_output

    – name: Display Lynis audit results

      debug:

        var: lynis_output.stdout

Raportowanie

Poza standardowymi opcjami ogranicza właściwie nasz tylko nasza kreatywność bowiem istnieją sposoby dzięki, którym możemy skonwertować do postaci HTML raporty Lynisa.

Skrypt do konwersji raportów:

#!/bin/bash

lynis audit system –cronjob > /var/log/lynis/cron_audit.log 2>&1

cat /var/log/lynis/cron_audit.log | ansi2html > /var/log/lynis/cron_audit.html

Co da nam efekt raportu Lynisa do przeglądarki.

Niestety w standardowym przypadku nie mamy kolorowanego raportu, ale I to da się zmienić I wygenerować raport tak, aby zawierał kolory.

Potrzebne nam do tego narzędzie:

apt install bsdutils -y

Odpowiednio zmodyfikowany skrypt:

script -c „lynis audit system” /var/log/lynis/lynis_audit_colored.log

cat /var/log/lynis/lynis_audit_colored.log | ansi2html > /var/log/lynis/cron_audit_colored.html

Efektem będzie kolorowy raport html.