Konfiguracja sensora
Sensory to maszyny, na których uruchamiane będą pułapki aplikacji TrapInit.
Wymagania sprzętowe
Ponieważ pułapki uruchamiane są korzystając z technologii Docker, sensorem musi być maszyna Linux, na której zainstalowana i działająca jest aplikacja Docker.
Działanie programu Docker można zweryfikować szybką komendą:
$ docker run --rm hello-world
W celu instalacji i konfiguracji Docker'a, zalecamy skorzystanie z oficjalnej dokumentacji.
Możliwe jest zastąpienie Docker'a programem Podman - więcej informacji na oddzielnej stronie.
Instalacja TrapDaemon
TrapDaemon to aplikacja uruchamiana na maszynie sensora. Komunikuje się ona z TrapInit, i zarządza pułapkami na maszynie sensora.
Korzysta ona z lokalnego socket'a Docker, aby zarządzać pułapkami.
Domyślnie ten socket znajduje się pod /var/run/docker.sock
.
Należy upewnić się, że użytkownik który będzie używany do uruchamiania
TrapDaemon ma dostęp do tego socket'a.
Domyślnie dostęp ma root
i każdy
użytkownik w grupie docker
. Zalecane jest utworzenie dedykowanego
użytkownika dla TrapDaemon, który nie posiada uprawnień sudo
, ale posiada
dostęp do /var/run/docker.sock
.
TrapDaemon jest dostępny ze strony downloads.traptech.pl, w wersji dla systemów Linux z libc GNU i musl. Większość dystrybucji Linux korzysta z libc GNU.
TrapDaemon możemy także pobrać bezpośrednio za pomocą curl
:
$ mkdir -p ~/.local/bin
$ curl -L downloads.traptech.pl/data/TrapDaemon-v1.0.0 > ~/.local/bin/TrapDaemon
(upewnij się, że pobierasz najnowszą wersję aplikacji).
Po pobraniu zalecamy umieszczenie aplikacji w katalogu ~/.local/bin
użytkownika, który będzie używany do uruchamiania TrapDaemon.
Należy pamiętać o ustawieniu odpowiednich dostępów:
$ chmod 500 ~/.local/bin/TrapDaemon
W końcu, możemy testowo uruchomić aplikację - powinna wyświetlić się dokumentacja opcji programu:
$ ~/.local/bin/TrapDaemon --help
Jeśli pierwsze uruchomienie TrapDaemon nie powiedzie się, może być konieczne doinstalowanie bibliotek zależności aplikacji.
W przypadku dystrybucji z GNU libc wymagane są pakiety (lub ich odpowiedniki,
zależnie od dystrybucji) ca-certificates
, zlib
i libstdc++
.
W przypadku dystrybucji z must libc wymagane są pakiety (lub ich odpowiedniki)
ca-certificates
, zlib
, libgcc
i libstdc++
.
Rejestracja TrapDaemon
Po zainstalowaniu TrapDaemon, możemy go zarejestrować sensor w aplikacji TrapInit. Pozwoli to programowi TrapDaemon na komunikacje z TrapInit i uruchamianie pułapek.
Aby rozpocząć rejestrację, należy użyć przycisku "Nowy sensor, używając TrapDaemon" w menu sensorów:
W nowym dialogu możemy wybrać nazwę sensora. Kliknięcie "Utwórz" wygeneruje nam token rejestracyjny, który pozwoli TrapDaemon na połączenie się z TrapInit.
Posiadając token rejestracyjny, możemy użyć go aby zarejestrować sensor, uruchamiając odpowiednio TrapDaemon. Musimy podać token oraz adres aplikacji TrapInit, po jakim ma się komunikować TrapDaemon. Przykładowe wywołanie TrapDaemon jest podane w dialogu rejestracji sensora.
$ ~/.local/bin/TrapDaemon register -t 0wk8pqhyvx1jznp8g4hdguwv1egjbsf1 -u https://przykladowa-instancja-trapinit.example.com/
Wywołanie powyższej komendy spowoduje, że TrapDaemon połączy się z TrapInit, weryfikując konfigurację sieciową i informując o udanej rejestracji. Następnie, wygeneruje plik konfiguracyjny, w którym przechowuje informacje o połączeniu i konfiguracji sensora (np. lokalizacja socket'a Docker).
Jeśli nasza instancja TrapInit nie posiada podpisanego certyfikatu HTTPS,
możemy użyć flagi --skip-ssl-validation
, aby wyłączyć weryfikację certyfikatu.
Jeśli socket Docker'a znajduje się w innym miejscu niż domyślny, możemy go podać za
pomocą flagi -s
w czasie
rejestracji, lub po rejestracji - zmienić w pliku konfiguracyjnym.
Uruchomienie TrapDaemon jako serwis
Po poprawnej rejestracji sensora i wygenerowaniu pliku konfiguracyjnego, musimy uruchomić TrapDaemon jako serwis systemowy. W tym trybie aplikacja będzie nasłuchiwała żądań od TrapInit i odpowiednio zarządzała pułapkami.
Jeśli nasza dystrybucja Linux korzysta z systemd
, tworzymy plik ~/.config/systemd/user/trapdaemon.service
o
następującej zawartości:
[Unit]
Description=TrapDaemon
[Service]
TimeoutStartSec=0
Restart=always
ExecStart=%h/.local/bin/TrapDaemon run
[Install]
WantedBy=default.target
Po utworzeniu pliku, możemy wystartować serwis wykonując polecenia:
$ systemctl --user daemon-reload
$ systemctl --user enable --now trapdaemon.service
Możemy zweryfikować czy TrapDaemon działa poprawnie za pomocą komendy:
$ systemctl --user status trapdaemon.service