Przejdź do głównej zawartości

Bezpośrednie połączenie bez TrapDaemon

Możliwa jest konfiguracja sensora bez instalacji programu TrapDaemon na nim. W takim wypadku, aplikacja TrapInit łączy się bezpośrednio z serwerem sensora korzystając z SSH i komunikując się z Docker API przez SSH.

ważne

Jest to bardziej zaawansowana konfiguracja, która wymaga poprawnego skonfigurowania sieci i SSH pomiędzy TrapInit i SSH.

Nie jest to zalecane podejście i w przyszłości może zostać usunięte z aplikacji. Zalecamy skorzystanie z TrapDaemon.

Przygotowanie sensorów

Aby móc dodawać instancje pułapek, należy przygotować w tym celu sensory. Są to maszyny wirtualne, na których zainstalowany jest Docker. TrapInit komunikuje się z uruchomioną instancją Docker na maszynie sensora poprzez SSH, wykorzystując autentykację za pomocą kluczy SSH.

notatka

Można także użyć lokalnego połączenia z użyciem TCP lub UNIX jeśli aplikacja i sensor znajdują się na tej samej maszynie, lecz nie jest to zalecane rozwiązanie. Może ono powodować problemy przy komunikacji pomiędzy panelem TrapInit i pułapkami.

Konfiguracja sensora

Podczas konfiguracji zdalnego sensora, pamiętaj o kilku krokach:

  • Użytkownik, który będzie wykorzystywany do łączenia się poprzez SSH, musi należeć do grupy docker.

  • Należy wygenerować nową parę kluczy SSH dla aplikacji TrapInit

  • Podczas generowania kluczy, należy pamiętać, aby nie były one zabezpieczone hasłem.

notatka

Zaleca się użycie dystrybucji Debian.

Nowsze systemy, jak na przykład Ubuntu od wersji 22, wymagają przesyłania klucza z wykorzystaniem SHA-2. Z powodów technicznych, w tym momencie nie jest to obsługiwane w naszym rozwiązaniu. Zaleca się użyć w takim przypadku ed25519 lub ecdsa. Są to nowsze i bezpieczniejsze algorytmy szyfrowania.

Poprawne klucze można wygenerować za pomocą np. takich komend:

ssh-keygen -a 100 -t ed25519 -f ~/ssh-key -N ''
ssh-keygen -b 521 -t ecdsa -f ~/ssh-key -N ''

Powyższe polecenia generują klucze publiczne i prywatne dla algorytmów ed25519 i ecdsa.

Upewnij się, że klucz publiczny został dodany do pliku authorized_keys sensora, co umożliwi uwierzytelnianie SSH za pomocą tego klucza.

Można to zrobić np. za pomocą poniższej komendy, po wcześniejszym przekopiowaniu publicznego klucza (z zakończeniem .pub) na sensor:

cat ~/ssh-key.pub >> ~/.ssh/authorized_keys
wskazówka

Możliwe jest zastąpienie Docker'a programem Podman - więcej informacji na oddzielnej stronie.

Dodanie sensora

Po przejściu do odpowiedniej zakładki na lewym panelu ukaże nam się okno do dodawania i zarządzania sensorami

Strona z sensorami

Klikając w opcję "Nowy sensor, używając bezpośredniego połączenia", pojawi nam się dialog dodawania nowego sensora.

Dialog nowego sensora

Wyodrębniamy w nim następujące pola:

  • Name - widoczna nazwa w pozostałych obszarach aplikacji
  • Protocol - protokół używany do połączenia, dostępne są następujące:
    • SSH - zalecana metoda komunikacji. TrapInit komunikuje się z Docker poprzez SSH. Wymagane jest podanie dodatkowo prywatnego klucza ssh (wklejenie jego zawartości) oraz podanie nazwy użytkownika.
    • TCP - wykorzystywany do połączenia lokalnego w systemie Windows lub dla komunikacji z sensorem Docker zabezpieczonym TLS.
    • UNIX - wykorzystywany do połączenia lokalnego poprzez socket na systemach Unix
  • Host - adres IP lub nazwa hosta gdzie znajduje się sensor, w przypadku UNIX lokalizacja socket
  • Port - numer portu na którym dostępne jest połączenie, pole wymagane przy SSH i TCP
  • User - nazwa użytkownika wykorzystywana do połączenia poprzez SSH
  • SSH private key - klucz prywatny podczas połączenia SSH

Trzy ostatnie pola są pokazywane lub ukrywane, w zależności od wybranego protokołu.

Po uzupełnieniu odpowiednich pól i potwierdzeniu sensor zostanie dodany. Lista ze stworzonymi sensorami może się prezentować następująco:

Lista sensorów

Mamy na niej także możliwość usunięcia sensora, jeśli żadna pułapka go nie używa.

Zapewnienie komunikacji

Serwery, na których postawiona jest aplikacja i sensory, muszą być w tej samej sieci lub być dostępne poprzez sieć publiczną dla siebie nawzajem.