NFsec Logo

Podpisywanie commitów git za pomocą klucza SSH

28/11/2022 w Administracja, Bezpieczeństwo Możliwość komentowania Podpisywanie commitów git za pomocą klucza SSH została wyłączona

W

raz z wersją git 2.34.0 każdy nasz commit do kodu lub jego tag będzie mógł zostać podpisany kluczem SSH. Możliwość podpisywania dowolnych danych za pomocą SSH została dodana już w 2019 roku z wydaniem OpenSSH 8.0. Jednak, aby używać tej funkcjonalności bez żadnego problemu najlepiej używać OpenSSH w wersji 8.8. Nasz proces zaczynamy od instalacji i konfiguracji klienta git i SSH:

sudo apt install -y git

Kolejnym krokiem jest wygenerowanie klucza SSH, który będzie używany do podpisywania:

ssh-keygen -t ed25519 -C "agresor@nfsek.pl" -f ~/.ssh/code_commit_signing

Odpowiadamy na pytania i upewniamy się, że wpisaliśmy silne i unikalne hasło do klucza. Klucz ten będzie domyślnie przechowywany w naszym katalogu domowym pod katalogiem .ssh:

agresor@darkstar:~$ cat .ssh/code_commit_signing.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMzu8wjcnyAorVVtEjddoG2gaYjmRnHiZHvElYFcl/s/ 
agresor@nfsek.pl

[ czytaj całość… ]

Minimalizacja QNAME

22/09/2022 w Administracja, Bezpieczeństwo Możliwość komentowania Minimalizacja QNAME została wyłączona

M

inimalizacja QNAME (RFC 7816), czyli Query Name zmienia zapytania DNS pochodzące z resolwera rekurencyjnego, aby w każdym zapytaniu zawierał tylko tyle szczegółów, ile jest to wymagane dla tego kroku w procesie rozwiązywania danej domeny. Internet Engineering Task Force opisuje to jako technikę, “w której resolwer DNS nie wysyła już pełnej oryginalnej nazwy QNAME do nadrzędnego serwera nazw”. Powiedzmy, że chcemy odwiedzić stronę: stardust.nfsec.pl. W celu określenia adresu IP, z którym chce się połączyć przeglądarka, system wysyła zapytania do resolwera dostawcy usług internetowych (ISP) lub innego ustawionego przez konfigurację systemu. Prosi on o pełną nazwę – stardust.nfsec.pl – w tym przypadku. ISP (lub inny serwer DNS przydzielony przez zarządce sieci, z której korzystasz) zapyta root DNS, a następnie domenę najwyższego poziomu (.pl), a następnie domenę drugorzędną (nfsec.pl) o pełną nazwę domeny. W rzeczywistości wszystko, czego się dowiadujesz od głównego serwera DNS to odpowiedź na pytanie “kto odpowiada za .pl?”, a jedyne, o co pytasz serwer .pl, to “kto odpowiada za .nfsec.pl?”. Żadne z tych żądań nie musi zawierać informacji o pełnej nazwie strony internetowej, którą chcesz odwiedzić, aby odpowiedzieć na wcześniejsze pytania, ale niestety oba te serwery taką informacje otrzymują. Tak zawsze działał DNS, ale obecnie nie ma ku temu praktycznego powodu.
[ czytaj całość… ]

Procmon dla Linuksa

11/05/2021 w Administracja Możliwość komentowania Procmon dla Linuksa została wyłączona

K

iedyś zestaw narzędzi dla Microsoft Windows znany pod nazwą SysInternals był przeznaczony tylko dla tego systemu operacyjnego. Od jakiegoś czasu narzędzie do monitorowania procesów o nazwie Process Monitor (znane również jako procmon) jest dostępne dla systemu Linux. Osoby, które chociaż raz pracowały z tym narzędziem na systemie okienek wiedzą, że jest to wygodne narzędzie do przeglądania aktywności wywołań systemowych w czasie rzeczywistym.

Proces instalacji ogranicza się do zarejestrowania repozytorium Microsoftu:

wget -q https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Oraz wrzuceniu odpowiedniej paczki do systemu:

sudo apt-get update
sudo apt-get install procmon

Samo polecenie interfejsem graficznym przypomina htop. Uruchomienie śledzenia wszystkich procesów i wywołań systemowych w systemie można osiągnąć poprzez uruchomienie:

sudo procmon

Jeśli chcemy na przykład śledzić proces o ID = 20 i tylko wywołania systemowe odczytu, zapisu i otwierania wystarczy przekazać poleceniu składnie:

sudo procmon -p 20 -e read,write,openat

Więcej informacji: ProcMon for Linux, procmon -h

Lepszy reverse shell z rlwrap i nie tylko

10/03/2021 w Administracja Możliwość komentowania Lepszy reverse shell z rlwrap i nie tylko została wyłączona

r

lWrap jest opakowaniem biblioteki readline umożliwiającym edycję danych wejściowych z klawiatury dla dowolnego polecenia; zapewnia również mechanizm historii, który jest bardzo przydatny do poprawiania lub ponownego wykorzystywania poleceń. Program ten można wykorzystać wszędzie tam, gdzie interfejs wiersza poleceń danego narzędzia nie umożliwia takich czynności. W dodatku, jeśli posiadamy wolne połączenia z daną siecią, gdzie każde naciśnięcie klawisza jest przesyłane jedno po drugim w zauważalnej pauzie, a każda literówka staje się o wiele bardziej frustrująca i czasochłonna dla nas – rlwrap również sprawdza się w tej sytuacji, ponieważ buforuje wszystkie pojedyncze naciśnięcia klawiszy do momentu naciśnięcia klawisza [Enter], a następnie przesyła jednocześnie całą wprowadzoną linię tekstu. To znacznie ułatwia pisanie z dużą prędkością i poprawianie literówek.
[ czytaj całość… ]

Przyśpieszanie odczytu zajętości dysków na Hadoop < 2.8.X

25/03/2020 w Administracja Możliwość komentowania Przyśpieszanie odczytu zajętości dysków na Hadoop < 2.8.X została wyłączona

P

odczas raportowania zużycia blokowej pamięci masowej na klastrze Hadoop uruchamiane jest polecenie systemu Linux: du -sk /dysk/pula-bloków. Może to powodować bardzo dużo żądań I/O oraz zwiększone obciążenie na dyskach, które posiadają bardzo wiele plików i są aktualnie utylizowane przez zadania chodzące na klastrze. Nie jest to najbardziej efektywny sposób odpytywania o zajęte miejsce szczególnie kiedy w tym czasie zasoby te powinny być przyznane na inne zadania. W wielu przypadkach może dojść do zakleszczania kiedy przetwarzanie i raportowanie jest opóźnione ze względu nałożenie się czasów wykonania tych operacji na siebie. W przypadku systemu Linux można bardzo prosto podmienić polecenie du na df – jednak w samym oprogramowaniu dystrybucji Hadoop bez aktualizacji do wyższej wersji nie jest to możliwe.
[ czytaj całość… ]

Duży HEAP, duży CPU, duży GC

08/10/2019 w Administracja, Debug Możliwość komentowania Duży HEAP, duży CPU, duży GC została wyłączona

Nasze maszyny posiadają następujące parametry: 64 GB RAM oraz 32 wątków CPU (z HT). Jest na nich uruchomiony ElasticSearch v5 z złotą zasadą 50% na heap oraz 50% na cache systemu plików. Oczywiście heap jest ustawiony tak, aby nie przekraczał trybu “zero-based”, czyli w tym przypadku 30720 MB:
[ czytaj całość… ]

Testowanie ruchu HTTP 1.1 za pomocą curl

10/08/2019 w Administracja, CmdLineFu, Debug Możliwość komentowania Testowanie ruchu HTTP 1.1 za pomocą curl została wyłączona

C

url może być pomocnym narzędziem przy debugowaniu. Gdy na rozpoznanie problemu składają się problemy z: siecią, DNS, serwerem lub wydajnością samej webaplikacji – możemy bez wahania po niego sięgnąć. W celu izolacji problemu możemy uruchomić curl’a w następujący sposób:

curl -w "$(date +%FT%T) dns: %{time_namelookup} connect: %{time_connect}\
 firstbyte: %{time_starttransfer} total: %{time_total} HTTP: %{http_code}\n"\
 -o /dev/null -s "https://apka.dev"

Polecenie takie puszczone w pętli da nam ładny podgląd na każde żądanie HTTP:
[ czytaj całość… ]

Chroniąc SSH przed zbieraniem adresów z known_hosts

25/05/2019 w Administracja, Bezpieczeństwo Możliwość komentowania Chroniąc SSH przed zbieraniem adresów z known_hosts została wyłączona

J

eśli używasz SSH to Twój klient przechowuje w katalogu domowym listę mapującą nazwy hostów i adresy IP każdego zdalnego hosta, z którym się połączyłeś. Ta “baza danych”, znana jako plik known_hosts może zostać wykorzystana przez atakujących, którzy naruszyli konta użytkowników. Rezultatem odczytania tego pliku jest “obraz” sieci, ujawniający, do których systemów mamy jeszcze połączenie. Może ułatwić to szkodliwemu oprogramowaniu i innym szkodliwym skryptom w rozprzestrzenianiu się na inne systemy, gdy tylko jeden system w sieci został skompromitowany. Plik ten jest dostępny w katalogu ~/.ssh każdego użytkownika, który chociaż raz łączył się jako klient SSH z zdalnym systemem. Jest on na tyle użyteczny, że w przypadku zmiany podpisu serwera – klient SSH będzie chronić użytkownika, powiadamiając go o tej sytuacji komunikatem typu:
[ czytaj całość… ]

Trochę o ulimit oraz prlimit

19/04/2019 w Administracja Możliwość komentowania Trochę o ulimit oraz prlimit została wyłączona

W

systemach operacyjnych każdy proces ma określony zestaw zasobów dostępnych w czasie jego życia. W przypadku Linuksa obejmują one takie rzeczy jak: ilość otwartych plików, rozmiar pliku z zrzutem pamięci, liczbę wątków, czy rozmiar stosu. Każdy zasób ma dwie granice: miękką (ang. soft) oraz twardą (ang. hard). Wartość graniczna zasobów może wahać się pomiędzy [miękką, a twardą] granicą. Pierwszą można uznać za wartość domyślną, a drugą za wartość maksymalnego pułapu. Zadaniem jądra jest upewnienie się, że te ograniczenia są egzekwowane.
[ czytaj całość… ]

Brezent na SSH

25/03/2019 w Administracja, Bezpieczeństwo Możliwość komentowania Brezent na SSH została wyłączona

B

rezent (ang. tarpit), czyli płachta na usługę. Jest usługą sieciową, która celowo wprowadza opóźnienia w obsługiwanym protokole spowalniając w ten sposób klientów i zmuszając ich do oczekiwania przez określony czas. Zachowanie to spowalnia lub zatrzymuje sondowanie i atakowanie systemów / usług. Skanery, skrypty i inne narzędzia atakującego są związywane z konkretną usługą / portem i nie mają możliwości ruszyć dalej (zazwyczaj działają synchronicznie wykonując pracę host po hoście / port po porcie). Nakłada to na atakującego większy koszt pod względem czasu i zasobów niż ponosi go obrońca.
[ czytaj całość… ]