Miesięcznik informatyków i menedżerów IT sektora publicznego

Kamil Folga

Eksplorowanie systemu przez SQL

Osquery to darmowe narzędzie pozwalające odpytywać system operacyjny tak, jakby był relacyjną bazą danych. Posługuje się zapytaniami podobnymi do SQL, w celu zbierania informacji o wydajności czy bezpieczeństwie systemu operacyjnego.

Sprawdzenie listy procesów powiązanych z portami, protokołami i adresami może zostać zrealizowane z wykorzystaniem zapytania SQL. Warto zwrócić uwagę na ograniczenie liczby wyników do 6.

Osquery to oprogramowanie stworzone przez programistów Facebooka, które traktuje system operacyjny jako bardzo wydajną relacyjną bazę danych. Umożliwia to eksplorację systemu operacyjnego poprzez zapytania bazujące na SQL. Tabele SQL reprezentują aktualny stan parametrów systemu operacyjnego np. połączeń sieciowych, zalogowanych użytkowników, uruchomionych procesów. Tabele SQL są zaimplementowane przez łatwe do rozbudowy API. Osquery jest szczególnie przydatne w zespole reagowania na incydenty. Pozwala zadać zapytanie do jednego lub wielu hostów i otrzymać szybką odpowiedź. Zaletami osquery są możliwość wdrożenia go na wielu platformach systemowych oraz dostępność dokumentacji i przykładowych konfiguracji. Osquery może zostać uruchomiony na Linux, FreeBSD, MacOS, Windows.

Ważne są podstawy

Osquery zbiera informacje z systemu i wkłada je do predefiniowanych tabel. Użytkownik może sprawdzać stan systemu za pomocą zapytań zbliżonych do SQL, eksplorując zdefiniowane tabele. Zapytania mogą zostać wprowadzone przez narzędzie osqueryi, stanowiące interaktywne środowisko SQL. Drugą opcją jest realizacja zapytań przez demona osqueryd, który wykonuje powtarzalne i zaplanowane zapytania, zgodnie z dostępną konfiguracją i harmonogramem. Qsquery po instalacji udostępnia trzy komponenty:

  • skrypt pomocniczy osqueryctl przeznaczony do testowania konfiguracji, a także do zarządzania usługą,
  • demona osqueryd do kolejkowania zapytań i zapisywania zmian w systemie operacyjnym,
  • interaktywną powłokę osqueryi.

Każda tablica w osquery posiada określoną strukturę i ma sprecyzowaną liczbę kolumn, ich typ, a także schemat. Zawartość standardowych tabel jest wypełniana, gdy wykonywane jest na niej zapytanie. W podstawowych i jednorazowych zapytaniach pracujemy w menu interaktywnym osqueryi. Interaktywna konsola osqueryi służy głównie do sprawdzenia interfejsu SQL na potrzeby nowych zapytań oraz eksploracji systemu operacyjnego. W takim modelu trudno jest monitorować właściwości systemów w trybie ciągłym. Osqueryi pozwala jednak szybko i skutecznie diagnozować problemy systemu operacyjnego.

Z kolei tabele bazujące na zdarzeniach zbierają i zapamiętują je w czasie prawie rzeczywistym. Osqueryd to wersja osqueryi w postaci demona służąca do uruchamiania zapytań zgodnie z harmonogramem czasowym. Tabele kolekcjonują zdarzenia, które wydarzą się pomiędzy zdefiniowanym interwałem czasowym. Tu standardowo konfiguracja jest przekazywana przez plik konfiguracyjny, zawierający listę zapytań. Wyniki są logowane do plików. Narzędzie wspiera dwa główne posoby logowania zdarzeń, w zależności od oczekiwanej funkcjonalności: różnicowe (początkowe wyniki są zapamiętywane, a przyszłe zapytanie raportowane tylko, jeżeli zmieniły się od ostatniego zapytania) oraz zrzut (każde zapytanie będzie raportowało tylko aktualny stan tabeli).

Zaawansowane funkcje osquery umożliwiają agregację informacji z wielu tabel na różnych hostach jednocześnie. Osquery jest podstawą użytą do stworzenia kilku innych produktów i narzędzi. Modularna budowa pozwala na podejście do aktualnej koncepcji monitorowania systemów operacyjnych w nowy sposób. W celu ułatwienia wdrożeń osquery zostało wyposażone w paczki dla wszystkich wspieranych systemów operacyjnych, a także w dokładną dokumentację.

Osquery na Ubuntu 18.04

Domyślnie repozytorium Ubuntu nie zawiera pakietu osquery. Twórcy publikują jednak repozytorium stabilnej wersji. Aby je dodać i następnie zainstalować w Ubuntu, należy wykonać następujące polecenia:

$ echo "deb [arch=amd64] https://pkg.osquery.io/deb \
deb main" | sudo tee /etc/apt/sources.list.d/osquery.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com \
--recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
$ sudo apt-get update
$ sudo apt-get install osquery

Osquery może być uruchomione z linii komend z wykorzystaniem interaktywnej wersji osqueryi lub demona osqueryd. Osqueryi wymaga pracy z uprawnieniami użytkownika root. Procesem uruchomienia, zatrzymania, restartu demona osque­ryd zarządzamy przez skrypt osqueryctl:

$ osqueryctl -h
Usage: /usr/bin/osqueryctl {clean|config-check|start|\
stop|status|restart}
$ osqueryctl start osqueryd
$ osqueryctl stop osqueryd
$ osqueryctl restart osqueryd

Przykłady zapytań

Podstawowe zapytania są łatwe do tworzenia (patrz: ramka „Podstawowe opcje osquery”). Dostępne tabele dla wykorzystywanego systemu operacyjnego możemy sprawdzić, wydając polecenie .tables. Z kolei schemat tabel możemy wyświetlić, wpisując komendę .schema. Jeżeli więc chcielibyśmy sprawdzić ostanie logowania do systemu, to znajdziemy je w tabeli last:

osquery> select * from last;

[...]

Autor zawodowo zajmuje się informatyką ze specjalizacją w zakresie bezpieczeństwa sieci. Publikuje w magazynach komputerowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej