Debugowanie kontenerów w kubernetesie – część 2

Po poprzedniej części zapraszam na kolejną, pokazującą jak poradzić sobie z ograniczeniami które wprowadza Kubernetes podczas debugowania aplikacji sieciowych.

Wykonanie pojedynczego polecenia/shelll

kubectl -n my_namespace exec -it pod -- /bin/some_command

Gdzie zwykle /bin/some_command można zastąpić /bin/bash

Kontener do debugowania

kubectl debug my_pod_name -n my_namespace -it --image=ubuntu:latest /bin/bash

Powyższe spowoduje uruchomienie nowego kontenera w tym samym podzie. Dzięki temu możemy połączyć się do localhost (127.0.0.1) i sprawdzić jak działają nasze serwisy za pomocą curl/wget. W trybie debug mamy też dostęp do roota, dzięki czemu hardening właściwej aplikacji nie jest aż tak straszny i nie ogranicza nas, np. w zainstalowaniu nowych paczek. Taki kontener nie współdzieli też systemu plików z oryginalnymi kontenerami z poda, dzięki temu nie namieszamy zbyt dużo.

Lepszy kontener do debugowania

kubectl debug my_pod_name -n my_namespace -it --image=ubuntu:latest --share-processes -c container_name --copy-to=mg-debug

Jest to trochę bardziej rozbudowana wersja poprzedniego polecenia. Odpalając taki kontener do debugowania możemy wybrać jeden z istniejących kontenerów i kubectl skopiuje jego konfiguracje (zamontowane volumes, sieć i przestrzeń procesów). Zabawa w takim środowisku daje już dość duże możliwości interakcji z innymi kontenerami. Można wysłać przyjacieski sygnał -KILL do procesów, pogrzebać w podmontowanych wolumenach lub sprawdzić sieć, również bez ograniczeń hardeningu.

Shell noda

Link dla zdesperowanych: https://github.com/kvaps/kubectl-node-shell. Skrypt potrafi uruchomić shell na nodzie kubernetesa. Dzięki niemu możemy dostać się jako root na dowolnego noda z klastra jako root i wprost pogrzebać w systemie. Chyba najbardziej “wszechmocna” opcja do zabawy w szukanie dziury w całym.

Miłego debugowania!

Nowy adres

Od dzisiaj można przeglądać bloga pod adresem nabozny.io. Stara domena (jak również maile, jeśli ktoś do mnie pisał na nią 🙂 ) przestanie być aktywna z końcem listopada.

Przepis na makowiec

Do zrobienia będą potrzebne:

  • Puszka maku
  • Około 500-600g mąki tortowej
  • 150g stopionego masła
  • 180ml mleka (+/- szklanka)
  • 6 żółtek
  • Saszetka suchych drożdży lub pół kostki świeżych (chyba 50g)
  • 6 łyżek cukru
  • Pół łyżeczki soli
  • Papier do pieczenia jeśli chcemy zawinąć

Mieszamy po kolei: żółtka, cukier (na tym etapie można zrobić kogel mogel :), masło (jeszcze lepszy kogel mogel), drożdże, sól i letnie/lekko ciepłe mleko. Następnie dosypujemy mąkę tak, żeby ciasto przestało się lepić i dało się je jako tako rozłożyć na papierze. Jeśli potrzeba, mąki można dosypać nawet więcej niż 500-600g, byle tylko dało się to rozwałkować.

Można (ale nie trzeba) całość ostudzić w lodówce przez ok. pół godziny, aby było łatwiej rozwałkować. Następnie bierzemy kawałęk, ok 70cm papieru do pieczenia i rozwałkowujemy na nim ciasto w podłużny placek. Na taki placek wykładamy mak z puszki (połowę lub 1/3, w zależności na ile kawałków podzieliliśmy ciasto) i delikatnie, równomiernie rozsmarowywujemy. na koniec z pomocą drugiej osoby zwijamy: jedna osoba unosi jeden koniec papieru do pieczenia, a druga zaczyna zrolowywać ciasto z makiem. W ten sposób powstaje zawijane ciasto o przekroju: (@). Taką roladę należy luźno zawinąć w papier do pieczenia, aby się nie rozerwała podczas pieczenia – wystarczy zostawić luz na około dwa palce. W ten sposób z powyższego przepisu da się zrobić 2-3 rolady makowe. Na koniec zabezpieczamy papier, np. zszywkami i wkładamy na pół godziny do piekarnika na 180*C.

Druga, prostsza wersja polega na wyłożeniu połowy ciasta do szerokiej brytfanki, nałożeniu na to maku i położeniu drugiej warstwy rozwałkowanego ciasta na wierzch. Jest mniej roboty, ale nie można tym poszpanować przed rodziną. Pieczemy mniej więcej tyle samo.

Szyfrowany dysk sieciowy dla potrzeb serwerowych

Poniżej przedstawiam kilka sposobów na wykorzystanie przestrzeni dyskowej zdalnej maszyny w sposób zabezpieczający w pełni nasze dane. Założenie konfiguracji jest jedno – maszyna udostępniająca swój dysk nie może mieć wglądu w nasze dane, które przechowujemy ani w klucze, którymi dane są szyfrowane. Całość komunikacji ma być w pełni bezpieczna, a jedyny dostęp do danych ma być możliwy jedynie po ich odszyfrowaniu w locie, już na komputerze klienta.

Dzięki temu przejęcie docelowej maszyny nie będzie oznaczało od razu wycieku naszych danych. Ma to być zapewnione począwszy od dostępu do samego jej dysku, aż po grzebanie w RAM’ie, gdzie mogą być przechowywane klucze szyfrujące, gdyby szyfrowanie odbywało się po zdalnej stronie. Kolejnym wymogiem jest aby sposób przechowywania danych był możliwy w środowisku serwerowym, gdzie chcemy zautomatyzować cały proces montowania i dostępu do danych, a więc bez żadnych UI oraz webowych interfejsów.

Continue reading “Szyfrowany dysk sieciowy dla potrzeb serwerowych”

Sejf w sejfie vs. Sejf z kilkoma drzwiczkami – jak kontrolować dostęp za pomocą kryptografii

Czasami potrzeba zabezpieczenia dostępu do danych na różne sposoby, tak aby tylko powołane osoby mogły je odczytać. Standardowym, dość powszechnym sposobem jest zaprzęgnięcie do tego celu dedykowanego serwisu, który kontroluje co kto może zrobić (np. LDAP) i podpięcie do niego serwisu zarządzającego danym zasobem (np. dostęp do systemu). Zaletą takiego podejścia jest oczywiście skalowalność i kontrola nad tym co się dzieje, jednak takie podejście zwiększa ilość słabych punktów, które mogą zawieść. Po pierwsze outage dowolnego z nich powoduje niedostępność całej usługi. Po drugie, znalezienie podatności w dowolnym z nich może doprowadzić do nieautoryzowanego dostępu do danych.
Zamiast powyższego podejścia chciałbym pokazać jak można uzyskać podobną “funkcjonalność” dotyczącą dostępu do danych za pomocą kryptografii. Zamiast kontrolować dostęp aktywnie, przez dedykowany serwis, zaszyfrujemy nasze dane w odpowiedni sposób, za pomocą ogólnodostępnych funkcji.

Continue reading “Sejf w sejfie vs. Sejf z kilkoma drzwiczkami – jak kontrolować dostęp za pomocą kryptografii”

Jasność w laptopie

Każdy, nawet mało doświadczony użytkownik systemu Linux wie, że jeśli klawisze od zmiany jasności po aktualizacji nie działają, to trzeba findem poszukać w /sys plików pasujących do wzorca “*brightness*” i następnie przekierować

echo 100

na

sudo tee

do pliku

/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-eDP-1/intel_backlight/brightness

żeby ściemnić ekran.