top of page

Search Results

Znaleziono 139 elementów dla „”

  • KDE Plasma 5.27.4 ulepsza Plazmę Wayland

    Projekt KDE wydał dziś KDE Plasma 5.27.4 jako czwartą aktualizację serii środowiska pulpitu KDE Plasma 5.27 LTS, aby naprawić więcej błędów i awarii oraz usprawnić istniejące funkcje. KDE Plasma 5.27.4, wydana trzy tygodnie po KDE Plasma 5.27.3, wprowadza kolejne ulepszenia w sesji Plasma Wayland. Naprawiono awarię KWin, która występowała, gdy niektóre zewnętrzne ekrany wyłączały się same po wyłączeniu i ponownym włączeniu. Ulepszono także ustawienia prędkości przewijania i obsługę aplikacji GTK na konfiguracjach wielomonitorowych oraz podczas zmiany globalnych motywów. Wydanie KDE Plasma 5.27.4 naprawia także problem z zamykaniem się Plasmy, gdy aplikacja wysyła zbyt długi tytuł okna, oraz wprowadza ulepszenia w nagrywaniu ekranu i miniaturach Menedżera zadań dla użytkowników z kartami graficznymi NVIDIA, gdy używają zamkniętych sterowników NVIDIA. Aktualizacja wprowadza również ulepszenia jakości życia, takie jak wiarygodniejsze wykresy zużycia energii w aplikacji Info Center dla ciemnych motywów, lepsze wsparcie wielomonitorowe oraz obsługę aplikacji Flatpak w menedżerze pakietów Plasma Discover. Ponadto Plasma Discover działa teraz szybciej i bardziej responsywnie, gdy jest dużo aktualizacji systemowych, a okno Emoji Picker można teraz otworzyć za pomocą dedykowanego klawisza Emoji na klawiaturze. Ustawienie "Sortuj aplikacje alfabetycznie" w Kickerze usuwa ręcznie umieszczone linie separatorów między aplikacjami. Wiele błędów zostało naprawionych w KDE Plasma 5.27.4, w tym awarii ustawień systemowych, awarii kded5 podczas przełączania ekranów, problemów związanych ze schowkiem oraz zamarzania ekranu logowania SDDM przy użyciu motywu Breeze SDDM. KDE Plasma 5.27.4 wprowadza również poprawki dla wizualnie uszkodzonych dekoracji okien Aurorae, ulepsza wsparcie dla maksymalizowanych aplikacji GTK z paskami nagłówków przy użyciu motywu Breeze GTK oraz poprawia funkcję screencasting, eliminując zamianę czerwonych i niebieskich kolorów kursora. Wreszcie, aktualizacja KDE Plasma 5.27 LTS wprowadza ulepszenia w przełączaniu motywów ekranów rozruchowych Plymouth dla dystrybucji GNU/Linux korzystających z mkinitcpio, poprawia grubość niepływających paneli przy użyciu motywów Plasmy z zaokrąglonymi rogami o dużym promieniu oraz naprawia różne inne drobne problemy. Aby uzyskać więcej szczegółów, zapoznaj się z pełną listą zmian. Tymczasem, jeśli korzystasz z serii środowiska pulpitu KDE Plasma 5.27 LTS, śledź stabilne repozytoria oprogramowania swojej dystrybucji GNU/Linux, aby sprawdzić dostępność pakietów Plasma 5.27.4 i zaktualizować swoje instalacje tak szybko, jak to możliwe. Źródło: https://kde.org/announcements/changelogs/plasma/5/5.27.3-5.27.4/

  • Darmowe narzędzie do analizy zdarzeń w Microsoft Azure

    CISA wprowadza Untitled Goose Tool do wykrywania zagrożeń i analizy usług chmurowych w Microsoft Azure Cybersecurity and Infrastructure Security Agency (CISA) we współpracy z Sandia National Laboratories opracowała nowe narzędzie do cyberbezpieczeństwa o nazwie Untitled Goose Tool. Narzędzie ma na celu pomóc obrońcom sieci w wykrywaniu złośliwej aktywności w środowiskach Azure Active Directory (AAD) i Microsoft 365. Goose oferuje innowacyjne metody uwierzytelniania i zbierania danych, dzięki którym można lepiej wykryć zagrożenia i analizować usługi chmurowe w Microsoft Azure. Narzędzie jest szczególnie przydatne w dobie licznych luk w zabezpieczeniach w usługach Azure, takich jak niedawno ujawniona luka umożliwiająca fałszerstwo żądań po stronie serwera (SSRF). Andy Robbins, główny architekt produktu w firmie SpecterOps, zwraca uwagę na istotne problemy związane z atakami na tożsamość w środowiskach platformy Azure. Ścieżki ataków w Azure są trudniejsze do zabezpieczenia i zarządzania niż te w lokalnych sieciach, co wynika z większej złożoności tożsamości na platformie. Untitled Goose Tool może wykrywać przypadki wykorzystania luk w zabezpieczeniach, nieprawidłową konfigurację uprawnień oraz wspierać działania naprawcze. Narzędzie umożliwia również wyodrębnianie artefaktów chmury z powiązanych usług bez konieczności przeprowadzania dodatkowych analiz, gromadzenie danych w określonych ramach czasowych oraz korzystanie z funkcji ograniczania czasu. Aby korzystać z narzędzia, osoby z Blue Team muszą używać Pythona 3.7, 3.8 lub 3.9, a CISA zaleca uruchamianie Goose w środowisku wirtualnym. Przed rozpoczęciem korzystania z repozytorium GitHub, CISA wzywa obrońców sieci chmurowych do zapoznania się z arkuszem informacyjnym Untitled Goose Tool, aby zrozumieć jego funkcje i wymagania dotyczące uprawnień. Funkcje narzędzia obejmują m.in. eksportowanie i przeglądanie dzienników logowania, inspekcji usługi AAD, dzienników inspekcji M365 (UAL), dzienników aktywności platformy Azure, alertów usługi Microsoft Defender for IoT oraz danych usługi Microsoft Defender for Endpoint (MDE) pod kątem podejrzanej aktywności. Dodatkowo, umożliwia wykonywanie zapytań, eksportowanie i badanie konfiguracji AAD, M365 i Azure oraz wyodrębnianie artefaktów ze środowisk Microsoft AAD, Azure i M365 bez wykonywania dodatkowych analiz. Goose pozwala także na ograniczenie czasowe UAL, ekstrakcję danych w określonych ramach czasowych oraz zbieranie i przeglądanie danych z wykorzystaniem podobnych możliwości ograniczania czasu dla danych MDE. Untitled Goose Tool ma potencjał stać się istotnym narzędziem dla obrońców sieci, którzy starają się utrzymać bezpieczeństwo infrastruktury chmurowej w Azure. Jego elastyczność i innowacyjne podejście do uwierzytelniania i zbierania danych przyczynią się do lepszego wykrywania i reagowania na incydenty oraz pomogą w monitorowaniu i analizie potencjalnych zagrożeń. W miarę jak coraz więcej organizacji korzysta z chmury Microsoft Azure, narzędzie takie jak Untitled Goose Tool może okazać się kluczowe dla utrzymania bezpieczeństwa i ochrony prywatności użytkowników. Wspierając obrońców sieci w walce z atakami i zabezpieczając środowiska chmurowe, Goose przyczynia się do poprawy ogólnego poziomu cyberbezpieczeństwa w sektorze usług chmurowych. Źródło: https://github.com/cisagov/untitledgoosetool https://www.cisa.gov/news-events/alerts/2023/03/23/untitled-goose-tool-aids-hunt-and-incident-response-azure-azure-active-directory-and-microsoft-365

  • Przydatne polecenia systemu Linux - part 3 (numactl, taskset, cgrups, schedtool)

    Część trzecia artykułu o poleceniach linux poprzednio mieliśmy: Zarządzania pakietami apt, apt-get, apt-cache, aptitude, dpkg, rpm, yum, dnf, zypper - part 2 Przydatne polecania dla każdego - Linux part 1 A w tym odcinku porozmawiamy sobie jak z naszego systemu wyciągnąc wiecej :) numactl Polecenie numactl jest potężnym narzędziem dostępnym w systemach Linux, które pozwala na kontrolowanie alokacji pamięci i przydzielania procesów w architekturze Non-Uniform Memory Access (NUMA). W czasach rosnącej złożoności i rozbudowy wieloprocesorowych systemów komputerowych, narzędzie to stanowi kluczowe rozwiązanie dla administratorów systemów oraz programistów, którzy pragną zoptymalizować wydajność swoich aplikacji. Czym jest polecenie numactl i do czego służy? Polecenie numactl to narzędzie wykorzystywane w systemach Linux do kontroli alokacji pamięci i zarządzania procesami w architekturze NUMA. W skrócie, NUMA to architektura stosowana w wieloprocesorowych systemach komputerowych, w których czas dostępu do pamięci zależy od położenia procesora względem pamięci. Węzły NUMA zawierają procesor(y) oraz lokalną pamięć, a czas dostępu do pamięci w węźle jest krótszy niż do pamięci w innym węźle. Polecenie numactl pozwala na ustawienie polityki alokacji pamięci dla danego procesu oraz przydzielenie procesu do określonego węzła NUMA. Dzięki temu możliwe jest lepsze wykorzystanie dostępnych zasobów oraz minimalizacja opóźnień wynikających z przesyłania danych między węzłami. Historia polecenia numactl Wraz z rozwojem technologii komputerowych, zwłaszcza w dziedzinie wieloprocesorowych systemów, pojawiła się potrzeba lepszego zarządzania zasobami pamięci. Początkowo, systemy komputerowe stosowały architekturę Uniform Memory Access (UMA), gdzie czas dostępu do pamięci był taki sam dla wszystkich procesorów. W miarę zwiększania liczby procesorów w systemach, UMA zaczęło prowadzić do problemów z wydajnością i skalowalnością. W związku z tym, w latach 90. XX wieku powstała architektura Non-Uniform Memory Access (NUMA) jako odpowiedź na rosnące wyzwania związane z zarządzaniem pamięcią w wieloprocesorowych systemach. Początkowo, NUMA była stosowana głównie w superkomputerach oraz dużych systemach mainframe, jednak w miarę upływu czasu, coraz więcej serwerów i stacji roboczych zaczęło korzystać z tej architektury, aby poprawić swoją wydajność. W związku z tym, istniała potrzeba stworzenia narzędzi, które umożliwiłyby efektywne zarządzanie zasobami pamięci w systemach NUMA. Pierwsze wersje polecenia numactl pojawiły się na początku lat 2000. W kolejnych latach narzędzie było rozwijane, dopracowywane i dostosowywane do różnych dystrybucji Linuxa. Przełączniki polecenia Wraz z rozwojem narzędzia numactl, programiści wprowadzili różne opcje pozwalające na bardziej precyzyjne zarządzanie węzłami NUMA. Niektóre z tych opcji obejmują: --cpunodebind=: Ta opcja pozwala na przydzielenie procesu do określonego węzła (lub węzłów) NUMA. Proces będzie miał dostęp jedynie do CPU związanych z tymi węzłami. Wartość może być pojedynczym węzłem (np. --cpunodebind=0) lub listą węzłów (np. --cpunodebind=0,1,2). --membind=: Za pomocą tej opcji można określić, z których węzłów NUMA proces będzie mógł alokować pamięć. Wartość może być pojedynczym węzłem (np. --membind=0) lub listą węzłów (np. --membind=0,1,2). --preferred=: Opcja ta pozwala na ustawienie preferowanego węzła NUMA dla alokacji pamięci. System stara się alokować pamięć z tego węzła, ale może korzystać z innych węzłów, jeśli to konieczne. Wartość powinna być pojedynczym węzłem (np. --preferred=0). --interleave=: Ta opcja rozkłada alokacje pamięci równomiernie na wskazanych węzłach NUMA. Może to poprawić wydajność w niektórych przypadkach, gdy równomierne rozłożenie pamięci jest korzystne. Wartość może być pojedynczym węzłem (np. --interleave=0) lub listą węzłów (np. --interleave=0,1,2). --localalloc: Domyślna polityka alokacji pamięci, która polega na próbie alokowania pamięci lokalnie dla danego procesu. Jeśli lokalna pamięć jest niewystarczająca, system może korzystać z pamięci zdalnych węzłów. --physcpubind=: Ta opcja pozwala na przydzielenie procesu do określonego procesora (lub procesorów) fizycznego. Wartość może być pojedynczym procesorem (np. --physcpubind=0) lub listą procesorów (np. --physcpubind=0,1,2). --show: Wyświetla aktualne ustawienia NUMA dla danego procesu. --hardware: Wyświetla informacje o sprzęcie NUMA, takie jak liczba węzłów, ich rozmiary oraz topologia połączeń między nimi. --length=: Opcja stosowana w połączeniu z --dump lub --dump-nodes, aby określić rozmiar obszaru pamięci, który ma zostać zrzutowany. Wartość powinna być podana w bajtach, kilobajtach (z dopiskiem K), megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). Na przykład, --length=1G oznacza, że rozmiar obszaru pamięci do zrzucenia wynosi 1 gigabajt. --offset=: Opcja stosowana w połączeniu z --dump lub --dump-nodes, aby określić przesunięcie początkowe obszaru pamięci, który ma zostać zrzutowany. Wartość powinna być podana w bajtach, kilobajtach (z dopiskiem K), megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). --dump i --dump-nodes=: Te opcje pozwalają na zrzut obszaru pamięci na standardowe wyjście. Opcja --dump zrzuci całą pamięć, podczas gdy --dump-nodes zrzuci pamięć tylko z określonych węzłów NUMA. Wartość może być pojedynczym węzłem (np. --dump-nodes=0) lub listą węzłów (np. --dump-nodes=0,1,2). --touch i --touch-nodes=: Opcje te powodują "dotknięcie" (inicjalizację) obszaru pamięci przed jego użyciem przez proces. Opcja --touch dotyka całej pamięci, natomiast --touch-nodes dotyka tylko pamięci z określonych węzłów NUMA. Wartość może być pojedynczym węzłem (np. --touch-nodes=0) lub listą węzłów (np. --touch-nodes=0,1,2). --huge i --huge=: Opcje te pozwalają na alokowanie dużych stron pamięci (ang. huge pages) dla procesu. Opcja --huge alokuje domyślny rozmiar dużych stron pamięci, natomiast --huge= pozwala na określenie rozmiaru dużych stron. Wartość powinna być podana w megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). --shm= i --shm=:: Opcje te alokują obszar pamięci współdzielonej (ang. shared memory) związany z określonym kluczem . Opcja --shm= alokuje domyślny rozmiar pamięci współdzielonej, natomiast --shm=: pozwala na określenie rozmiaru pamięci współdzielonej. Wartość powinna być podana w bajtach, kilobajtach (z dopiskiem K), megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). --file= i --file=:: Opcje te alokują obszar pamięci oparty na pliku o określonej ścieżce . Opcja --file= alokuje domyślny rozmiar pamięci na podstawie pliku, natomiast --file=: pozwala na określenie rozmiaru pamięci. Wartość powinna być podana w bajtach, kilobajtach (z dopiskiem K), megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). --roundrobin: Opcja ta pozwala na równomierne rozłożenie alokacji pamięci na wszystkich dostępnych węzłach NUMA. Jest to równoznaczne z użyciem opcji --interleave=all. --strict: Ta opcja sprawia, że numactl zakończy działanie z błędem, jeśli nie można zastosować żądanej polityki alokacji pamięci. Domyślnie, numactl może korzystać z innych polityk alokacji, jeśli żądana polityka nie może być zastosowana. --singleversion: Opcja ta sprawia, że numactl używa tylko jednej wersji biblioteki libnuma, nawet jeśli dostępne są różne wersje. Jest to przydatne w przypadku, gdy zachodzi potrzeba kontroli nad wersją biblioteki używaną przez numactl. --all i --all=: Opcje te alokują pamięć na wszystkich dostępnych węzłach NUMA. Opcja --all alokuje domyślny rozmiar pamięci na każdym węźle, natomiast --all= pozwala na określenie rozmiaru pamięci. Wartość powinna być podana w bajtach, kilobajtach (z dopiskiem K), megabajtach (z dopiskiem M) lub gigabajtach (z dopiskiem G). Te opcje można łączyć w celu uzyskania bardziej zaawansowanego zarządzania pamięcią i procesami w systemach NUMA. Pamiętaj, że niektóre opcje mogą być niekompatybilne ze sobą, więc warto zwrócić uwagę na to, które opcje są używane jednocześnie. Przed rozpoczęciem pracy z poleceniem numactl, warto zapoznać się z jego dokładną dokumentacją oraz przemyśleć strategię optymalizacji zasobów w systemie NUMA. Zastosowanie polecenia numactl w praktyce Polecenie numactl jest często używane przez administratorów systemów, programistów oraz inżynierów ds. wydajności, którzy pragną zoptymalizować wydajność swoich aplikacji w systemach NUMA. Narzędzie to pozwala na kontrolowanie, w jaki sposób procesy są przydzielane do poszczególnych węzłów NUMA, co pozwala lepiej wykorzystać zasoby pamięci. Przykład użycia polecenia numactl może wyglądać następująco: W powyższym przykładzie, polecenie numactl uruchamia program my_program, przydzielając go do węzła NUMA 0 oraz alokując pamięć tylko z tego węzła. Innym przykładem może być równomierne rozkładanie alokacji pamięci na dwóch węzłach NUMA: Warto zauważyć, że korzystanie z polecenia numactl może przynieść istotne korzyści wydajnościowe, ale wymaga także doświadczenia i zrozumienia działania systemów NUMA. Niewłaściwe użycie narzędzia może prowadzić do nieoptymalnego przydzielania zasobów, co skutkować będzie spadkiem wydajności. Współczesne systemy operacyjne, takie jak Linux, starają się automatycznie optymalizować alokację procesów i zasobów w systemach NUMA. Mimo to, w niektórych przypadkach, ręczna interwencja z wykorzystaniem polecenia numactl może być konieczna w celu uzyskania najlepszej możliwej wydajności. Korzystanie z NUMA może wpłynąć na wydajność systemu, szczególnie w przypadku dysków twardych i interfejsów sieciowych. Przyjrzymy się także, kiedy przypisanie danego programu zapisującego lub wysyłającego dane przez konkretne urządzenie przypięte do danego węzła NUMA może być korzystne. Redukcja opóźnień: Przydzielenie procesów do węzłów NUMA, do których są bezpośrednio podłączone urządzenia, takie jak dyski twarde lub interfejsy sieciowe, może zmniejszyć opóźnienia. Dzięki temu procesy mają szybszy dostęp do zasobów, co przekłada się na lepszą wydajność. Zwiększenie przepustowości: Przydzielenie procesów do węzłów NUMA zgodnie z lokalizacją urządzeń może również zwiększyć przepustowość. Poprawia to prędkość transferu danych między procesami a urządzeniami, co przekłada się na szybsze działanie systemu. Lepsze wykorzystanie zasobów: Optymalna alokacja NUMA umożliwia lepsze wykorzystanie zasobów sprzętowych. Dzięki temu system może obsługiwać więcej zadań jednocześnie, co zwiększa wydajność. Dyski twarde: Alokowanie NUMA w przypadku dysków twardych może poprawić wydajność operacji wejścia/wyjścia. Przydzielenie procesu do węzła NUMA, który zarządza dyskiem twardym, może zmniejszyć opóźnienia i zwiększyć prędkość transferu danych. Na przykład, jeśli proces zapisuje dane na dysku twardym podłączonym do węzła NUMA 0, alokacja procesu do tego samego węzła NUMA może przyspieszyć operacje zapisu i odczytu. Interfejsy sieciowe: Podobnie jak w przypadku dysków twardych, alokowanie NUMA w przypadku interfejsów sieciowych może również wpłynąć na wydajność systemu. Przydzielenie procesu do węzła NUMA zarządzającego interfejsem sieciowym może poprawić przepustowość sieci i zmniejszyć opóźnienia. Na przykład, jeśli proces wysyła dane przez interfejs sieciowy podłączony do węzła NUMA 1, przypisanie procesu do tego samego węzła NUMA może przyspieszyć operacje wysyłania i odbierania danych. Kiedy przypisać program do urządzenia przypiętego do danego węzła NUMA? Przypisanie programu do urządzenia przypiętego do danego węzła NUMA może być korzystne w następujących sytuacjach: Gdy program intensywnie korzysta z zasobów, takich jak dyski twarde lub interfejsy sieciowe. Przypisanie programu do węzła NUMA zarządzającego tymi urządzeniami może poprawić jego wydajność. W przypadku programów, które wymagają szybkiego przesyłania danych między procesami a urządzeniami, przypisanie ich do odpowiedniego węzła NUMA może zmniejszyć opóźnienia i zwiększyć przepustowość. Gdy system ma nierównomiernie rozłożone obciążenie między węzłami NUMA, przypisanie programów do węzłów zgodnie z lokalizacją urządzeń może pomóc zrównoważyć obciążenie i poprawić wydajność systemu. W systemie Linux istnieje wiele narzędzi, które pozwalają kontrolować na którym wątku procesora uruchamiany jest program, mamy jeszcze: taskset Polecenie taskset to narzędzie dostępne w systemach Linux, które pozwala zarządzać afiliacją procesów i wątków do rdzeni procesora. Dzięki temu narzędziu można kontrolować, na których rdzeniach procesora uruchamiane są programy, co pozwala na lepsze zarządzanie zasobami systemu i optymalizację wydajności. Przełączniki taskset -c, --cpu-list: Lista rdzeni, na których ma być uruchomiony proces. Przyjmuje listę oddzieloną przecinkami, zakresy oddzielone myślnikami, lub kombinacje tych dwóch. -p, --pid: Zamiast uruchamiać nowy proces, taskset zostanie użyty do zmiany afiliacji rdzenia istniejącego procesu o podanym numerze PID. -a, --all-tasks: Przeskalowanie afiliacji rdzenia dla wszystkich wątków istniejącego procesu o podanym numerze PID. -h, --help: Wyświetla pomoc dotyczącą użycia polecenia taskset. Przykłady użycia polecenia taskset Uruchamianie programu na konkretnych rdzeniach Jeśli chcesz uruchomić program na określonych rdzeniach procesora, użyj przełącznika -c: W powyższym przykładzie program zostanie uruchomiony na rdzeniach 0 i 1. Uruchamianie programu na zakresie rdzeni Możesz także podać zakres rdzeni za pomocą myślnika: W powyższym przykładzie program zostanie uruchomiony na rdzeniach 2 i 3. Zmiana afiliacji rdzenia dla istniejącego procesu Jeśli chcesz zmienić afiliację rdzenia dla istniejącego procesu o określonym numerze PID, użyj przełącznika -p: W powyższym przykładzie afiliacja rdzenia dla procesu o numerze PID 12345 zostanie zmieniona na rdzenie 0 i 2. Wyświetlanie afiliacji rdzenia dla istniejącego procesu Aby sprawdzić, na których rdzeniach działa istniejący proces, użyj przełącznika -p bez podawania listy rdzeni: W powyższym przykładzie zostanie wyświetlona afiliacja rdzenia dla procesu o numerze PID 12345. Zmiana afiliacji rdzenia dla wszystkich wątków istniejącego procesu Jeśli chcesz zmienić afiliację rdzenia dla wszystkich wątków istniejącego procesu, użyj przełącznika -a: W powyższym przykładzie afiliacja rdzenia dla wszystkich wątków procesu o numerze PID 12345 zostanie zmieniona na rdzenie 0 i 2. Uruchamianie programu na kombinacji rdzeni Możesz także podać kombinację listy i zakresu rdzeni: W powyższym przykładzie program zostanie uruchomiony na rdzeniach 3, 4 i 6. Podsumowując, polecenie taskset pozwala na kontrolowanie afiliacji rdzeni procesora dla nowo uruchamianych i istniejących procesów. Może to być użyteczne w przypadku optymalizacji wydajności, szczególnie w środowiskach, w których równoczesne wykonywanie wielu zadań wymaga zarządzania zasobami procesora. Dzięki temu narzędziu można ręcznie kontrolować wykorzystanie rdzeni procesora, dostosowując je do indywidualnych potrzeb i celów. Warto też spojrzeć na polecenia cgroups i schedtool na których można uzyskać podobny efekt cgroups Cgroups (control groups) to mechanizm jądra Linux, który pozwala na ograniczenie i izolowanie zasobów systemowych dla procesów. Przykład 1: Utworzenie grupy kontrolnej "myGroup". Przykład 2: Przypisanie rdzenia 0 do grupy kontrolnej "myGroup". Przykład 3: Dodanie bieżącego procesu do grupy kontrolnej "myGroup". Przykład 4: Uruchomienie programu w grupie kontrolnej "myGroup" Przykład 5: Usuwanie grupy kontrolnej "myGroup". schedtool Polecenie schedtool pozwala zarządzać harmonogramem i afiliacją rdzeni dla procesów. Przykład 1: Uruchomienie programu na rdzeniach 0 i 1 (maska bitowa: 0b11 = 0x3). Przykład 2: Uruchomienie programu na rdzeniach 0 i 2 (maska bitowa: 0b101 = 0x5). Przykład 3: Przypisanie istniejącego procesu o PID 12345 do rdzeni 0 i 1. Przykład 4: Wyświetlanie aktualnej afiliacji rdzeni dla procesu o PID 12345. Przykład 5: Uruchomienie programu na rdzeniach 0 i 3 (maska bitowa: 0b1001 = 0x9).

  • Zarządzania pakietami apt, apt-get, apt-cache, aptitude, dpkg, rpm, yum, dnf, zypper

    Hej w poprzednim wpisie rozmawialiśmy sobie o komendach w systemie Linux które warto znać. Dzisiaj w tym wpisie porozmawiamy o komendach, które w Twojej ulubionej dystrybucji pomagają instalować oprogramowanie. Zapraszam W świecie systemów Linux istnieje wiele narzędzi do zarządzania pakietami, które pozwalają na instalowanie, aktualizowanie, usuwanie i zarządzanie oprogramowaniem. W tym artykule przyjrzymy się kilku z nich: apt, apt-get, apt-cache, aptitude, dpkg, rpm, yum, dnf i zypper. Każde z tych narzędzi ma swoje unikalne cechy, a także wspólne przełączniki i funkcje. Historia i ewolucja narzędzi do zarządzania pakietami Historia narzędzi do zarządzania pakietami sięga lat 90. XX wieku, kiedy to powstały pierwsze dystrybucje systemów Linux. Wówczas różne projekty zaczęły opracowywać własne narzędzia, które miały na celu ułatwić zarządzanie oprogramowaniem na tych systemach. Jednym z pierwszych narzędzi do zarządzania pakietami był dpkg, wprowadzony w systemie Debian w 1994 roku. W 1998 roku powstał Red Hat Package Manager (RPM), który stał się podstawą dla wielu dystrybucji opartych na Red Hat. W międzyczasie, w 1999 roku, w systemie Debian wprowadzono narzędzie apt-get, które było wygodniejsze w użyciu niż dpkg, gdyż pozwalało na automatyczne rozwiązywanie zależności między pakietami. Z biegiem lat powstało wiele innych narzędzi do zarządzania pakietami, które miały za zadanie ułatwić i usprawnić proces instalacji oprogramowania na różnych dystrybucjach systemów Linux. Wprowadzono narzędzia takie jak aptitude (2000), yum (2003), dnf (2012) czy zypper (2006), które stanowią kolejne generacje i ewolucje narzędzi do zarządzania pakietami. apt (Advanced Package Tool) Apt to zaawansowane narzędzie do zarządzania pakietami, które jest używane w dystrybucjach opartych na Debianie, takich jak Ubuntu. Apt pozwala na instalowanie, usuwanie, aktualizowanie pakietów oraz wykonywanie innych zadań związanych z zarządzaniem oprogramowaniem. Najważniejsze przełączniki: update: Aktualizuje listę pakietów dostępnych w repozytoriach upgrade: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet autoremove: Usuwa nieużywane pakiety apt-get Apt-get to starsze narzędzie do zarządzania pakietami w dystrybucjach opartych na Debianie. Wiele z jego funkcji zostało zastąpionych przez apt, ale nadal jest używane w niektórych przypadkach. Zalecany wręcz przy budowaniu i używaniu składni dockerfile. Najważniejsze przełączniki: update: Aktualizuje listę pakietów dostępnych w repozytoriach upgrade: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet autoremove: Usuwa nieużywane pakiety apt-cache Apt-cache to narzędzie do wyszukiwania informacji o pakietach w dystrybucjach opartych na Debianie. Możemy nim wyszukiwać pakiety, sprawdzać ich wersje, zależności, opisy i inne informacje. Najważniejsze przełączniki: search: Wyszukuje pakiety zawierające podane słowo kluczowe show: Wyświetla szczegółowe informacje o podanym pakiecie policy: Pokazuje priorytet i źródło podanego pakietu aptitude Aptitude to alternatywne narzędzie do zarządzania pakietami w dystrybucjach opartych na Debianie. Ma wiele funkcji podobnych do apt, ale oferuje również zaawansowane wyszukiwanie pakietów i interfejs tekstowy. Najważniejsze przełączniki: update: Aktualizuje listę pakietów dostępnych w repozytoriach upgrade: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet search: Wyszukuje pakiety zawierające podane słowo kluczowe dpkg (Debian Package) Dpkg to niskopoziomowe narzędzie do zarządzania pakietami w dystrybucjach opartych na Debianie. Umożliwia instalację, usuwanie, aktualizację i konfigurację pakietów bezpośrednio z plików .deb, ale nie obsługuje automatycznego rozwiązywania zależności. Najważniejsze przełączniki: -i: Instaluje podany pakiet z pliku .deb -r: Usuwa podany pakiet -l: Wyświetla listę zainstalowanych pakietów -L: Wyświetla pliki zainstalowane przez podany pakiet -s: Pokazuje status podanego pakietu rpm (Red Hat Package Manager) Rpm to narzędzie do zarządzania pakietami w dystrybucjach opartych na Red Hat, takich jak Fedora, CentOS czy RHEL. Umożliwia instalację, usuwanie, aktualizację i konfigurację pakietów bezpośrednio z plików .rpm, obsługuje automatycznego rozwiązywania zależności. Najważniejsze przełączniki: -i: Instaluje podany pakiet z pliku .rpm -e: Usuwa podany pakiet -qa: Wyświetla listę zainstalowanych pakietów -ql: Wyświetla pliki zainstalowane przez podany pakiet -qf: Pokazuje, do którego pakietu należy dany plik yum (Yellowdog Updater, Modified) Yum to narzędzie do zarządzania pakietami w starszych wersjach dystrybucji opartych na Red Hat, takich jak CentOS 6 i RHEL 6. Umożliwia instalację, usuwanie i aktualizację pakietów, a także automatyczne rozwiązywanie zależności. Najważniejsze przełączniki: update: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet search: Wyszukuje pakiety zawierające podane słowo kluczowe info: Wyświetla informacje o podanym pakiecie dnf (Dandified Yum) Dnf to następca yum, używany w nowszych wersjach dystrybucji opartych na Red Hat, takich jak Fedora, CentOS 8 i RHEL 8. Oferuje większość funkcji yum, ale z usprawnieniami, takimi jak lepsze rozwiązywanie zależności i szybsze pobieranie pakietów. Najważniejsze przełączniki: update: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet search: Wyszukuje pakiety zawierające podane słowo kluczowe info: Wyświetla informacje o podanym pakiecie zypper Zypper to narzędzie do zarządzania pakietami w dystrybucjach opartych na openSUSE i SUSE Linux Enterprise. Umożliwia instalację, usuwanie, aktualizację pakietów oraz automatyczne rozwiązywanie zależności. Najważniejsze przełączniki: refresh: Odświeża listę pakietów dostępnych w repozytoriach update: Aktualizuje zainstalowane pakiety do najnowszych wersji install: Instaluje podany pakiet remove: Usuwa podany pakiet search: Wyszukuje pakiety zawierające podane słowo kluczowe pacman Pacman to narzędzie do zarządzania pakietami w dystrybucji Arch Linux. Umożliwia instalację, usuwanie i aktualizację pakietów z repozytoriów systemu Arch. Podobnie jak inne narzędzia, pacman pozwala na automatyczne rozwiązywanie zależności między pakietami. Portage Portage to narzędzie do zarządzania pakietami w dystrybucji Gentoo Linux. Jest to zaawansowane narzędzie, które pozwala na kompilację oprogramowania ze źródeł i dostosowywanie parametrów instalacji. Portage obsługuje także automatyczne rozwiązywanie zależności. pkg (Package Management Tool) pkg to narzędzie do zarządzania pakietami w dystrybucji FreeBSD oraz innych systemach z rodziny BSD. Umożliwia instalację, usuwanie i aktualizację pakietów binarnych oraz automatyczne rozwiązywanie zależności. Podsumowanie Choć omówione narzędzia mają wiele wspólnych funkcji, różnią się również pod względem wydajności, sposobu obsługi zależności czy interfejsu użytkownika. Ważne jest zrozumienie ich różnic, aby móc wybrać odpowiednie narzędzie do zarządzania pakietami na danej dystrybucji. apt, apt-get, apt-cache i aptitude są używane głównie w dystrybucjach opartych na Debianie, takich jak Ubuntu. Aptitude oferuje interfejs tekstowy, który ułatwia wyszukiwanie i zarządzanie pakietami. dpkg i rpm to niskopoziomowe narzędzia, które pozwalają na instalację pakietów bezpośrednio z plików .deb i .rpm, ale nie obsługują automatycznego rozwiązywania zależności. yum, dnf i zypper są używane w dystrybucjach opartych na Red Hat (Fedora, CentOS, RHEL) oraz openSUSE. Dnf, jako następca yum, wprowadza usprawnienia w rozwiązywaniu zależności i szybkości pobierania pakietów. Wybór odpowiedniego narzędzia do zarządzania pakietami zależy od dystrybucji systemu Linux, którego używasz, oraz od Twoich potrzeb i preferencji. Oto kilka wskazówek, które mogą pomóc w podjęciu decyzji: Sprawdź, jakie narzędzia są dostępne w Twojej dystrybucji: W niektórych dystrybucjach, takich jak Ubuntu, dostępne są różne narzędzia do zarządzania pakietami. Możesz wybrać apt, apt-get, apt-cache lub aptitude, w zależności od swoich preferencji. W innych dystrybucjach, takich jak Arch Linux, dostępne jest jedno główne narzędzie – pacman. Zdecyduj, czy potrzebujesz zaawansowanych funkcji: Niektóre narzędzia, takie jak Portage w Gentoo Linux, oferują zaawansowane funkcje, takie jak kompilacja oprogramowania ze źródeł czy dostosowywanie parametrów instalacji. Jeśli potrzebujesz takich funkcji, warto wybrać dystrybucję i narzędzie, które je oferują. Uwzględnij wydajność i łatwość obsługi: Niektóre narzędzia, takie jak dnf, są szybsze i lepiej radzą sobie z rozwiązywaniem zależności niż ich poprzednicy (np. yum). Jeśli zależy Ci na wydajności, warto wybrać nowsze narzędzie do zarządzania pakietami. Weź pod uwagę wsparcie społeczności: Popularne narzędzia do zarządzania pakietami mają większą społeczność użytkowników i deweloperów, co może ułatwić rozwiązywanie problemów i znalezienie pomocy w razie potrzeby. Przy wyborze narzędzia warto sprawdzić, jak aktywna jest jego społeczność. W artykule omówiliśmy kilka różnych narzędzi do zarządzania pakietami w systemach Linux, ich historię i ewolucję, a także mniej popularne narzędzia. Przedstawiliśmy podstawowe przełączniki i funkcje każdego narzędzia oraz podaliśmy przykłady użycia. Kiedy wykorzystujesz system Linux, kluczowe jest zrozumienie, jakie narzędzie do zarządzania pakietami jest używane w Twojej dystrybucji. W ten sposób będziesz mógł efektywnie zarządzać oprogramowaniem i utrzymywać swój system w aktualnym i bezpiecznym stanie.

  • Checkov - zastosowanie narzędzia do analizy infrastruktury jako kodu

    W dzisiejszych czasach, kiedy rośnie znaczenie infrastruktury jako kodu (IaC - Infrastructure as Code) w praktykach DevOps, kluczowe jest, aby utrzymać wysoki poziom bezpieczeństwa i jakości kodu. W odpowiedzi na te potrzeby powstało narzędzie o nazwie Checkov, które od swojego powstania zyskało szerokie uznanie w środowisku deweloperskim. W niniejszym artykule przyjrzymy się historii tego narzędzia oraz zastosowaniom, do których jest wykorzystywane. Checkov został stworzony przez firmę Bridgecrew, startup założony w 2019 roku, który specjalizuje się w tworzeniu narzędzi do automatyzacji bezpieczeństwa i zarządzania infrastrukturą jako kodem. Bridgecrew zauważył, że wiele narzędzi do analizy statycznej kodu źródłowego (SAST) nie radziło sobie z wykrywaniem potencjalnych zagrożeń bezpieczeństwa w kodzie IaC. W odpowiedzi na te niedostatki powstał Checkov, który miał za zadanie zaspokoić rosnące potrzeby deweloperów w zakresie analizy bezpieczeństwa kodu IaC. Checkov został oficjalnie opublikowany w grudniu 2019 roku jako narzędzie open-source dostępne na licencji Apache 2.0. Od tego czasu zyskał ogromne uznanie w społeczności deweloperskiej, a liczba jego użytkowników stale rośnie. Główne zastosowania Checkov Checkov jest narzędziem do analizy statycznej kodu źródłowego, które sprawdza konfigurację IaC pod kątem (nie)zgodności z najlepszymi praktykami w zakresie bezpieczeństwa, zgodności i wydajności. Narzędzie to obsługuje wiele popularnych formatów IaC, takich jak Terraform, CloudFormation, Kubernetes, Serverless Framework, AWS CDK i inne. Bezpieczeństwo Checkov pozwala deweloperom na wykrywanie potencjalnych zagrożeń bezpieczeństwa w ich konfiguracjach IaC. Narzędzie porównuje konfiguracje z zasadami zdefiniowanymi w ramach polityk bezpieczeństwa. Jeśli Checkov znajdzie jakiekolwiek niezgodności, generuje raport wskazujący problematyczne miejsca, co umożliwia szybką identyfikację i naprawę potencjalnych zagrożeń. Polityki są oparte na wytycznych CIS (Center for Internet Security) i innych standardach branżowych, co zapewnia wykrywanie aktualnych zagrożeń. Zgodność Wraz z rosnącą liczbą przepisów dotyczących ochrony danych, takich jak GDPR, HIPAA czy CCPA, przedsiębiorstwa muszą dbać o zgodność swojej infrastruktury z obowiązującymi regulacjami. Checkov sprawdza, czy konfiguracje IaC są zgodne z wymogami zgodności, co pomaga w utrzymaniu wysokich standardów i minimalizacji ryzyka naruszenia przepisów. Wydajność Oprócz sprawdzania zgodności z politykami bezpieczeństwa i zgodności, Checkov pozwala na optymalizację infrastruktury pod kątem wydajności. W rezultacie można znacznie zmniejszyć koszty operacyjne, przyspieszyć wdrażanie aplikacji oraz ułatwić zarządzanie infrastrukturą. Integracja z narzędziami CI/CD Checkov może być zintegrowany z różnymi narzędziami ciągłej integracji i dostarczania (CI/CD), takimi jak Jenkins, GitLab, GitHub Actions czy CircleCI. Integracja z narzędziami CI/CD pozwala na automatyczne sprawdzanie konfiguracji IaC podczas procesu wdrażania, co zapewnia bieżącą kontrolę jakości i bezpieczeństwa. Własne polityki Deweloperzy mogą tworzyć własne polityki sprawdzające, które są dostosowane do ich specyficznych potrzeb. Dzięki temu możliwe jest zapewnienie, że konfiguracje IaC są zgodne z wewnętrznymi wymogami przedsiębiorstwa. Przełączniki polecenia Checkov -d, --directory: Określa katalog, w którym Checkov przeprowadzi analizę. Można go użyć, gdy chcesz przetestować tylko część swojej infrastruktury. Przykład: checkov -d my_terraform_module/ -f, --file: Określa pojedynczy plik do analizy. Przydatne, gdy chcesz przetestować tylko konkretny plik IaC. Przykład: checkov -f my_terraform_file.tf -c, --check: Wykonuje tylko wybrane sprawdzenia. Przydatne, gdy chcesz skupić się na konkretnych zagadnieniach bezpieczeństwa lub zgodności. Przykład: checkov -c CKV_AWS_20,CKV_AWS_23 --skip-check: Pomija wybrane sprawdzenia. Można go użyć, gdy chcesz zignorować konkretne zasady, które uważasz za nieistotne dla swojego projektu. Przykład: checkov --skip-check CKV_AWS_20,CKV_AWS_23 --output: Określa format raportu wynikowego. Domyślnie wyniki są wyświetlane jako tekst konsoli, ale Checkov obsługuje również inne formaty, takie jak JSON, JUnit XML, CSV, GitHub Markdown i SARIF. Przykład: checkov --output json --output-file: Zapisuje raport wynikowy do pliku. Przydatne, gdy chcesz zachować wyniki analizy dla dalszego przetwarzania lub przeglądania. Przykład: checkov --output-file checkov_report.json --quiet: Ukrywa wyniki analizy w konsoli, pokazując jedynie informacje o powodzeniu lub niepowodzeniu. Przydatne, gdy chcesz skupić się tylko na ogólnym wyniku analizy. Przykład: checkov --quiet --external-checks-dir: Określa katalog z dodatkowymi zasadami sprawdzania. Można go użyć, gdy chcesz dodać własne, niestandardowe zasady do analizy Checkov. Przykład: checkov --external-checks-dir my_custom_checks/ --framework: Określa ramy, na których ma się skupić Checkov. Przydatne, gdy chcesz ograniczyć analizę do konkretnego języka IaC lub platformy. Przykład: checkov --framework terraform --download-external-modules: Pobiera zewnętrzne moduły Terraform przed wykonaniem analizy. Niezbędne, gdy analizowany kod Terraform korzysta z modułów zewnętrznych. Przykład: checkov --download-external-modules --repo-root-for-plan-enforcement: Określa ścieżkę do głównego katalogu repozytorium. Używane wraz z --download-external-modules, umożliwia analizę kodu Terraform, który zawiera odwołania do zewnętrznych modułów, stosując do nich lokalne zasady. Przykład: checkov --repo-root-for-plan-enforcement . --download-external-modules --soft-fail: Pozwala zakończyć analizę Checkov kodem wyjścia 0, nawet jeśli niektóre sprawdzenia nie powiodły się. Przydatne, gdy chcesz uniknąć przerwania procesu CI/CD z powodu niepowodzenia sprawdzeń Checkov. Przykład: checkov --soft-fail Zapraszam na kurs - po więcej Zastosowanie przełączników polecenia Checkov Przełączniki polecenia Checkov umożliwiają elastyczność w zakresie konfiguracji analizy infrastruktury jako kodu. Można je stosować w różnych scenariuszach, takich jak: Skupienie się na konkretnych zagadnieniach bezpieczeństwa lub zgodności, ograniczając analizę do wybranych zasad. Ignorowanie nieistotnych sprawdzeń lub tych, które zostały już zaakceptowane jako wyjątki. Zapisywanie wyników analizy w formacie JSON, CSV lub innych, umożliwiając ich dalsze przetwarzanie przez inne narzędzia lub przeglądanie przez zespół. Rozszerzenie zestawu zasad sprawdzania o własne, niestandardowe zasady, które są istotne dla projektu. Checkov to potężne narzędzie do statycznej analizy infrastruktury jako kodu, które oferuje szeroką gamę przełączników polecenia, umożliwiających elastyczną konfigurację analizy. Przełączniki te pozwalają na dostosowanie Checkov do indywidualnych potrzeb projektu i zespołu, zwiększając efektywność analizy i łatwość zarządzania infrastrukturą. Wykorzystanie przełączników polecenia Checkov pozwala na lepsze wykorzystanie możliwości narzędzia i osiągnięcie szybszego rozwoju oraz wyższego poziomu bezpieczeństwa w projektach opartych na infrastrukturze jako kodzie. W praktyce przełączniki polecenia Checkov są często używane w procesach CI/CD, gdzie różne zespoły mogą wymagać różnych konfiguracji sprawdzeń. Integracja Checkov z narzędziami takimi jak Jenkins, GitHub Actions czy GitLab CI pozwala na automatyczne uruchamianie analizy zgodności i bezpieczeństwa w trakcie procesu wdrażania. Wprowadzenie przełączników polecenia Checkov do procesu CI/CD pozwala na wykrywanie potencjalnych problemów związanych z bezpieczeństwem, zgodnością i wydajnością na wczesnym etapie procesu wdrażania. Dzięki temu zespoły mogą szybko reagować na wykryte problemy i zminimalizować ryzyko wprowadzenia błędów do środowiska produkcyjnego. Ponadto, stosowanie przełączników Checkov umożliwia dostosowanie analizy do indywidualnych potrzeb zespołu oraz lepsze zarządzanie wyjątkami i niestandardowymi zasadami. Wykorzystując te przełączniki, zespoły deweloperskie mogą uzyskać większą kontrolę nad analizą infrastruktury jako kodu, lepiej dostosowując narzędzie do swoich potrzeb i wymagań. W efekcie, Checkov staje się jeszcze bardziej wartościowym narzędziem w arsenale praktyk DevOps, pomagając zespołom w osiągnięciu wyższego poziomu jakości i bezpieczeństwa w ich projektach. Checkov - troche praktycznie W erze DevOps, automatyzacja procesów związanych z jakością i bezpieczeństwem kodu jest kluczowa dla sukcesu każdego projektu. Zobaczymy, jak zintegrować narzędzie Checkov z popularnym systemem ciągłej integracji Jenkins, aby automatycznie sprawdzać konfigurację infrastruktury jako kodu (IaC) podczas procesu budowy i wdrażania. Przygotowaliśmy również przykłady konfiguracji, które pomogą wdrożyć tę integrację w praktyce. Integracja Checkov z Jenkins Aby zintegrować Checkov z Jenkins, należy wykonać następujące kroki Instalacja Checkov Zainstaluj Checkov na maszynie, na której działa Jenkins, korzystając z jednej z dostępnych metod instalacji. Możesz użyć pip (Python Package Manager) lub innego menedżera pakietów, takiego jak Docker. Poniżej znajduje się przykład instalacji Checkov za pomocą pip: Konfiguracja Jenkins Po zainstalowaniu Checkov na maszynie z Jenkins, przystąp do konfiguracji Jenkins, aby uruchamiać Checkov podczas budowy projektu. Aby to zrobić, wykonaj następujące kroki: Utwórz nowy projekt w Jenkins lub edytuj istniejący, do którego chcesz dodać Checkov. W sekcji "Build" (Budowa) projektu, dodaj nowe zadanie "Execute shell" (Wykonaj polecenia powłoki) lub "Execute Windows batch command" (Wykonaj polecenia wsadowe Windows) w zależności od używanego systemu operacyjnego. W polu "Command" (Polecenie) dla nowo dodanego zadania, wprowadź polecenie, które uruchomi Checkov dla Twojego projektu. Poniżej znajduje się przykład dla projektu Terraform: Zastąp <ścieżka_do_katalogu_z_kodem> rzeczywistą ścieżką do katalogu zawierającego pliki konfiguracyjne IaC. Jeśli chcesz, aby wynik analizy Checkov był dostępny jako artefakt budowy, dodaj następujący kod do polecenia: Ten fragment spowoduje zapisanie wyników analizy Checkov do pliku o nazwie checkov_report.json. W sekcji "Post-build Actions" (Działania po budowie) projektu, dodaj nową akcję "Archive the artifacts" (Archiwizuj artefakty), a następnie wprowadź nazwę pliku z wynikami analizy (w tym przypadku checkov_report.json) w polu " Files to archive" (Pliki do archiwizacji). Dzięki temu plik z wynikami analizy Checkov zostanie zarchiwizowany jako artefakt po zakończeniu budowy. Uruchomienie i monitorowanie wyników Po zakończeniu konfiguracji Jenkins, uruchom budowę projektu. Jenkins automatycznie uruchomi Checkov wraz z innymi zadaniami, a wynik analizy Checkov będzie dostępny jako artefakt budowy. Możesz monitorować postęp budowy i sprawdzić wynik analizy Checkov w zakładce "Console Output" (Wyjście konsoli) dla danej budowy. W przypadku wykrycia niezgodności z zasadami bezpieczeństwa, zgodności lub wydajności, Checkov zwróci błąd i budowa zostanie oznaczona jako nieudana. Dzięki temu zespół deweloperski może szybko zidentyfikować i naprawić problemy, zanim zostaną wprowadzone do środowiska produkcyjnego. Przykład: Integracja Checkov z Jenkins dla projektu Terraform Poniżej znajduje się przykład konfiguracji zadania Jenkins dla projektu Terraform z użyciem Checkov: W powyższym przykładzie, Checkov analizuje pliki konfiguracyjne Terraform w katalogu ./terraform i zapisuje wynik analizy do pliku checkov_report.json. Terraform i IaC Automatyzacja procesu wdrażania infrastruktury jest kluczowa dla osiągnięcia szybkości i niezawodności w praktykach DevOps. Zobaczymy, jak zintegrować Terraform z Jenkins, aby automatycznie wdrażać maszyny wirtualne w chmurze DigitalOcean. Przedstawimy sposób konfiguracji trzech połączonych ze sobą zadań Jenkins, które odpowiednio wykonają polecenia terraform validate, terraform plan oraz terraform apply. Przygotowanie środowiska Upewnij się, że masz zainstalowany Terraform oraz Jenkins na swojej maszynie. Skonfiguruj dostęp do swojego konta DigitalOcean, tworząc token API i przechowując go jako zmienną środowiskową DIGITALOCEAN_TOKEN na maszynie, na której działa Jenkins. Utwórz prosty projekt Terraform, który tworzy maszynę wirtualną w DigitalOcean. Przykładowy plik main.tf może wyglądać tak: Utwórz plik variables.tf z definicją zmiennej do_token: Konfiguracja Jenkins Job 1: Terraform Validate Utwórz nowy zadanie typu "Pipeline" o nazwie "terraform-validate". W sekcji "Pipeline", wybierz "Pipeline script" i wpisz następujący kod: Job 2: Terraform Plan Utwórz kolejne zadanie typu "Pipeline" o nazwie "terraform-plan". W sekcji "Pipeline", wybierz "Pipeline script" i wpisz następujący kod: Job 3: Terraform Apply Utwórz ostatnie zadanie typu "Pipeline" o nazwie "terraform-apply". W sekcji "Pipeline", wybierz "Pipeline script" i wpisz następujący kod: Uruchomienie procesu Po skonfigurowaniu wszystkich zadań Jenkins, uruchom zadanie "terraform-validate". Jeśli walidacja kodu Terraform przebiegnie pomyślnie, automatycznie zostaną uruchomione zadania "terraform-plan" i "terraform-apply", które odpowiednio zapiszą plan działania Terraform do pliku tfplan oraz zastosują plan/apply w celu utworzenia maszyny wirtualnej w DigitalOcean. Dodanie checkov do konfiguracji Job: Checkov Analysis a. Utwórz nowe zadanie typu "Pipeline" o nazwie "checkov-analysis". b. W sekcji "Pipeline", wybierz "Pipeline script" i wpisz następujący kod: Aktualizacja pozostałych zadań Jenkins a. Edytuj zadanie "terraform-validate" i dodaj sekcję triggers, która wygląda następująco: Wykonaj podobne zmiany w zadaniach "terraform-plan" i "terraform-apply", dodając sekcję triggers z odpowiednimi wartościami upstreamProjects (odpowiednio "terraform-validate" i "terraform-plan"). Po skonfigurowaniu wszystkich zadań Jenkins, uruchom zadanie "checkov-analysis". Jeśli analiza Checkov zakończy się powodzeniem, kolejno zostaną uruchomione zadania "terraform-validate", "terraform-plan" i "terraform-apply", które odpowiednio zwalidują, zaplanują i wdrożą infrastrukturę za pomocą Terraform. W przypadku wykrycia niezgodności z zasadami bezpieczeństwa, zgodności lub wydajności przez Checkov, zadanie "checkov-analysis" zakończy się niepowodzeniem, a raport z wynikami analizy zostanie zarchiwizowany jako artefakt. Pozostałe zadania Terraform nie zostaną uruchomione, dopóki nie zostaną naprawione wykryte problemy. Podsumowanie W niniejszym artykułu przedstawiliśmy, Checkov oraz jak dodać analizę Checkov do procesu automatyzacji wdrażania maszyn wirtualnych w chmurze DigitalOcean za pomocą Terraform i Jenkins. Integracja Checkov z Jenkins umożliwia automatyczne sprawdzanie konfiguracji infrastruktury jako kodu podczas procesu budowy i wdrażania, co zwiększa efektywność, niezawodność oraz bezpieczeństwo. Dzięki dodaniu warstwy walidacji bezpieczeństwa i zgodności za pomocą Checkov, zespoły deweloperskie mogą utrzymać wysoką jakość i bezpieczeństwo kodu, jednocześnie skracając czas potrzebny na identyfikację i naprawę problemów. Ponadto integracja Checkov z Terraform i Jenkins pozwala na łatwe zarządzanie i monitorowanie procesu automatyzacji, co przyczynia się do poprawy jakości i bezpieczeństwa wdrażanej infrastruktury. Całkowity proces automatyzacji, obejmujący analizę Checkov oraz walidację, planowanie i wdrażanie infrastruktury za pomocą Terraform, umożliwia zespołom deweloperskim pełne wykorzystanie zalet infrastruktury jako kodu i praktyk DevOps, jednocześnie redukując ryzyko wprowadzenia błędów do środowiska produkcyjnego. Oczywiscie więcej takich przykładów w kursie terraform na platformie Szkolenia.Cloud

  • Przydatne polecania dla każdego - Linux part 1

    Polecenie top top pozwala nam podejrzeć aktualną zajętość systemu poprzez procesy, wykorzystanie pamięci wirtualnej oraz CPU. Możemy sprawdzić takie wartości jak dostępna pamięć RAM, który użytkownik generuje obciążenie maszyny, lub jaki proces zabiera najwięcej zasobów. Doświadczeni użytkownicy lub obeznani wiedzą że polecenie to zwraca więcej informacji z sudo lub na użytkowniku root, musisz pamiętać że, to co widzisz często ogranicza cię z punktu widzenia użytkownika. Procesy danego użytkownika można podejrzeć przez wariacje polecania z argumentem -u i wartością w postaci nazwy użytkownika. top -u Kolumny wyświetlają odpowiednio: PID: Pokazuje unikalny identyfikator procesu zadania. PR: Priorytet procesu. Im niższy numer, tym wyższy priorytet. VIRT: Całkowita pamięć wirtualna używana przez zadanie. USER: Nazwa użytkownika właściciela zadania. %CPU: Reprezentuje użycie procesora. TIME+: Czas procesora, taki sam jak „TIME”, ale odzwierciedlający większą szczegółowość do setnych części sekundy. SHR: Reprezentuje rozmiar pamięci współdzielonej (kb) używanej przez zadanie. NI: Reprezentuje wartość nice zadania. Ujemna wartość Nice oznacza wyższy priorytet, a dodatnia wartość Nice oznacza niższy priorytet. %MEM: Pokazuje wykorzystanie pamięci przez zadanie. RES: Ile fizycznej pamięci RAM zużywa proces, mierzone w kilobajtach. COMMAND: Nazwa polecenia, które rozpoczęło proces. Oczywiście do zgłębiania wszystkich opcji można skorzystać z man top lub top -h Polecenie ls Systemy operacyjne Linux są szeroko stosowane zarówno w środowiskach domowych, jak i korporacyjnych. Jednym z najbardziej podstawowych, lecz niezwykle użytecznych poleceń w systemach Linux jest polecenie 'ls', które pozwala na wyświetlanie zawartości katalogów. W tym artykule przyjrzymy się poleceniu 'ls' wraz z opisem poszczególnych atrybutów (przełączników) i przykładami ich zastosowania. Podstawy polecenia 'ls' Polecenie 'ls' jest używane do wyświetlania informacji na temat plików i katalogów w bieżącym katalogu. Bez żadnych argumentów, 'ls' wyświetla zawartość bieżącego katalogu, posortowaną alfabetycznie: $ ls Przełączniki i atrybuty polecenia 'ls' Przełączniki (atrybuty) pozwalają na modyfikację zachowania polecenia 'ls'. Oto niektóre z najczęściej używanych: '-a' lub '--all': Wyświetla wszystkie pliki, w tym ukryte pliki (rozpoczynające się od kropki) $ ls -a '-l': Wyświetla szczegółowe informacje na temat plików, w tym prawa dostępu, ilość dowiązań, właściciela, grupę, rozmiar, datę modyfikacji i nazwę $ ls -l '-h' lub '--human-readable': Wyświetla rozmiary plików w formacie łatwym do odczytania (KB, MB, GB) $ ls -lh '-r' lub '--reverse': Odwraca kolejność sortowania $ ls -lr '-S': Sortuje pliki według rozmiaru $ ls -lS '-t': Sortuje pliki według czasu modyfikacji $ ls -lt '-R' lub '--recursive': Wyświetla zawartość katalogów rekurencyjnie $ ls -R '-d' lub '--directory': Wyświetla informacje na temat samych katalogów, a nie ich zawartości $ ls -ld '-1': Wyświetla jeden plik na wiersz $ ls -1 Przykłady użycia polecenia 'ls' Poniżej znajdują się przykłady łączenia różnych atrybutów polecenia 'ls': Wyświetlanie szczegółowych informacji o plikach w formacie łatwym do odczytania: $ ls -lh Wyświetlanie wszystkich plików, w tym ukrytych, z posortowanymi według rozmiaru: $ ls -laS Wyświetlanie plików posortowanych według czasu modyfikacji, z odwróconą kolejnością i w formacie łatwym do odczytania: $ ls -lhtr Wyświetlanie zawartości katalogów rekurencyjnie, z jednym plikiem na wiersz: $ ls -R1 Wyświetlanie informacji na temat katalogu '/etc', zamiast jego zawartości: $ ls -ld /etc Filtrowanie wyników polecenia 'ls' Można również łączyć polecenie 'ls' z innymi poleceniami, aby filtrować wyniki. Oto kilka przykładów: Wyszukiwanie plików z rozszerzeniem '.txt': $ ls -l *.txt Wyszukiwanie plików zaczynających się od 'config': $ ls -l config* Wyświetlanie plików zawierających słowo 'sample', korzystając z polecenia 'grep': $ ls -l | grep 'sample' Zmiana kolorów wyjścia polecenia 'ls' Polecenie 'ls' można skonfigurować, aby wyświetlać wyniki w różnych kolorach, co może pomóc w szybszym zrozumieniu struktury katalogów. Aby to zrobić, można ustawić zmienną środowiskową 'LS_COLORS'. Na przykład: $ export LS_COLORS="di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:" Polecenie 'ls' jest jednym z najbardziej podstawowych i użytecznych poleceń w systemach Linux. Pozwala na szybkie przeglądanie zawartości katalogów, a różne atrybuty (przełączniki) umożliwiają precyzyjne dostosowanie wyjścia do potrzeb użytkownika. Dzięki łączeniu polecenia 'ls' z innymi poleceniami, takimi jak 'grep', można filtrować wyniki i wyszukiwać określone pliki. Omówiliśmy podstawowe funkcje polecenia 'ls', różne atrybuty (przełączniki) dostępne dla tego polecenia, przykłady ich zastosowania, a także sposoby na filtrowanie wyników i dostosowywanie kolorów wyjścia. Znajomość polecenia 'ls' i jego atrybutów jest niezbędna dla każdego użytkownika systemu Linux, zarówno początkujących, jak i zaawansowanych. Mając na uwadze, że polecenie 'ls' jest powszechnie stosowane w codziennych czynnościach związanych z zarządzaniem plikami i katalogami, warto poświęcić czas na naukę różnych przełączników i technik, które można zastosować, aby uczynić korzystanie z terminala bardziej efektywnym i wydajnym. Tar: Archiwizacja i kompresja plików w Linuksie Tar, czyli "tape archive", to popularne narzędzie linuksowe służące do archiwizowania i kompresji plików. Choć początkowo było używane do zapisywania danych na taśmach magnetycznych, dziś stało się niezastąpionym narzędziem dla administratorów systemów, programistów i użytkowników domowych. W tym artykule przyjrzymy się funkcjom polecenia tar oraz różnym przełącznikom, które można zastosować, aby uprościć i przyspieszyć proces archiwizacji i kompresji plików. Podstawowe użycie polecenia tar Podstawowe użycie polecenia tar polega na utworzeniu archiwum z wybranych plików lub katalogów. Składnia polecenia jest następująca: tar [opcje] [nazwa_archiwum.tar] [pliki_do_archiwizacji] Oto kilka przykładów użycia tar: Archiwizacja pojedynczego pliku: tar -cvf archiwum.tar plik.txt W tym przypadku, -c oznacza "create" (utwórz), -v to "verbose" (tryb szczegółowy) oraz -f to "file" (plik). Utworzyliśmy archiwum o nazwie "archiwum.tar" zawierające plik "plik.txt". Archiwizacja wielu plików: tar -cvf archiwum.tar plik1.txt plik2.txt plik3.txt Analogicznie, tworzymy archiwum "archiwum.tar", które będzie zawierać pliki "plik1.txt", "plik2.txt" oraz "plik3.txt". Archiwizacja katalogu: tar -cvf archiwum.tar katalog/ W tym przypadku archiwizujemy cały katalog "katalog/" do pliku "archiwum.tar". Kompresja plików z użyciem tar Tar pozwala na kompresję plików w trakcie archiwizacji. Dostępne są dwa popularne formaty kompresji: gzip (z rozszerzeniem .tar.gz) i bzip2 (z rozszerzeniem .tar.bz2). Oto jak skorzystać z tych formatów: Kompresja gzip: tar -czvf archiwum.tar.gz katalog/ Dodaliśmy przełącznik -z oznaczający kompresję gzip. Utworzony plik będzie miał rozszerzenie ".tar.gz". Kompresja bzip2: tar -cjvf archiwum.tar.bz2 katalog/ W tym przypadku używamy przełącznika -j dla kompresji bzip2. Utworzony plik będzie miał rozszerzenie ".tar.bz2". Wypakowywanie archiwów tar Aby wypakować archiwum tar, możemy użyć następujących przełączników: Wypakowywanie archiwum tar: tar -xvf archiwum.tar Przełącznik -x oznacza "extract" (wypakuj). Wypakujemy zawartość archiwum "archiwum.tar" do bieżącego katalogu. Wypakowywanie archiwum tar.gz: tar -xzvf archiwum.tar.gz Dodajemy przełącznik -z dla obsługi kompresji gzip. Wypakujemy zawartość archiwum "archiwum.tar.gz" do bieżącego katalogu. Wypakowywanie archiwum tar.bz2: tar -xjvf archiwum.tar.bz2 Używamy przełącznika -j dla obsługi kompresji bzip2. Wypakowujemy zawartość archiwum "archiwum.tar.bz2" do bieżącego katalogu. Wypakowywanie archiwów do określonego katalogu Jeśli chcemy wypakować archiwum do innego katalogu niż bieżący, możemy użyć przełącznika -C: tar -xvf archiwum.tar -C /ścieżka/do/katalogu/ Wypakowujemy zawartość archiwum "archiwum.tar" do katalogu "/ścieżka/do/katalogu/". Podobnie, dla archiwów tar.gz i tar.bz2, dodajemy odpowiednio przełączniki -z i -j. Wyświetlanie zawartości archiwum bez wypakowywania Aby wyświetlić zawartość archiwum tar bez wypakowywania, używamy przełącznika -t: tar -tvf archiwum.tar Dla archiwów tar.gz i tar.bz2, dodajemy odpowiednio przełączniki -z i -j. Dodawanie plików do istniejącego archiwum Jeśli chcemy dodać pliki do istniejącego archiwum, używamy przełącznika -r: tar -rvf archiwum.tar nowy_plik.txt Należy pamiętać, że opcja -r nie działa z archiwami skompresowanymi (tar.gz i tar.bz2). Usuwanie plików z archiwum Aby usunąć pliki z archiwum, możemy skorzystać z narzędzia tar w połączeniu z grep i xargs: tar -tvf archiwum.tar | grep -v 'plik_do_usunięcia' | tar -czvf nowe_archiwum.tar.gz -T - Powyższe polecenie utworzy nowe skompresowane archiwum "nowe_archiwum.tar.gz" bez pliku "plik_do_usunięcia". Polecenie tar jest niezwykle wszechstronnym narzędziem pozwalającym na archiwizację, kompresję oraz zarządzanie plikami i katalogami w systemach Linux. Umożliwia tworzenie archiwów tar, tar.gz i tar.bz2, a także ich wypakowywanie, przeglądanie i modyfikowanie. Omówiliśmy podstawowe opcje polecenia tar, takie jak tworzenie archiwów, kompresowanie plików, wypakowywanie archiwów, wyświetlanie zawartości archiwów, dodawanie i usuwanie plików z archiwów oraz wypakowywanie archiwów do określonego katalogu. Zastosowanie tych opcji pozwala na efektywne zarządzanie plikami i katalogami w codziennej pracy z systemami Linux. Warto jednak pamiętać, że polecenie tar posiada wiele innych przełączników, które mogą być przydatne w różnych sytuacjach. W razie potrzeby warto zapoznać się z dokumentacją polecenia tar, aby odkryć jeszcze więcej funkcji tego niezastąpionego narzędzia. Aby uzyskać więcej informacji na temat polecenia tar oraz jego opcji, można skorzystać z oficjalnej dokumentacji, wpisując w terminalu: man tar Lub odwiedzając stronę internetową projektu tar, dostępną pod adresem: https://www.gnu.org/software/tar/ cd, mkdir, chmod, chown, rm i zarządzanie uprawnieniami Systemy operacyjne oparte na Linuksie, takie jak Ubuntu, Debian, Fedora czy Arch, są szeroko wykorzystywane zarówno przez programistów, jak i administratorów systemów. Język poleceń linuksowych jest niezwykle potężnym narzędziem, które pozwala na kontrolowanie i zarządzanie systemem z poziomu terminala. Omówimy podstawowe polecenia linuksowe: cd, mkdir, chmod, chown, rm oraz przełączniki, które można z nimi używać. Dodatkowo, omówimy uprawnienia w systemie Linux oraz ich konstrukcję, wyjaśniając pojęcia takie jak użytkownik (user), grupa (group) i inne (other), a także rwx i zapis liczbowy, np. 777. Polecenie cd Polecenie "cd" (change directory) służy do zmiany bieżącego katalogu roboczego. Jest to podstawowe polecenie, które musisz znać, aby poruszać się po strukturze katalogów w systemie Linux. Oto kilka przykładów użycia polecenia cd: cd nazwa_katalogu: przechodzi do podanego katalogu. cd .. : przechodzi do katalogu nadrzędnego (rodzica). cd: przechodzi do katalogu domowego użytkownika. cd -: przechodzi do poprzedniego katalogu roboczego. Polecenie mkdir Polecenie "mkdir" (make directory) służy do tworzenia nowych katalogów. Aby utworzyć nowy katalog, po prostu wpisz "mkdir" oraz nazwę katalogu, który chcesz utworzyć. Oto kilka przykładów użycia polecenia mkdir: mkdir nazwa_katalogu: tworzy nowy katalog o podanej nazwie. mkdir -p sciezka/do/katalogu: tworzy katalog wraz z całą strukturą katalogów, jeśli nie istnieją. mkdir -m 755 nazwa_katalogu: tworzy katalog z określonymi uprawnieniami (w tym przypadku 755). Polecenie chmod Polecenie "chmod" (change mode) służy do zmiany uprawnień plików i katalogów. W systemach Linux uprawnienia są zdefiniowane dla trzech kategorii: użytkowników (user), grup (group) i innych (other). Każdej z tych kategorii można przydzielić trzy rodzaje uprawnień: odczyt (r), zapis (w) i wykonanie (x). Uprawnienia te są zapisywane za pomocą trzech cyfr, gdzie każda cyfra reprezentuje uprawnienia dla jednej z kategorii (użytkownik, grupa, inne). Aby zmienić uprawnienia pliku lub katalogu, użyj polecenia chmod, podając upania oraz ścieżkę do pliku lub katalogu. Oto kilka przykładów użycia polecenia chmod: chmod 755 nazwa_pliku: zmienia uprawnienia pliku na 755 (użytkownik: rwx, grupa: r-x, inne: r-x). chmod u+x nazwa_pliku: dodaje uprawnienia do wykonania (x) dla właściciela pliku. chmod g-w nazwa_pliku: usuwa uprawnienia do zapisu (w) dla grupy pliku. chmod o=r nazwa_pliku: ustawia uprawnienia dla innych (other) na tylko do odczytu (r). Polecenie chown Polecenie "chown" (change owner) pozwala na zmianę właściciela pliku lub katalogu oraz grupy, do której należy plik lub katalog. Aby zmienić właściciela lub grupę, użyj polecenia chown, podając nowego właściciela, nową grupę oraz ścieżkę do pliku lub katalogu. Oto kilka przykładów użycia polecenia chown: chown nowy_wlasciciel nazwa_pliku: zmienia właściciela pliku na nowego właściciela. chown :nowa_grupa nazwa_pliku: zmienia grupę pliku na nową grupę. chown nowy_wlasciciel:nowa_grupa nazwa_pliku: zmienia zarówno właściciela, jak i grupę pliku na podane wartości. chown -R nowy_wlasciciel:nowa_grupa katalog: zmienia właściciela i grupę dla katalogu oraz wszystkich jego zawartości rekurencyjnie. Polecenie rm Polecenie "rm" (remove) służy do usuwania plików i katalogów. Aby usunąć plik lub katalog, użyj polecenia rm, podając ścieżkę do pliku lub katalogu. Oto kilka przykładów użycia polecenia rm: rm nazwa_pliku: usuwa plik o podanej nazwie. rm -f nazwa_pliku: usuwa plik o podanej nazwie bez pytania o potwierdzenie. rm -r katalog: usuwa katalog oraz jego zawartość rekurencyjnie. rm -rf katalog: usuwa katalog oraz jego zawartość rekurencyjnie i bez pytania o potwierdzenie. Uprawnienia w systemie Linux Jak wcześniej wspomniano, uprawnienia w systemie Linux są zdefiniowane dla trzech kategorii: użytkowników (user), grup (group) i innych (other). Każdej z tych kategorii można przydzielić trzy rodzaje uprawnień: odczyt (r), zapis (w) i wykonanie (x). Uprawnienia te są zapisywane za pomocą trzech cyfr, gdzie każda cyfra reprezentuje uprawnienia dla jednej z kategorii (użytkownik, grupa, inne). Użytkownik (user): osoba, która jest właścicielem pliku lub katalogu. Właściciel ma największą kontrolę nad plikiem lub katalogiem i może zmieniać jego uprawnienia oraz właściciela i grupę. Grupa (group): zbiór użytkowników, którzy mają wspólne uprawnienia do plików i katalogów. Członkowie grupy mogą mieć dostęp do plików i katalogów na podstawie uprawnień przydzielonych grupie. Inne (other): wszyscy pozostali użytkownicy, którzy nie są właścicielami pliku ani nie należą do grupy, do której należy plik lub katalog. Uprawnienia dla innych określają, co mogą robić z plikiem lub katalogiem pozostali użytkownicy systemu. Każda z trzech cyfr uprawnień jest reprezentowana przez wartość liczbową w przedziale od 0 do 7, gdzie każda cyfra oznacza sumę wartości dla odczytu (r), zapisu (w) i wykonania (x) dla danej kategorii: Odczyt (r): wartość 4 Zapis (w): wartość 2 Wykonanie (x): wartość 1 W związku z tym uprawnienia można przedstawić jako trzy cyfry, gdzie każda cyfra jest sumą wartości dla odczytu, zapisu i wykonania. Na przykład, uprawnienia "rwxr-xr-x" można zapisać jako "755", gdzie pierwsza cyfra (7) oznacza pełne uprawnienia dla właściciela (4+2+1), druga cyfra (5) oznacza uprawnienia do odczytu i wykonania dla grupy (4+0+1), a trzecia cyfra (5) oznacza uprawnienia do odczytu i wykonania dla innych (4+0+1). Podstawowe polecenia linuksowe, takie jak cd, mkdir, chmod, chown, rm, oraz ich przełączniki. Przykłady zastosowania tych poleceń pomogą w lepszym zrozumieniu i sprawnej pracy z systemem Linux. Dodatkowo, przedstawiliśmy koncepcje uprawnień w systemie Linux oraz ich konstrukcję, wyjaśniając pojęcia użytkownik (user), grupa (group), inne (other) oraz rwx i zapis liczbowy, np. 777. Zrozumienie tych koncepcji oraz umiejętne korzystanie z poleceń pozwoli na efektywne zarządzanie systemem Linux oraz kontrolowanie dostępu do plików i katalogów. cp i mv Linux, jako system operacyjny oparty na Unixie, oferuje bogaty zestaw poleceń dostępnych z linii komend. Wśród tych poleceń, dwa z nich, cp i mv, są niezbędne do codziennego zarządzania plikami i katalogami. W tym artykule przedstawimy podstawy tych poleceń, ich przełączniki i praktyczne przykłady użycia. Polecenie cp Polecenie cp jest używane do kopiowania plików i katalogów. Składnia tego polecenia jest następująca: cp [OPCJE] ŹRÓDŁO... CEL Przełączniki polecenia cp Oto niektóre przydatne przełączniki dla polecenia cp: -r lub --recursive: Kopiuje katalogi rekursywnie. -i lub --interactive: Wypytuje użytkownika przed nadpisaniem istniejących plików. -n lub --no-clobber: Nie nadpisuje istniejących plików. -u lub --update: Kopiuje tylko, gdy plik źródłowy jest nowszy niż plik docelowy lub gdy plik docelowy nie istnieje. -v lub --verbose: Wyświetla informacje o kopiowanych plikach. Przykłady użycia polecenia cp Kopiowanie pojedynczego pliku do innego katalogu: cp plik.txt /katalog/docelowy Kopiowanie wielu plików do innego katalogu: cp plik1.txt plik2.txt /katalog/docelowy Kopiowanie katalogu rekursywnie: cp -r /katalog/źródłowy /katalog/docelowy Kopiowanie pliku z potwierdzeniem przed nadpisaniem: cp -i plik.txt /katalog/docelowy Aktualizacja plików w katalogu docelowym tylko wtedy, gdy plik źródłowy jest nowszy: cp -u plik.txt /katalog/docelowy Polecenie mv Polecenie mv służy do przenoszenia lub zmiany nazwy plików i katalogów. Składnia tego polecenia wygląda następująco: mv [OPCJE] ŹRÓDŁO... CEL Przełączniki polecenia mv Oto niektóre przydatne przełączniki dla polecenia mv: -i lub --interactive: Wypytuje użytkownika przed nadpisaniem istniejących plików. -n lub --no-clobber: Nie nadpisuje istniejących plików. -u lub --update: Przenosi tylko, gdy plik źródłowy jest nowszy niż plik docelowy lub gdy plik docelowy nie istnieje. -v lub --verbose: Wyświetla informacje o przenoszonych plikach. Przykłady użycia polecenia mv Zmiana nazwy pliku: mv stary_plik.txt nowy_plik.txt Przenoszenie pojedynczego pliku do innego katalogu: mv plik.txt /katalog/docelowy Przenoszenie wielu plików do innego katalogu: mv plik1.txt plik2.txt /katalog/docelowy Przenoszenie katalogu do innego katalogu: mv /katalog/źródłowy /katalog/docelowy Przenoszenie pliku z potwierdzeniem przed nadpisaniem: mv -i plik.txt /katalog/docelowy Aktualizacja plików w katalogu docelowym tylko wtedy, gdy plik źródłowy jest nowszy: mv -u plik.txt /katalog/docelowy Polecenia cp i mv są kluczowymi narzędziami dla każdego użytkownika systemu Linux. Pozwala na kopiowanie, przenoszenie i zmianę nazwy plików i katalogów z łatwością. W tym artykule przedstawiliśmy podstawy tych poleceń, ich przełączniki oraz praktyczne przykłady użycia. Pamiętaj, że zarówno polecenie cp, jak i mv mają jeszcze więcej opcji i przełączników, które można sprawdzić w oficjalnej dokumentacji. Zachęcamy do eksperymentowania z różnymi opcjami, aby znaleźć najlepsze rozwiązania dla swoich potrzeb. W miarę jak zdobędziesz doświadczenie z tymi poleceniami, zaczniesz doceniać ich elastyczność i potęgę, które pozwalają na zarządzanie plikami i katalogami w systemie Linux. ps Polecenie ps (process status) jest jednym z najważniejszych poleceń dostępnych w systemach Linux i Unix. Pozwala ono na monitorowanie aktywnych procesów, zarówno własnych, jak i innych użytkowników. W tym artykule omówimy podstawowe zastosowania polecenia ps, a także różne przełączniki i opcje, które możemy wykorzystać, aby uzyskać więcej informacji o działających procesach. Podstawowe użycie Najprostszym sposobem użycia polecenia ps jest wpisanie go bez żadnych dodatkowych argumentów. W ten sposób otrzymamy informacje o procesach, które są uruchomione w bieżącej sesji terminala. ps Wynik polecenia może wyglądać następująco: PID TTY TIME CMD 1932 pts/1 00:00:00 bash 1996 pts/1 00:00:00 ps Wynik przedstawia cztery kolumny: PID (Process ID) – identyfikator procesu. TTY – terminal, z którego uruchomiono proces. TIME – łączny czas procesora, który został zużyty przez proces. CMD – nazwa polecenia użytego do uruchomienia procesu. Przełączniki i opcje Polecenie ps posiada różne przełączniki i opcje, które można zastosować w celu uzyskania dodatkowych informacji o procesach. Przełączniki mogą być używane w kombinacji, co pozwala na bardziej szczegółowy przegląd działających procesów. ps -e: Wyświetla wszystkie procesy systemu. ps -e ps -u nazwa_użytkownika: Wyświetla procesy dla określonego użytkownika. ps -u root ps -f: Wyświetla pełne informacje o procesach (włączając rodzica, identyfikator grupy procesów, terminal itp.). ps -f ps -l: Wyświetla długą listę informacji o procesach (włączając priorytet, stan procesu, itp.). ps -l ps -x: Wyświetla procesy bez przypisanego terminala (tzw. "daemon processes"). ps -x ps -t nazwa_terminala: Wyświetla procesy uruchomione w określonym terminalu. ps -t pts/1 ps --sort nazwa_pola: Sortuje procesy według określonego pola (np. czasu procesora, zużycia pamięci, identyfikatora procesu itp.). ps --sort pid ps -C nazwa_procesu: Wyświetla procesy o określonej nazwie. ps -C bash ps -p PID: Wyświetla informacje o procesie o określonym identyfikatorze (PID). ps -p 1932 ps -o lista_pól: Wyświetla wybrane pola dla każdego procesu. Można podać listę pól oddzieloną przecinkami. ps -o pid,comm,user ps -axjf: Wyświetla drzewo procesów, pokazując związki między procesami oraz ich rodzicami. ps -axjf Przykłady użycia Wyświetlanie procesów, które zużywają najwięcej pamięci: ps -eo pid,comm,%mem --sort -%mem Wynik przedstawia trzy kolumny: identyfikator procesu (PID), nazwę procesu (comm) oraz procent zużywanej pamięci (%mem), posortowane malejąco według zużycia pamięci. Wyświetlanie procesów, które zużywają najwięcej czasu procesora: ps -eo pid,comm,%cpu --sort -%cpu Podobnie jak w poprzednim przykładzie, wynik przedstawia trzy kolumny: identyfikator procesu (PID), nazwę procesu (comm) oraz procent zużytego czasu procesora (%cpu), posortowane malejąco według zużycia czasu procesora. Wyszukanie procesów, które zawierają określone słowo kluczowe: ps -ef | grep "kluczowe_slowo" Ten przykład łączy polecenie ps z poleceniem grep, które wyszukuje procesy, które zawierają podane słowo kluczowe. Zabicie procesu o określonym identyfikatorze (PID): ps -p 1932 | awk 'NR > 1 {print $1}' | xargs kill W tym przypadku używamy kombinacji poleceń ps, awk oraz xargs do wyszukania i zakończenia procesu o określonym identyfikatorze (PID). Polecenie ps jest niezwykle użyteczne w zarządzaniu i monitorowaniu procesów w systemach Linux i Unix. Omówiliśmy podstawowe zastosowania polecenia ps, różne przełączniki, które pozwalają na uzyskanie dodatkowych informacji o procesach, oraz przykłady użycia. Dzięki różnym przełącznikom i opcjom, polecenie ps pozwala na analizowanie działających procesów, co jest niezbędne w diagnostyce problemów związanych z wydajnością i zarządzaniem systemem. Warto jednak pamiętać, że polecenie ps jest jedynie narzędziem do wyświetlania informacji o procesach i, aby wpłynąć na ich działanie, należy użyć innych poleceń, takich jak kill, renice, pkill czy killall. Znajomość poleceń związanych z zarządzaniem procesami jest kluczowa dla administratorów systemów Linux, a także dla programistów i użytkowników, którzy chcą monitorować swoje aplikacje i usługi. Praktykowanie i eksperymentowanie z poleceniem ps oraz jego przełącznikami pozwoli na lepsze zrozumienie procesów systemowych i ułatwi rozwiązywanie problemów związanych z działaniem systemu. W miarę jak będziesz zdobywać doświadczenie w pracy z poleceń ps, odkryjesz kolejne sposoby jego wykorzystania oraz będziesz w stanie tworzyć coraz bardziej zaawansowane zapytania. Warto również zaznaczyć, że istnieją inne narzędzia dostępne w systemach Linux i Unix, które mogą pomóc w zarządzaniu procesami, takie jak top, htop, pgrep, pstree czy lsof. Każde z nich ma swoje specyficzne funkcje, które uzupełniają możliwości polecenia ps. Warto więc zgłębić ich działanie i zapoznać się z ich funkcjonalnościami, aby poszerzyć swoją wiedzę na temat zarządzania procesami w systemie Linux. touch, tee, nano, vim Unix i Linux oferują różnorodne narzędzia, które umożliwiają edytowanie plików tekstowych. W tym artykule omówimy cztery z nich: touch, tee, nano i vim. Przedstawimy przykłady ich użycia oraz atrybuty dodatkowe, które mogą znacznie ułatwić pracę. Polecenie Touch Polecenie Touch pozwala tworzyć puste pliki lub aktualizować datę modyfikacji istniejących już plików. Jest to bardzo przydatne narzędzie, gdy chcemy szybko utworzyć plik lub zmienić datę modyfikacji pliku. Aby utworzyć nowy plik, wystarczy wpisać: touch nowy_plik.txt Jeśli plik już istnieje, Touch zmieni datę modyfikacji na aktualną. Na przykład: touch stary_plik.txt spowoduje, że data modyfikacji pliku stary_plik.txt zostanie zaktualizowana do bieżącej daty i czasu. Atrybuty dodatkowe, które można użyć z Touch, obejmują między innymi: -a: zmienia tylko datę dostępu do pliku, a nie datę modyfikacji; -c: nie tworzy nowego pliku, jeśli nie istnieje; -m: zmienia tylko datę modyfikacji, a nie datę dostępu. Polecenie Tee Polecenie Tee umożliwia wyjście z jednego strumienia danych do wielu plików jednocześnie. Jest to przydatne, gdy chcemy zapisać dane w kilku plikach jednocześnie lub przekierować je do innego procesu. Aby użyć Tee, wpisz: ls | tee plik1.txt plik2.txt W tym przykładzie wyjście z polecenia "ls" zostanie przekierowane do plików plik1.txt i plik2.txt. Można też użyć Tee, aby zapisywać dane w trybie dopisywania. W tym celu należy dodać atrybut -a. Na przykład: echo "Nowa linia" | tee -a plik1.txt plik2.txt Atrybuty dodatkowe, które można użyć z Tee, obejmują między innymi: -i: nadpisuje pliki bez potwierdzania; -p: zachowuje kolejność zapisywania danych z jednego strumienia do kilku plików; -q: w trybie cichym nie wyświetla informacji o zapisywaniu danych do plików. Polecenie Nano Nano jest edytorem tekstu wiersza poleceń, który jest łatwy w użyciu i przejrzysty. Może być stosowany zarówno przez początkujących, jak i zaawansowanych użytkowników. Po uruchomieniu Nano, można zacząć edycję pliku, wpisując: nano nazwa_pliku.txt Aby zapisać zmianę w pliku, należy użyć kombinacji klawiszy Ctrl + O. Aby wyjść z edytora Nano, należy użyć kombinacji klawiszy Ctrl + X. Atrybuty dodatkowe, które można użyć z Nano, obejmują między innymi: -c: włącza kolory dla składni; -i: włącza inteligentne automatyczne wcięcia; -v: włącza tryb uruchamiania edytora z kontrolą wersji. Polecenie Vim Vim jest jednym z najpopularniejszych edytorów tekstu na linuksie i oferuje wiele funkcji, które umożliwiają szybką i efektywną edycję plików tekstowych. Aby uruchomić Vim, wpisz: vim nazwa_pliku.txt Po uruchomieniu Vim, można zacząć edycję pliku. Aby zapisać zmiany, należy wpisać :w, a następnie nacisnąć Enter. Aby wyjść z Vim, należy wpisać :q, a następnie nacisnąć Enter. Jeśli chcemy zapisać zmiany i wyjść z Vim, należy wpisać :wq. Atrybuty dodatkowe, które można użyć z Vim, obejmują między innymi: -c: wykonuje polecenie po uruchomieniu Vim; -R: uruchamia Vim w trybie tylko do odczytu; -n: wyłącza zapisywanie pliku przed wyjściem z Vim. Omówiliśmy cztery narzędzia edycji tekstu dla systemów Unix i Linux: Touch, Tee, Nano i Vim. Każde z tych narzędzi oferuje różne funkcje i atrybuty dodatkowe, które umożliwiają efektywną edycję plików tekstowych. Znajomość tych narzędzi jest niezbędna dla osób pracujących z systemami Unix i Linux, zwłaszcza dla programistów i administratorów systemów. cat, tail, less, head, more W systemach Linux i Unix, istnieje wiele poleceń, które pozwalają na efektywne zarządzanie i analizowanie plików tekstowych. W tym artykule, omówimy pięć popularnych poleceń, tj. cat, tail, less, head i more. Przedstawimy ich zastosowanie wraz z przykładami oraz dodatkowymi atrybutami, które mogą przydać się podczas pracy z plikami tekstowymi. cat Polecenie cat jest używane do wyświetlania zawartości plików tekstowych, konkatenacji plików oraz przekierowywania wyjścia do innych plików. Oto kilka przykładów: Wyświetlanie zawartości pliku: cat plik.txt Łączenie kilku plików w jeden: cat plik1.txt plik2.txt > plik_polaczony.txt Dodawanie numerów linii do wyjścia: cat -n plik.txt Wyświetlanie plików z zakończeniem każdej linii znakiem $: cat -E plik.txt tail Polecenie tail umożliwia wyświetlanie ostatnich linii pliku tekstowego. Jest szczególnie przydatne, gdy chcemy monitorować logi systemowe lub aplikacji. Przykłady użycia: Wyświetlanie ostatnich 10 linii pliku (domyślnie): tail plik.txt Wyświetlanie ostatnich 20 linii pliku: tail -n 20 plik.txt Monitorowanie pliku w czasie rzeczywistym (dynamiczne wyświetlanie zawartości): tail -f plik.txt less Polecenie less umożliwia przeglądanie zawartości plików tekstowych w trybie stronicowania. Jest szczególnie przydatne, gdy pracujemy z dużymi plikami. Przykłady użycia: Otwieranie pliku z możliwością nawigacji: less plik.txt Wyszukiwanie ciągu znaków w pliku (po otwarciu pliku): /wyszukiwany_tekst Przechodzenie do następnego wystąpienia ciągu znaków: n Przechodzenie do poprzedniego wystąpienia ciągu znaków: N head Polecenie head służy do wyświetlania pierwszych linii pliku tekstowego. Przykłady użycia: Wyświetlanie pierwszych 10 linii pliku (domyślnie): head plik.txt Wyświetlanie pierwszych 20 linii pliku: head -n 20 plik.txt Wyświetlanie pierwszych 5 linii kilku plików: head -n 5 plik1.txt plik2.txt more Polecenie more pozwala przeglądać zawartość plików tekstowych w trybie stronicowania podobnie jak less, ale z mniejszą liczbą funkcji. Przykłady użycia: Otwieranie pliku z możliwością nawigacji: more plik.txt Przewijanie o jedną linię w dół: Enter Przewijanie o jedną stronę w dół: Spacja Wyszukiwanie ciągu znaków w pliku: /wyszukiwany_tekst Omówiliśmy pięć przydatnych poleceń do zarządzania i przeglądania plików tekstowych w systemach Linux i Unix: cat, tail, less, head i more. Każde z nich ma swoje unikalne cechy i zastosowania, które sprawiają, że są niezastąpione podczas pracy z plikami tekstowymi. Znajomość tych poleceń oraz ich dodatkowych atrybutów pozwala na efektywną i wygodną pracę z plikami tekstowymi w środowisku Linux/Unix. Zachęcamy do eksplorowania manuali (man pages) dla każdego z tych poleceń, aby poznać jeszcze więcej opcji i możliwości, które mogą znacząco ułatwić codzienną pracę z plikami tekstowymi. Aby uzyskać dostęp do manuala dla dowolnego polecenia, wystarczy wpisać man przed nazwą polecenia, np.: man cat find, locate, which Linux to elastyczny i potężny system operacyjny, który oferuje użytkownikom szeroki wachlarz narzędzi do zarządzania plikami i folderami. Trzy z nich to: find, locate oraz which. W tym artykule przyjrzymy się tym poleceniom, omówimy ich zastosowania oraz pokażemy konkretne przykłady użycia. Polecenie find Polecenie find to potężne narzędzie, które pozwala wyszukiwać pliki i katalogi w systemie Linux. Find może wyszukiwać pliki na podstawie różnych kryteriów, takich jak nazwa, typ, właściciel, grupa, rozmiar, data modyfikacji i wiele innych. Składnia polecenia find: find [ścieżka] [wyrażenie] Przykład 1: Wyszukiwanie plików o nazwie "test.txt" w bieżącym katalogu: find . -name "test.txt" Przykład 2: Wyszukiwanie plików o rozmiarze większym niż 10 MB w katalogu /home/user: find /home/user -type f -size +10M Przykład 3: Wyszukiwanie wszystkich plików należących do użytkownika "user" w katalogu /var: find /var -user user Polecenie locate Polecenie locate to szybkie narzędzie do wyszukiwania plików, które bazuje na indeksie lokalizacji plików. Locate sprawdza swój indeks (aktualizowany przez polecenie updatedb) zamiast przeszukiwać cały system plików, co pozwala na szybsze wyszukiwanie. Składnia polecenia locate: locate [opcje] wzorzec Przykład 1: Wyszukiwanie plików o nazwie "example.txt": locate example.txt Przykład 2: Wyszukiwanie plików o nazwie "example.txt" z limitowaną ilością wyników (maks. 5): locate -n 5 example.txt Przykład 3: Wyszukiwanie plików zgodnych z wyrażeniem regularnym: locate -r "example.*\.txt" Polecenie which Polecenie which służy do lokalizowania plików wykonywalnych w systemie Linux. Which szuka plików wykonywalnych w katalogach wymienionych w zmiennej środowiskowej PATH. Jest to przydatne narzędzie, gdy chcemy dowiedzieć się, która wersja programu jest używana, jeśli istnieje wiele wersji zainstalowanych na systemie. Składnia polecenia which: which [opcje] program Przykład 1: Znalezienie ścieżki do pliku wykonywalnego "python": which python Przykład 2: Znalezienie wszystkich plików wykonywalnych o nazwie "java": which -a java Przykład 3: Znalezienie ścieżki do pliku wykonywalnego "gcc" i wyświetlenie informacji o wersji: which gcc && gcc --version Podsumowanie W tym Artykule to już koniec. Przedstawiłem kilka poleceń które w linux powinien znać każdy kto zmaierza zaczynać na poważnie swoja przygodę z linux. Oczywiście to nie wszystkie polecenia które warto znać i je używać. W następnym wpisie poruszę kolejne polecenia systemu linux, a teraz juz dziękuję za uwagę.

  • Narzędzie do analizy statycznej infrastruktury jako kodu w Terraform

    TFlint (Terraform Lint) to narzędzie do analizy statycznej infrastruktury jako kodu (IaC) w Terraform. Umożliwia sprawdzenie poprawności składni, struktury i zgodności z wytycznymi w plikach konfiguracyjnych Terraform. Jest to szczególnie użyteczne w przypadku zespołów pracujących na dużych projektach infrastruktury, gdzie błędy mogą być kosztowne i trudne do wykrycia. W tym artykule przedstawimy przykłady użycia polecenia TFlint, omówimy zalety jego stosowania, a także pokażemy, jak można go zintegrować z procesem wdrażania infrastruktury. Instalacja TFlint TFlint jest dostępny na różnych platformach, takich jak Linux, macOS i Windows. Można go zainstalować za pomocą menedżera pakietów lub pobrać binarkę bezpośrednio z GitHub. Przykład instalacji na macOS Przykład instalacji na Linux Przykład instalacji na Windows Pobierz plik .zip z GitHub i wypakuj go do katalogu, który jest zawarty w zmiennej środowiskowej PATH. Konfiguracja TFlint Aby dostosować TFlint do swoich potrzeb, można utworzyć plik konfiguracyjny o nazwie .tflint.hcl. Plik ten powinien być umieszczony w głównym katalogu projektu Terraform. Przykładowy plik konfiguracyjny: Podstawowe użycie TFlint Aby uruchomić TFlint, należy wpisać polecenie tflint w konsoli, będąc w katalogu z plikami konfiguracyjnymi Terraform. TFlint sprawdzi wszystkie pliki o rozszerzeniu .tf. Przykład użycia: Można również sprawdzić pojedynczy plik .tf podając jego nazwę jako argument: Zalety stosowania TFlint Wykrywanie błędów składniowych i strukturalnych: TFlint analizuje pliki konfiguracyjne Terraform, aby wykryć wszelkie błędy składniowe, strukturalne i inne niezgodności z dokumentacją. Dzięki temu można uniknąć błędów, które mogą prowadzić do nieprawidłowego działania infrastruktury. Właściwe stosowanie zasobów AWS: TFlint sprawdza zgodność z wytycznymi AWS, takimi jak poprawne typy instancji EC2 czy poprawne odniesienia do zasobów IAM. To pomaga uniknąć błędów związanych z nieprawidłowym użytkowaniem usług AWS. Automatyzacja sprawdzania jakości kodu: TFlint może być zintegrowany z narzędziami CI/CD (Continuous Integration/Continuous Deployment) w celu automatycznego sprawdzania jakości kodu przed wdrożeniem. Dzięki temu, można utrzymać wysoką jakość kodu infrastruktury jako kodu (IaC) i uniknąć wprowadzania błędów do środowiska produkcyjnego. Dopasowywanie reguł do potrzeb projektu: TFlint pozwala na konfigurację własnych reguł sprawdzania, dzięki czemu można dostosować narzędzie do potrzeb konkretnego projektu. Daje to większą elastyczność i umożliwia lepsze zarządzanie jakością kodu. Szybka identyfikacja problemów: TFlint pozwala szybko zidentyfikować potencjalne problemy, co przekłada się na mniejsze ryzyko wprowadzania błędów do infrastruktury. Ułatwia również prace programistom, którzy mogą szybko zidentyfikować źródło problemu i go naprawić. Przykłady użycia TFlint z różnymi flagami TFlint oferuje wiele flag, które pozwalają na dostosowanie działania narzędzia do konkretnych potrzeb. Sprawdzanie modułów Terraform: Aby sprawdzić również moduły używane w projekcie, można użyć flagi --module. Ignorowanie błędów dla określonych reguł: Jeśli chcesz zignorować błędy dla określonych reguł, możesz użyć flagi --ignore-rule. Zgłaszanie tylko błędów o określonym poziomie: Aby wyświetlić tylko błędy o określonym poziomie, można użyć flagi --severity. Sprawdzanie plików Terraform tylko w określonym katalogu: Aby sprawdzić tylko pliki w określonym katalogu, można użyć flagi --chdir. Integracja TFlint z narzędziami CI/CD Współpracując z innymi programistami i zarządzając projektami infrastruktury, warto zintegrować TFlint z narzędziami CI/CD (Continuous Integration/Continuous Deployment), takimi jak Jenkins, GitLab CI, GitHub Actions czy CircleCI. Integracja pozwala na automatyczne sprawdzanie jakości kodu Terraform przed zatwierdzeniem zmian i wdrożeniem ich na środowisko produkcyjne. Przykład integracji TFlint z GitHub Actions: W powyższym przykładzie, GitHub Actions uruchamia TFlint na wirtualnej maszynie z systemem Ubuntu. Przed uruchomieniem TFlint, kod źródłowy zostaje pobrany, a następnie instalowany jest TFlint w wersji 0.31.0. Na koniec, TFlint jest uruchamiany na plikach konfiguracyjnych Terraform. Wnioski TFlint to potężne narzędzie do analizy statycznej kodu infrastruktury jako kodu (IaC) w Terraform. Pomaga wykryć błędy, utrzymać wysoką jakość kodu i uniknąć wprowadzania problemów do środowiska produkcyjnego. Dzięki integracji z narzędziami CI/CD, TFlint może automatycznie sprawdzać jakość kodu podczas procesu wdrażania. Użycie TFlint przynosi wiele korzyści dla zespołów deweloperskich, zwłaszcza tych pracujących nad dużymi projektami infrastruktury. Warto zatem włączyć TFlint do swojego procesu wdrażania infrastruktury jako kodu, aby osiągnąć jeszcze lepsze rezultaty. Teraz, gdy znasz podstawy TFlint, jego zalety i przykłady użycia, spróbuj wdrożyć to narzędzie w swoim projekcie i przekonaj się o jego wartości. Pamiętaj, że konfiguracja TFlint pozwala na dostosowanie narzędzia do indywidualnych potrzeb projektu, co jeszcze bardziej zwiększa jego użyteczność.

  • Najlepsze praktyki w zakresie bezpieczeństwa Terraform

    Terraform jest de facto narzędziem, niezależnym od dostawcy zasobów, a Twoja organizacja może pracować ze wszystkimi jednocześnie. Niekwestionowanym aspektem jest bezpieczeństwo Terraform, ponieważ każdy błąd w konfiguracji może mieć wpływ na całą infrastrukturę. W tym artykule chcę wyjaśnić korzyści płynące z korzystania z Terraform i przedstawić wskazówki dotyczące korzystania z Terraform w bezpieczny sposób, odwołując się do niektórych najlepszych praktyk w zakresie bezpieczeństwa. Audyt konfiguracji Terraform pod kątem luk w zabezpieczeniach i wdrażanie kontroli bezpieczeństwa. Zarządzanie poświadczeniami dostępu w zabezpieczeniach Terraform. Najlepsze praktyki bezpieczeństwa w korzystaniu z modułów Terraform. DIY moduły Terraform. Co to jest Terraform? Terraform to narzędzie typu open source jako narzędzie do tworzenia kodu, które umożliwia bezpieczne i przewidywalne tworzenie, zmienianie i niszczenie infrastruktury (IaC). Pisałem o tym już we wcześniejszym artykule. Aby zobaczyć prosty przykład, spójrzmy na kod - przykład z oficjalnej strony, który wdraża kontener nginx. Zainicjować projekt za pomocą terraform init, udostępniając kontener serwera nginx za pomocą terraform apply i zniszczyć serwer sieciowy nginx za pomocą terraform destroy. Terraform komunikując się z chmurą publiczną AWS, Azure, GCP czy DigitalOcean polega na kluczach dostępu i tajnych kluczach do uwierzytelniania od dostawców chmury. W tym przykładzie uwierzytelnianie nie było wymagane, ale większość dostawców wymaga poświadczeń w taki czy inny sposób. Przechowywanie poświadczeń w sposób niezabezpieczony może prowadzić do powstania luk w zabezpieczeniach, takich jak nieautoryzowany dostęp i naruszenia bezpieczeństwa danych. Jednym z miejsc, na które należy zwrócić uwagę, jest przechowywanie poświadczeń w plikach stanu Terraform. Pliki stanu Terraform to pliki, których Terraform używa do śledzenia zasobów utworzonych w określonej infrastrukturze. Plik stanu jest zwykle przechowywane lokalnie na komputerze, na którym działa Terraform, chociaż można je również przechowywać zdalnie w zapleczu (backend), takim jak Terraform Cloud lub S3 (zalecany zdalny backend jak współpracujesz z zespołem lub dla zachowania dobrych praktyk). Plik stanu zawiera migawkę infrastruktury w określonym momencie, w tym wszystkie zasoby utworzone lub zmodyfikowane przez Terraform. Obejmuje to szczegóły, takie jak identyfikatory zasobów, ich bieżący stan i wszelkie inne metadane, których Terraform potrzebuje do zarządzania zasobami. Jeśli chcesz dowiedzieć się więcej o Terraform, zapoznaj się z moim kursem Terraform Podstawy. Zapraszam (wystarczy kliknąć w obrazek) Audyt plików manifestu Terraform Terraform używa pliku stanu do określania bieżącego stanu infrastruktury i planowania zmian w tej infrastrukturze. Kiedy wprowadzasz zmiany w konfiguracji Terraform i stosujesz te zmiany, Terraform porównuje nową konfigurację z istniejącym plikiem stanu i określa, jakie zmiany należy wprowadzić w infrastrukturze, aby dostosować ją do nowej konfiguracji. Korzyści ze skanowania plików manifestu Terraform są znaczące, jeśli chodzi o wykrywanie i łagodzenie potencjalnych zagrożeń bezpieczeństwa w infrastrukturze chmurowej. Jeśli możesz zrobić tylko jedną rzecz, upewnij się, że dokładnie przeskanowałeś pliki Terraform. Ponieważ plik stanu jest ważny dla działania Terraform, ważne jest, aby obchodzić się z nim ostrożnie. Zawsze powinieneś wykonać kopię zapasową pliku stanu i upewnić się, że jest bezpiecznie przechowywany, zwłaszcza jeśli używasz zdalnego zaplecza. Należy również uważać, aby nie modyfikować pliku stanu ręcznie, ponieważ może to spowodować niespójności między plikiem stanu a rzeczywistą infrastrukturą. W przypadku "SCARLETEEL" - skanowanie manifestów Terraform mogło pomóc w wykryciu ujawnionych kluczy dostępu i sekretów w zasobnikach S3. Dzięki wczesnemu wykryciu incydentów można było zapobiec lub przynajmniej go powstrzymać, zanim atakujący miał szansę uzyskać dostęp do drugiego konta AWS – jak przedstawiono na poniższym diagramie. Identyfikacja informacji wrażliwych Skanowanie plików Terraform może pomóc zidentyfikować wszelkie poufne informacje , takie jak klucze dostępu, sekrety, hasła lub tokeny, które mogą zostać przypadkowo ujawnione w plikach stanu. Jak widać w incydencie SCARLETEEL, osoby atakujące mogą wykorzystać te informacje do uzyskania nieautoryzowanego dostępu do infrastruktury chmury i przemieszczania się między organizacjami. Błędne konfiguracje sieci Tak jak konfigurujemy dostęp do naszej chmury, konfigurując VPC lub AWS Security Groups, też musimy wziąć pod uwagę poprawną konfigurację plików Terraform, aby maksymalnie zmniejszyć powierzchnię ataku ograniczając dostęp tam gdzie jest to możliwe do zaufanych adresów IP,, a porty nie potrzebne nie otwieramy. Widoczność zmian w pliku stanu Pliki manifestu Terraform zawierają historię zmian wprowadzonych w Twojej infrastrukturze, w tym informacje o utworzeniu, zaktualizowaniu lub zniszczeniu zasobów. Skanowanie plików stanu może pomóc w śledzeniu zmian, identyfikowaniu anomalii i szybkim reagowaniu na wszelkie incydenty związane z bezpieczeństwem. Zgodność i zarządzanie Skanowanie plików `.tf` może pomóc upewnić się, że infrastruktura chmury jest zgodna z wymaganiami prawnymi i zarządczymi, takimi jak PCI DSS , HIPAA lub SOC 2 . Wykrywając potencjalne zagrożenia bezpieczeństwa, możesz podejmować działania naprawcze i zapobiegać naruszeniom zgodności. Wykrywanie luk w automatyzacji Skanowanie plików Terraform można zautomatyzować, co pozwala wykrywać i ograniczać zagrożenia bezpieczeństwa w czasie rzeczywistym. Możesz zintegrować skanowanie z potokiem DevOps, co pozwala wykryć luki w zabezpieczeniach na wczesnym etapie cyklu programowania i uniemożliwić im dotarcie do środowiska produkcyjnego. Ogólnie rzecz biorąc, skanowanie plików definicji Terraform jest podstawową praktyką bezpieczeństwa dla każdej organizacji używającej Terraform do zarządzania infrastrukturą chmurową. Może pomóc w identyfikacji i ograniczeniu potencjalnych zagrożeń dla bezpieczeństwa, zapewniając bezpieczeństwo i zgodność środowiska chmurowego. Narzędzia do skanowania Terraform Narzędzia do skanowania Terraform mogą pomóc w znalezieniu błędnych konfiguracji, problemów z bezpieczeństwem i luk w kodzie Terraform. Te narzędzia mają na celu pomóc użytkownikom w identyfikowaniu i rozwiązywaniu problemów przed ich wdrożeniem w środowiskach produkcyjnych. Oto kilka popularnych narzędzi do skanowania Terraform: Terrascan – Terrascan to narzędzie do analizy statycznej typu open source, które skanuje kod Terraform pod kątem problemów z bezpieczeństwem. Zapewnia użytkownikom funkcje polityki jako kodu i obsługuje wielu dostawców usług w chmurze. Checkov – Checkov to narzędzie typu open source, które skanuje kod Terraform pod kątem problemów z bezpieczeństwem i naruszeń najlepszych praktyk. Posiada obszerną bibliotekę wbudowanych zasad i jest wysoce konfigurowalny. KICS – Keeping Infrastructure as Code Secure (KICS) to narzędzie typu open source, które skanuje kod Terraform pod kątem problemów z bezpieczeństwem, naruszeń zgodności i błędnych konfiguracji infrastruktury. Obsługuje wielu dostawców chmury i jest wysoce konfigurowalny. tfsec - Narzędzie open source tflint - Narzedzie open source Na potrzeby tego bloga omówimy, w jaki sposób Terrascan jest używany do skanowania problemów związanych z bezpieczeństwem w Terraform. Zachęcam też do przetestowania innych narzędzi z wymienionej listy. Oczywiście jak chcesz zobaczyc je w akcji zapraszam do kursu dostępnego na stronie Szkolenia Cloud Terrascan wykorzystuje statyczną analizę kodu do skanowania kodu Terraform i konfiguracji pod kątem problemów z bezpieczeństwem i luk w zabezpieczeniach. Terrascan może być używany jako samodzielne narzędzie lub zintegrowany z potokiem CI/CD w celu automatycznego skanowania kodu Terraform w ramach procesu kompilacji. Teraz pokaże, w jaki sposób Terrascan jest używany do wyszukiwania luk w zabezpieczeniach. Przykład z Terrascan Zeskanuj swój kod Terraform za pomocą Terrascan. Po zainicjowaniu pliku konfiguracyjnego Terrascan możesz przeskanować kod Terraform pod kątem problemów z bezpieczeństwem za pomocą polecenia terrascan scan. Przejrzyj wyniki skanowania Terrascan. Po zakończeniu skanowania Terrascan powinien wyświetlić listę wszelkich problemów z bezpieczeństwem wykrytych w kodzie Terraform. Każdy problem będzie zawierał opis problemu, lokalizację w kodzie Terraform, w której wykryto problem, oraz ocenę istotności. Oto przykład wyniku skanowania Terrascan: W tym przykładzie Terrascan wykrył poważny problem bezpieczeństwa w pliku main.tf kodu Terraform. Problem jest związany z zakodowanymi na stałe sekretami w konfiguracjach Terraform, co może stanowić poważne zagrożenie bezpieczeństwa. Korzystanie z narzędzi do skanowania Terraform może pomóc poprawić bezpieczeństwo, identyfikując potencjalne problemy i luki w zabezpieczeniach, zanim zostaną one wdrożone w środowiskach produkcyjnych. Może to pomóc w zapobieganiu naruszeniom bezpieczeństwa i zapewnieniu, że infrastruktura jest skonfigurowana w bezpieczny i zgodny sposób. Ponadto narzędzia te mogą pomóc w egzekwowaniu zasad bezpieczeństwa i najlepszych praktyk w organizacjach oraz zmniejszać ryzyko błędu ludzkiego. Poniżej przykład uruchomienia wymienionych wyżej narzędzi na tym samym kodzie: Jak można zauważyć różne narzędzia zwracają różne wyniki, więc czasami warto stosować więcej niż jedno narządzie w szczególności kiedy mamy różne chmury, lub dobrać takie które działa najlepiej z naszą chmurą. Zarządzanie poświadczeniami dostępu w Terraform Security Terraform umożliwia łatwą konfigurację zasobów w chmurze, ale wymaga uwierzytelnienia u dostawców usług w chmurze. Sposób zarządzania tymi poświadczeniami ma kluczowe znaczenie dla bezpieczeństwa Twojej infrastruktury. Jedną z najlepszych praktyk jest używanie bezpiecznego systemu zarządzania poświadczeniami do przechowywania poświadczeń. Istotne jest, aby unikać przechowywania poświadczeń w postaci zwykłego tekstu ani zapisywania ich na stałe w kodzie Terraform. Nie przechowuj sekretów w stanie Terraform Pliki stanu Terraform nie powinny zawierać żadnych tajemnic, takich jak hasła czy klucze API . Zamiast tego użyj zmiennych wejściowych Terraform lub zewnętrznych źródeł danych, aby przekazać poufne informacje do modułu. Pomoże to zapewnić, że twoje sekrety nie zostaną ujawnione w pliku stanu. Na przykład tutaj jest plik stanu Terraform, który nie zawiera żadnych tajemnic: Plik definiuje pojedynczą instancję AWS EC2 i używa typu zasobu aws_instance do jej utworzenia. Blok dostawcy określa region AWS, który ma być używany, a blok wyjściowy definiuje zmienną wyjściową , która wyświetla publiczny adres IP instancji. Gdyby wymagana była jakakolwiek poufna informacja, taka jak klucz dostępu AWS lub klucz tajny, byłaby przekazywana do modułu za pomocą zmiennych wejściowych lub zewnętrznych źródeł danych, zamiast być przechowywana w pliku stanu. Nie przechowuj tajemnic w postaci zwykłego tekstu Nigdy nie przechowuj tajemnic w postaci zwykłego tekstu w swoich manifestach Terraform . Jak wspomnieliśmy wcześniej, możesz użyć zmiennych środowiskowych lub zmiennych wejściowych, aby przekazać sekrety do modułu Terraform. Oto na przykład skrypt, który używa zmiennych środowiskowych do przekazywania tajemnic do Terraform: Zamiast przechowywać db_password w postaci zwykłego tekstu w manifeście Terraform, możemy przekazać je jako zmienną środowiskową, gdy uruchamiamy polecenie Terraform: Po przekazaniu zmiennej środowiskowej możemy po prostu uruchomić skrypt Terraform - terraform apply Zmienna db_password zostanie wypełniona wartością zmiennej środowiskowej TF_VAR_db_password , która jest przekazywana do zasobu aws_db_instance. Hasło nie będzie przechowywane w postaci zwykłego tekstu w manifeście Terraform, dzięki czemu będzie bezpieczniejsze. Alternatywnie moglibyśmy użyć zmiennych wejściowych do przekazania sekretów do modułu Terraform. Oto przykład wykorzystania zmiennych wejściowych do przekazywania sekretów do modułu Terraform: Następnie możemy przekazać zmienną db_password do modułu Terraform, gdy uruchamiamy polecenie terraform apply. terraform apply -var "db_password=supersecret" Takie podejście pozwala nam przekazywać sekrety do modułu Terraform bez przechowywania ich w postaci zwykłego tekstu w manifeście Terraform. Lepszym podejściem jest użycie bezpiecznego systemu zarządzania danymi uwierzytelniającymi, takiego jak HashiCorp Vault lub AWS Secrets Manager . Narzędzia te oferują bezpieczny sposób przechowywania poufnych informacji i zarządzania nimi, zapewniając kontrolę dostępu, szyfrowanie i dzienniki audytu. Najlepszym miejscem do rozpoczęcia jest utworzenie Hashicorp Vault Secrets Engine . Powyższy kod tworzy montowanie silnika sekretów KV i ogólny klucz tajny, który przechowuje poświadczenia AWS. Zastąp var.aws_access_key i var.aws_secret_key odpowiednimi zmiennymi środowiskowymi lub użyj innej metody bezpiecznego przekazania tych wartości do Terraform. Po skonfigurowaniu mechanizmu sekretów możemy bezpiecznie pobrać dane uwierzytelniające AWS z Hashicorp Vault za pomocą poniższych zasad: Powyższy kod pobiera poświadczenia AWS z HashiCorp Vault i ustawia je jako konfigurację dostawcy dla dostawcy „ aws ” skonfigurowanego w pierwszym skrypcie. Teraz możesz używać Terraform do konfigurowania zasobów AWS bez kodowania na stałe lub przechowywania poświadczeń AWS w postaci zwykłego tekstu. To jest tylko przykładowy skrypt. Powinieneś go zmodyfikować w oparciu o swoje specyficzne wymagania i używany system zarządzania poświadczeniami. Ponadto należy skonfigurować kontrolę dostępu i dzienniki inspekcji dla systemu zarządzania poświadczeniami, aby zapewnić ochronę i monitorowanie tajemnic. Często wymieniaj poświadczenia Po wdrożeniu bezpiecznego systemu zarządzania danymi uwierzytelniającymi kluczowa jest częsta rotacja kluczy . Rotacja kluczy oznacza okresowe generowanie nowych kluczy dostępu i unieważnianie starych. Ta praktyka gwarantuje, że jeśli jeden z twoich kluczy zostanie naruszony, nie będzie ważny. Możesz ponownie użyć narzędzi takich jak Hashicorp Vault lub AWS Secrets Manager, aby zautomatyzować proces rotacji kluczy. Zautomatyzowanie tego procesu może pomóc uniknąć błędów ludzkich, które są jedną z głównych przyczyn naruszeń bezpieczeństwa. Ponieważ pracowaliśmy już z Hashicorp Vault, utworzymy następujący przykład zasad Vault , który powinien zapewnić częstą rotację naszych kluczy Terraform w celu utrzymania bezpieczeństwa systemu. Ta polityka zawiera trzy oświadczenia, które zapewniają minimalne wymagane uprawnienia do zarządzania kluczami Terraform: Pierwsza instrukcja umożliwia użytkownikom odczytywanie, tworzenie, aktualizowanie, usuwanie i wyświetlanie wpisów tajnych w ścieżce secret/data/terraform/* . Ta ścieżka powinna zawierać klucze używane przez Terraform do uzyskiwania dostępu do innych zasobów. Parametr max_versions ogranicza liczbę wersji klucza, które mogą być przechowywane, podczas gdy parametr force zapewnia wygenerowanie nowego klucza, nawet jeśli maksymalna liczba wersji została już osiągnięta. Druga instrukcja umożliwia użytkownikom odnawianie dzierżawy tajemnic. Jest to ważne dla zapewnienia częstej rotacji klawiszy. Trzecia instrukcja umożliwia użytkownikom odwołanie dzierżawy tajemnic. Jest to przydatne, jeśli klucz jest zagrożony i musi zostać natychmiast odwołany. to tylko przykładowe zasady; należy go zmodyfikować w oparciu o określone wymagania i zasoby, którymi zarządzasz w Terraform. Ponadto należy skonfigurować Vault do automatycznej rotacji kluczy na podstawie zasad bezpieczeństwa organizacji. Zasady dostępu do najniższych uprawnień Wreszcie, podczas konfigurowania infrastruktury Terraform kluczowe znaczenie ma wdrożenie zasady najmniejszych uprawnień . Zasada najmniejszych uprawnień oznacza, że ​​należy przyznać minimalny poziom dostępu wymagany do prawidłowego działania określonego zasobu. Takie podejście minimalizuje potencjalne szkody, które osoba atakująca może wyrządzić, jeśli uzyska dostęp do Twojej infrastruktury. Dzięki Terraform możesz wdrożyć zasady dostępu z najniższymi uprawnieniami, definiując odpowiednie role, zasady i uprawnienia IAM, redukując błędne konfiguracje IAM . Możesz także użyć modułów Terraform, które zostały zaprojektowane z myślą o najlepszych praktykach w zakresie bezpieczeństwa. Na przykład poniższa zasada zapewnia dostęp z najniższymi uprawnieniami do zasobów Terraform dla określonego użytkownika lub grupy. Powyższa polityka zawiera trzy stwierdzenia, które zapewniają minimalne niezbędne uprawnienia do zarządzania zasobami Terraform: Pierwsza instrukcja umożliwia określonemu użytkownikowi lub grupie wykonanie działań terraform:plan , terraform:apply i terraform:destroy na zasobach w określonym obszarze roboczym Terraform. Musisz zastąpić nazwami zasobów Amazon (ARN) swojego obszaru roboczego Terraform. Druga instrukcja umożliwia określonemu użytkownikowi lub grupie wykonanie akcji terraform:state-push i terraform:state-pull na określonym zasobniku stanu Terraform. Ponownie musisz zastąpić ARN swojego zasobnika stanu Terraform. Trzecia instrukcja umożliwia określonemu użytkownikowi lub grupie wykonanie akcji terraform:state-list na wszystkich zasobach w określonym obszarze roboczym Terraform. Jak zawsze, pamiętaj, aby zastąpić ARN swojego obszaru roboczego Terraform. to tylko przykładowe zasady; powinieneś zmodyfikować ARN, aby pasowały do ​​​​konkretnego środowiska i przypadku użycia. Ponadto powinieneś przejrzeć i dostosować zasady w oparciu o swoje specyficzne wymagania i zasoby, którymi zarządzasz w Terraform. Korzystanie z modułów Terraform Moduły Terraform to skuteczny sposób organizowania i ponownego wykorzystywania kodu infrastruktury. Jednak, podobnie jak w przypadku każdego kodu, moduły mogą stanowić zagrożenie dla bezpieczeństwa łańcucha dostaw, jeśli nie są właściwie używane. W tej sekcji omówimy bezpieczeństwo Terraform z niektórymi najlepszymi praktykami korzystania z modułów Terraform w celu zapewnienia bezpiecznej infrastruktury jako kodu. Nie ufaj im ślepo; dokładnie sprawdź tworzoną infrastrukturę, grupy bezpieczeństwa itp. i zawsze najpierw „planuj”. Moduły Terraform mogą zaoszczędzić wiele czasu i wysiłku, ale nie należy im ślepo ufać. Zawsze przeglądaj kod i plan przed zastosowaniem jakichkolwiek zmian w infrastrukturze. Obejmuje to skanowanie Terraform w poszukiwaniu błędnej konfiguracji lub luk w zabezpieczeniach oraz przeglądanie grup zabezpieczeń i innych tworzonych zasobów, aby upewnić się, że spełniają one Twoje wymagania dotyczące bezpieczeństwa. Użyj polecenia „ plan ” programu Terraform, aby przejrzeć zmiany przed ich zastosowaniem. Polecenie „ plan” służy do generowania planu wykonania, który pokazuje, co zrobi Terraform po zastosowaniu Twojej konfiguracji. Dzięki temu możesz przejrzeć zmiany i upewnić się, że spełniają one Twoje oczekiwania, zanim faktycznie je zastosujesz. Najprostszym poleceniem do wygenerowania planu jest: terraform plan Więcej o samym terraform znajdziesz w kursie dostępnym na Szkolenia Cloud Terraform przeanalizuje Twoje pliki konfiguracyjne i wygeneruje plan, co zrobi, gdy zastosujesz zmiany. Dane wyjściowe będą wyglądać mniej więcej tak: W każdym przypadku przejrzyj dane wyjściowe, aby upewnić się, że zmiany są zgodne z oczekiwaniami. W tym przykładzie Terraform utworzy nową grupę zabezpieczeń i nową instancję EC2 oraz zniszczy istniejącą instancję EC2. Jeśli jesteś zadowolony z planu, możesz zastosować zmiany za pomocą polecenia Apply: terraform apply Przeglądając plan przed zastosowaniem zmian, możesz wykryć wszelkie nieoczekiwane zmiany lub błędy i uniknąć potencjalnych problemów z infrastrukturą. Jak wspomnieliśmy na początku tej sekcji, nie ufaj ślepo infrastrukturze. Plany zapewniają, że możemy zastosować dokładne specyfikacje bezpieczeństwa. Aktualizuj moduły Moduły powinny być na bieżąco aktualizowane o najnowsze poprawki bezpieczeństwa i najlepsze praktyki. Zawsze sprawdzaj dostępność aktualizacji i stosuj je w razie potrzeby. Pomoże to zapewnić, że Twoja infrastruktura jest bezpieczna i aktualna zgodnie z najnowszymi standardami bezpieczeństwa. Chociaż w Terraform nie ma wbudowanych poleceń służących do aktualizowania modułów o najnowsze poprawki zabezpieczeń i najlepsze praktyki Terraform, istnieją jednak narzędzia innych firm, które mogą pomóc w zarządzaniu modułami i kontroli wersji. Jednym z takich narzędzi jest własny oficjalny rejestr modułów Terraform, który jest wyselekcjonowanym zbiorem gotowych modułów dla typowych potrzeb infrastrukturalnych. Moduły w rejestrze są utrzymywane przez społeczność Terraform i są regularnie aktualizowane, aby zapewnić aktualność z najnowszymi poprawkami bezpieczeństwa i najlepszymi praktykami. Aby użyć modułu z rejestru, możesz dołączyć jego źródłowy adres URL do pliku konfiguracyjnego Terraform. Na przykład: Aby zaktualizować moduł do najnowszej wersji dostępnej w rejestrze, możesz użyć polecenia terraform get z flagą -update : terraform get -update Powyższe polecenie „terraform get -update” zaktualizuje wszystkie moduły w konfiguracji Terraform do najnowszych wersji dostępnych w rejestrze. Oprócz rejestru modułów dostępne są również narzędzia innych firm, takie jak Terraform Cloud i Atlantis , które zapewniają bardziej zaawansowane funkcje zarządzania modułami i kontroli wersji, takie jak: Automatyczne aktualizacje Blokowanie wersji Narzędzia współpracy Narzędzia te mogą pomóc w aktualizowaniu modułów i zapewnieniu, że infrastruktura jest bezpieczna i zgodna z najnowszymi standardami bezpieczeństwa. Nie przechowuj pliku stanu lokalnie; zapisz go w postaci zaszyfrowanej w innym miejscu, które można później pobrać Pliki stanu Terraform zawierają poufne informacje o Twojej infrastrukturze, takie jak identyfikatory zasobów i klucze tajne. Nie przechowuj ich lokalnie ani publicznie w systemach kontroli wersji. Zamiast tego zapisz je w bezpiecznym miejscu, które można później wyciągnąć w razie potrzeby. Należy również zaszyfrować plik stanu, aby zabezpieczyć go przed nieautoryzowanym dostępem. Na przykład stworzyliśmy poniższy skrypt Terraform, który wykorzystuje zdalne przechowywanie stanu w zasobniku S3, aby uniknąć przechowywania tych plików stanu lokalnie lub w systemie kontroli wersji: W tym przykładzie blok terraform na początku pliku określa, że ​​plik stanu powinien być przechowywany w zasobniku S3 o nazwie my-terraform-state-bucket z kluczem my-terraform-state.tfstate . Parametr region określa region AWS, w którym znajduje się zasobnik S3. Parametr dynamodb_table określa nazwę tabeli DynamoDB używanej do blokowania. Parametr encrypt mówi Terraformowi, aby zaszyfrował plik stanu przed zapisaniem go w S3. Blok zasobów aws_instance określa zasoby infrastruktury do utworzenia, ale nie zawiera żadnych poufnych informacji. Gdy uruchomisz terraform apply , Terraform utworzy zasoby i zapisze plik stanu w zasobniku S3. Po uruchomieniu kolejnych poleceń terraform Terraform użyje pliku stanu zdalnego w zasobniku S3 zamiast pliku lokalnego. Przechowując plik stanu w bezpiecznej lokalizacji, takiej jak zasobnik S3, możesz mieć pewność, że nie będzie on przechowywany lokalnie ani w systemach kontroli wersji. Szyfrując plik stanu, możesz chronić go przed nieautoryzowanym dostępem. Nie modyfikuj stanu Terraform ręcznie Ręczne modyfikacje pliku stanu Terraform mogą powodować problemy i wprowadzać zagrożenia bezpieczeństwa. Zawsze używaj poleceń Terraform do zarządzania plikiem stanu. Jeśli musisz wprowadzić zmiany w pliku stanu, użyj polecenia import Terraform, aby zaimportować zasoby do stanu. Zapewni to, że plik stanu pozostanie spójny z rzeczywistą infrastrukturą. Załóżmy, że masz instancję EC2 działającą na AWS i chcesz zacząć nią zarządzać przez Terraform. Najpierw musisz utworzyć nowy plik konfiguracyjny Terraform opisujący istniejący zasób. Oto prosty przykład: Następnie możesz uruchomić polecenie terraform import, a następnie typ zasobu, unikalny identyfikator zasobu i nazwę zasobu w pliku konfiguracyjnym Terraform. terraform import aws_instance.example i-0123456789abcdefg W powyższym przykładzie i-0123456789abcdefg to unikalny identyfikator instancji EC2 w AWS, a aws_instance.example to nazwa zasobu w pliku konfiguracyjnym Terraform. Po uruchomieniu polecenia terraform import Terraform utworzy teraz nowy plik stanu i zaimportuje do niego istniejące zasoby. Następnie użylibyśmy normalnych poleceń Terraform, takich jak terraform plan i terraform apply , aby zarządzać zasobami w przyszłości. Jeśli chcesz dowiedzieć się więcej o bezpieczeństwie EC2, nie zapomnij sprawdzić Zabezpieczanie SSH na EC2 i Jak zabezpieczyć Amazon EC2 w dokumentacji AWS. Tworzenie modułów Terraform Moduły Terraform zapewniają sposób organizowania i ponownego wykorzystywania kodu infrastruktury. Podczas tworzenia modułów Terraform ważne jest, aby postępować zgodnie z najlepszymi praktykami bezpieczeństwa Terraform, aby zapewnić bezpieczną infrastrukturę jako kod. W tej sekcji omówimy kilka najlepszych praktyk tworzenia modułów Terraform. Użyj git do przechowywania manifestów Terraform Przechowuj manifesty Terraform w systemach kontroli wersji, takich jak Git. Ułatwia to śledzenie zmian, cofanie zmian i współpracę z innymi osobami. Zawsze używaj kontroli wersji dla swoich modułów Terraform, aby mieć pewność, że zmiany są śledzone i możliwe do audytu. Zainicjujmy Git w naszym bieżącym katalogu, aby zrozumieć, jak przechowywać manifesty Terraform: git init Musisz utworzyć nowy plik konfiguracyjny Terraform, taki jak main.tf, i dodać do niego trochę zasobów. Następnie możesz dodać plik do Git i zatwierdzić zmiany: git add main.tfgit commit -m "Initial commit" Wprowadź zmiany w pliku konfiguracyjnym Terraform, dodaj je i zatwierdź w Git: git add main.tfgit commit -m "Added new resource" Jeśli chcesz wrócić do poprzedniej wersji pliku konfiguracyjnego Terraform, możesz użyć Git, aby sprawdzić poprzednie zatwierdzenie: git checkout HEAD~1 main.tf To polecenie sprawdzi wersję pliku main.tf z poprzedniego zatwierdzenia. Możesz także używać Git do współpracy z innymi osobami nad projektem Terraform. Na przykład możesz przekazać swoje zmiany do zdalnego repozytorium Git, które inni mogą klonować i nad którym mogą pracować: git remote add origin git push -u origin master Korzystając z Gita, możesz: Śledź zmiany w swoich manifestach Terraform , na przykład kto zmienił określony zasób lub kiedy ostatnio coś zostało zmodyfikowane. Cofnij zmiany w przypadku awarii możesz wrócić do poprzedniej znanej działającej wersji. Łatwiej współpracuj z innymi za pomocą pull requestów w celu omówienia zmian. Podpisywanie Terraforma Podpisywanie Terraform byłoby fajną funkcją, która pozwala użytkownikom podpisywać swoje manifesty Terraform za pomocą klucza prywatnego. To znacznie poprawiłoby bezpieczeństwo Terraform, ponieważ mogłoby pomóc użytkownikom upewnić się, że ich manifesty Terraform nie zostały naruszone. Niestety Terraform nie ma wbudowanej funkcji podpisywania manifestów Terraform kluczem prywatnym. Możesz jednak użyć zewnętrznych narzędzi, takich jak GPG lub narzędzie do podpisywania wtyczek Hashicorp , aby podpisać manifesty Terraform i zweryfikować ich integralność. Oto na przykład skrypt, który może podpisywać manifesty Terraform za pomocą GPG i weryfikować ich integralność: Jak zawsze, będziesz musiał wykonać powyższy skrypt i podpisać manifest Terraform za pomocą GPG przy użyciu klucza prywatnego, zweryfikować integralność podpisanego manifestu i wyodrębnić podpisany manifest do dalszego wykorzystania. Podpisując swoje manifesty Terraform za pomocą GPG i weryfikując ich integralność, możesz upewnić się, że Twoje manifesty Terraform nie zostały naruszone i że są takie same, jak w momencie ich pierwotnego podpisania. Pomaga to poprawić bezpieczeństwo kodu infrastruktury i zmniejszyć ryzyko nieautoryzowanych zmian. Zautomatyzuj cały proces Zautomatyzuj cały proces tworzenia, testowania i wdrażania modułów Terraform. Użyj narzędzi takich jak GitLab CI/CD lub Jenkins, aby zautomatyzować ten proces, ułatwiając zarządzanie kodem infrastruktury i zapewniając jej bezpieczeństwo. Na przykład w dużej firmie świadczącej usługi finansowe zespół ds. infrastruktury dysponował wieloma modułami Terraform, które służyły do ​​zarządzania infrastrukturą chmurową. Napotkali jednak wyzwania związane z ręcznym zarządzaniem i wdrażaniem tych modułów, co prowadziło do błędów i niespójności. Aby temu zaradzić, zespół zdecydował się na wdrożenie GitLab CI/CD w celu zautomatyzowania procesu tworzenia, testowania i wdrażania modułów Terraform. Oto przykład struktury potoku GitLab CI/CD: W tym przykładzie potok składa się z trzech etapów: kompilacja, testowanie i wdrażanie. Na etapie kompilacji kod Terraform jest kompilowany i pakowany, a następnie generowany jest plan. Na etapie testów przeprowadzane są zautomatyzowane testy kodu Terraform, w tym walidacja kodu, poprawne formatowanie i zastosowanie planu w środowisku testowym. Wreszcie, na etapie wdrażania, kod Terraform jest stosowany w środowisku docelowym, zapewniając, że infrastruktura jest skonfigurowana zgodnie z kodem. Z punktu widzenia bezpieczeństwa, automatyzując proces tworzenia, testowania i wdrażania modułów Terraform za pomocą GitLab CI/CD, możesz poprawić bezpieczeństwo kodu swojej infrastruktury i zmniejszyć ryzyko nieautoryzowanych zmian. Nie nadużywaj danych wyjściowych Nie nadużywaj zmiennych wyjściowych do przechowywania poufnych informacji, takich jak Sekrety. Użyj narzędzia do zarządzania sekretami, takiego jak Vault lub AWS Secrets Manager, aby przechowywać poufne informacje. W poniższym skrypcie użyjemy Hashicorp Vault do przechowywania i pobierania sekretów do wykorzystania w Terraform: W takim przypadku możesz użyć zasobu vault_generic_secret do przechowywania swoich kluczy tajnych w Vault, a następnie pobrać te klucze tajne za pomocą źródła danych data.vault_generic_secret i użyć ich w naszym kodzie Terraform. Używając narzędzia do zarządzania tajemnicami, takiego jak Hashicorp Vault lub AWS Secrets Manager do przechowywania poufnych informacji, można łatwo uniknąć konieczności przechowywania tajemnic w zmiennych wyjściowych lub innych częściach naszego kodu Terraform, zmniejszając w ten sposób ryzyko nieautoryzowanego dostępu lub ujawnienia tych wrażliwe dane uwierzytelniające/tajne. Zamierzamy użyć metody zapobiegania-zniszczenia, aby zapobiec przypadkowemu usunięciu zasobu „nigel_instance” . Ustawienie parametru Prevent_destroy na true spowoduję, że Terraform zapobiegnie usunięciu zasobu za pomocą polecenia terraform destroy lub internetowego interfejsu użytkownika Terraform. Stosując zapobieganie zniszczeniu, podkreślamy krytyczność tego środowiska laboratoryjnego/przejściowego, ale także zapewniamy, że nawet jeśli nie jest to środowisko produkcyjne, powinno pozostać stabilne i spójne. Dlatego zmniejszamy ryzyko przypadkowego usunięcia przez współpracownika, które w przeciwnym razie doprowadziłoby do potencjalnego przestoju. Podczas korzystania z Terraform do tworzenia infrastruktury kluczowe jest zapewnienie bezpieczeństwa infrastruktury. Wniosek Terraform to potężne narzędzie, które udostępnia infrastrukturę jako kod, ale podczas korzystania z niego kluczowe znaczenie ma nadanie priorytetu bezpieczeństwu. Postępując zgodnie z najlepszymi praktykami bezpieczeństwa Terraform, które przedstawiliśmy w tym przewodniku, możesz zminimalizować ryzyko naruszenia bezpieczeństwa i zapewnić bezpieczeństwo swojej infrastruktury. Podsumowując: Skanuj pliki Terraform, aby wykryć błędne konfiguracje lub luki w zabezpieczeniach. Korzystaj z bezpiecznego systemu zarządzania danymi uwierzytelniającymi i nigdy nie przechowuj tajemnic w plikach Terraform. Implementuj zasady dostępu z najmniejszymi uprawnieniami. Zastosuj te same praktyki bezpieczeństwa do dostawców usług w chmurze. Niezależnie od tego, czy jesteś inżynierem DevOps, analitykiem zabezpieczeń czy architektem chmury, te wytyczne ułatwiają zarządzanie infrastrukturą chmurową i zabezpieczanie jej. Oczywiście zapraszam do kursu na stronie Szkolenia Cloud - Terraform Podstawy

  • Nowy backdoor używany przez grupy APT - MQsTTang

    Nowy backdoor oraz samą kampanię przypisujemy grupie Mustang Panda z dużą pewnością na podstawie licznych wskaźników, które opiszemy poniżej. Znaleziono archiwa zawierające próbki MQsTTang w dwóch repozytoriach GitHub należących do użytkownika YanNaingOo0072022. Inne repozytorium GitHub tego samego użytkownika zostało wykorzystane w poprzedniej kampanii Mustang Panda, opisanej przez firmę Avast w poście na blogu z grudnia 2022 r. Na jednym z serwerów wykorzystywanych w obecnej kampanii działał publicznie dostępny anonimowy serwer FTP, który wydaje się używany do przygotowywania narzędzi i ładunków. W katalogu /pub/god tego serwera znajduje się wiele programów ładujących Korplug, archiwów i narzędzi, które były wykorzystane w poprzednich kampaniach Mustang Panda. Ten serwer miał również katalog /pub/gd, będący kolejną ścieżką używaną w tej kampanii. Analiza próbki malware MQsTTang to backdoor typu barebone, umożliwiający atakującemu wykonanie dowolnych poleceń na maszynie ofiary i uzyskanie danych wyjściowych. Ponadto ma kilka interesujących cech. Najważniejszą z nich jest wykorzystywanie protokołu MQTT do komunikacji C&C. MQTT jest zwykle używany do komunikacji między urządzeniami IoT i kontrolerami i został wykorzystany w niewielu publicznie udokumentowanych rodzinach złośliwego oprogramowania. Jednym z takich przykładów jest Chrysaor, znany również jako Pegasus dla Androida. Z perspektywy atakującego jedną z zalet MQTT jest to, że ukrywa resztę infrastruktury za brokerem. Tym samym zaatakowana maszyna nigdy nie komunikuje się bezpośrednio z serwerem C&C. Jak widać na poniższym screenie, tę możliwość uzyskuje się za pomocą otwartej biblioteki QMQTT, zależnej od frameworka Qt, którego duża część jest statycznie powiązana w złośliwym oprogramowaniu. Używanie środowiska Qt do tworzenia malware również jest dość rzadkie. MagicRAT Lazarusa jest jednym z nielicznych niedawno udokumentowanych przykładów. MQsTTang jest rozpowszechniany w archiwach RAR, które zawierają tylko jeden plik wykonywalny. Pliki wykonywalne zwykle mają nazwy związane z dyplomacją i paszportami, takie jak: CVs Amb Officer PASSPORT Ministry Of Foreign Affairs.exe, Documents members of delegation diplomatic from Germany.Exe, PDF_Passport and CVs of diplomatic members from Tokyo of JAPAN.eXE, Note No.18-NG-23 from Embassy of Japan.exe. Archiwa te są hostowane na serwerze WWW bez powiązanej nazwy domeny. Fakt ten, wraz z nazwami plików, skłania nas do przypuszczenia, że szkodliwe oprogramowanie rozprzestrzenia się za pośrednictwem spearphishingu. Do tej pory zaobserwowano tylko kilka próbek. Oprócz różnic w niektórych stałych i zakodowanych ciągach znaków, próbki są niezwykle podobne. Jedyną zauważalną zmianą jest dodanie niektórych technik antyanalizy w najnowszych wersjach. Pierwsza z nich polega na użyciu funkcji Windows API CreateToolhelp32Snapshot do iteracji uruchomionych procesów i wyszukiwania następujących znanych debugerów i narzędzi do monitorowania: cheatengine-x86_64.exe, ollydbg.exe, ida.exe, ida64.exe, radare2.exe, x64dbg.exe, procmon.exe, procmon64.exe, procexp.exe, proceshacker.exe, pestudio.exe, sytracerx32.exe, skrzypek.exe, tcpview.exe. Należy zauważyć, że choć malware jest 32-bitowym plikiem wykonywalnym, sprawdza jedynie obecność x64dbg, a nie swojego 32-bitowego odpowiednika, x32dbg. Druga technika wykorzystuje interfejs Windows API FindWindowW do wyszukiwania następujących klas i tytułów okien używanych przez znane narzędzia analityczne: PROCMON_WINDOW_CLASS, OLLYDBG, WinDbgFrameClass, OllyDbg – [CPU], Immunity_Debugger – [CPU]. W przypadku bezpośredniego wykonania złośliwe oprogramowanie uruchomi swoją kopię z wartością 1 jako argumentem wiersza poleceń. Jest to powtarzane przez nowy proces, przy czym argument jest zwiększany o 1 przy każdym uruchomieniu. Gdy osiągnie określone wartości, zostaną wykonane określone zadania. Warto zwrócić uwagę, że dokładne wartości różnią się w zależności od próbki; te wymienione poniżej odpowiadają próbce z SHA-1: 02D95E0C369B08248BFFAAC8607BBA119D83B95B. Jednak same zadania i kolejność ich wykonywania jest stała. Rysunek poniższy przedstawia przegląd tego zachowania wraz z zadaniami wykonywanymi podczas pierwszego uruchomienia złośliwego oprogramowania. Mustang Panda to grupa znana ze swoich niestandardowych wariantów Korplug (nazywanych również PlugX) oraz skomplikowanych łańcuchów dostaw i dostarczania ładunku. W przeciwieństwie do zwykłej taktyki grupy, MQsTTang ma tylko jeden etap i nie używa żadnych technik zaciemniania. Informacje wskazują, że głównym celem kampanii była instytucja rządowa na Tajwanie. Jednak ze względu na charakter używanych nazw plików-wabików uważa się, że celem ataków są również organizacje polityczne i rządowe w Europie i Azji. Byłoby to zgodne z targetowaniem ostatnich kampanii grupy. Jak udokumentowali badacze z Proofpoint, Mustang Panda był znany z ataków na europejskie podmioty rządowe od co najmniej 2020 r., a od czasu inwazji Rosji na Ukrainę jeszcze zwiększył swoją aktywność w Europie. Zródło: https://www.welivesecurity.com/2022/03/23/mustang-panda-hodur-old-tricks-new-korplug-variant/

  • Docker Scout - Zabezpie swój łańcuch dostaw na każdym poziomie

    Bezpieczeństwo łańcucha dostaw zaprojektowane z myślą o programistach Docker Scout zapewnia ujednolicony widok do zabezpieczania rozwoju kontenera, w tym widok warstw po warstwie zależności, ich znanych luk i zalecanych ścieżek naprawczych. Docker Scout został zaprojektowany z myślą o programistach i zintegrowany z Dockerem. Dzięki Docker Scout możesz spędzać mniej czasu na wyszukiwaniu i naprawianiu luk w zabezpieczeniach, a więcej na opracowywaniu kodu. Korzyści docker scout: Zrozumienie zależności aplikacji - Zapoznaj się z zależnościami aplikacji w każdej warstwie obrazów, niezależnie od tego, czy znajdują się one w obrazie podstawowym, czy w kodzie aplikacji. Przeanalizuj luki w swoich zależnościach - Oceń luki w zabezpieczeniach każdej zależności według warstwy, uszeregowane według ważności. Działaj szybko dzięki sugerowanym opcjom naprawczym - Szybko reaguj na alerty dzięki uszeregowanym pod względem ważności sugestiom i automatycznym rekomendacjom dotyczącym środków zaradczych. Kluczowe funkcje i możliwości Docker Scout: Ujednolicony widok analizy składu oprogramowania - W jednym widoku widoczne są bezpośrednie i przechodnie zależności aplikacji ze wszystkich warstw. Ten warstwowy widok nie tylko wyjaśnia kolejne etapy naprawy, ale także pomaga zrozumieć kompozycję obrazu. Aktualizacje luk w zabezpieczeniach zależne od zdarzeń - Luki w zabezpieczeniach są wykrywane i ujawniane w sposób ciągły przez sterowany zdarzeniami model danych, który obsługuje Docker Scout. Po opublikowaniu nowego CVE Docker Scout używa SBOM Twojego obrazu, aby sprawdzić, czy istnieje pozytywna korelacja między Twoim obrazem a Twoim CVE – dzięki czemu Twoje rekomendacje są zawsze aktualne. Zalecenia dotyczące środków zaradczych w kontekście - Zintegrowane rekomendacje są widoczne w Docker Desktop. Docker Scout zaleca opcje korygowania dla aktualizacji obrazu podstawowego, a także aktualizacji zależności w warstwach kodu aplikacji. Zródło: https://docs.docker.com/scout/ https://www.docker.com/products/docker-scout/

  • Vanilla OS porzuca Ubuntu na rzecz Debiana

    Twórcy projektu ogłosili dziś poważną zmianę: Vanilla OS porzuci Ubuntu i przejdzie na Debian Sid. Dlaczego?! Po pierwsze, w nazwie dystrybucji jest wskazówka: wanilia. Chce dostarczać pulpit jak najbliżej źródła, w tym przypadku GNOME. Ubuntu wprowadza szereg modyfikacji do GNOME, a usunięcie tych zmian jest, szczerze mówiąc, zbyt dużym wysiłkiem, biorąc pod uwagę wszystko. Po drugie, Snapy. Twórcy Vanilla OS nie są nimi tak zachwyceni, ponieważ nadal mają problemy związane z wydajnością i integracją. Ponadto niektóre pakiety przejściowe Ubuntu deb-to-snap (takie jak Mozilla Firefox) zaplątują się w menedżerze pakietów APX. Po trzecie, Vanilla OS chce być odpowiedzialny za własną kadencję wydawniczą, zamiast kłaniać się półrocznym spadkom Ubuntu. Przejście na Debian Sid daje mu większą kontrolę w tym obszarze. Co dalej? Kolejnym planowanym wydaniem jest Vanilla OS 2.0 „Orchid”. Będzie on oparty na Debianie Sid (choć z ograniczeniami mającymi na celu ujarzmienie ostrzejszych krawędzi wersji kroczącej, takich jak wysyłanie mniejszego zestawu podstawowych pakietów). GNOME 44, obsługa OCI w ABRoot oraz kilka nowych opcji konfiguracji. Obecni użytkownicy Vanilla OS (opartego na Ubuntu) mogą spodziewać się dalszego otrzymywania aktualizacji po wydaniu Vanilla OS 2.0, twierdzą twórcy. Plany „uaktualnienia” z wersji 1.0 do wersji 2.0 wciąż są przedmiotem dyskusji.

  • Wykorzystują luki w środowiskach kontenerowych

    Zaawansowana kampania ataków o nazwie SCARLETEEL kierowana jest na środowiska kontenerowe w celu kradzieży wrażliwych danych i tworzonego oprogramowania. Z raportu Sysdig wiemy, że atakujący wykorzystał podatność w konteneryzowanym workload, a następnie użył jej do eskalacji uprawnień na konto AWS w celu kradzieży danych i poświadczeń. Zaawansowany atak w chmurze wiązał się również z wdrożeniem oprogramowania do kopania kryptowalut, które było albo próbą generowania nielegalnych zysków, albo sztuczką mającą na celu odwrócenie uwagi obrońców i zbicie ich z tropu. Początkowy wektor infekcji opierał się na wykorzystaniu podatnej na ataki usługi publicznej w samodzielnie zarządzanym klastrze Kubernetes, hostowanym na Amazon Web Services (AWS). Po zdobyciu przyczółka uruchomiono koparkę kryptowalut XMRig i użyto skryptu bash w celu uzyskania poświadczeń, które można było wykorzystać do dalszego zagłębiania się w infrastrukturę chmury AWS i eksfiltracji wrażliwych danych. Włamanie wyłączyło również dzienniki CloudTrail, aby zminimalizować ślady, uniemożliwiając firmie Sysdig dostęp do dodatkowych dowodów. W sumie umożliwiło to aktorowi dojście do ponad 1 TB danych, w tym skryptów klientów, narzędzi do rozwiązywania problemów i plików dziennika. Atakujący próbowali również przełączyć się za pomocą pliku stanu Terraform na inne połączone konta AWS, aby rozszerzyć swój zasięg w całej organizacji. Okazało się to jednak nieskuteczne z powodu braku uprawnień. Schemat ataku Krok 1: Atakujący uzyskał początkowy dostęp, wykorzystując usługę publiczną w samodzielnie zarządzanym klastrze Kubernetes, hostowanym w ramach konta w chmurze AWS. Krok 2: Gdy haker zyskał dostęp, złośliwe oprogramowanie było w stanie wykonać dwie początkowe akcje podczas uruchomienia: wystartować koparkę kryptowalut w celu generowania zysku bądź odwrócenia uwagi, uzyskać dostęp do poświadczeń za pomocą tymczasowych poświadczeń pracownika w Instance Metadata Service (IMDS) v1, aby wyliczać i zbierać informacje w jego imieniu przy użyciu uprawnień roli klastra. Ze względu na nadane uprawnienia, atakujący był w stanie: wylistować zasoby AWS, znaleźć poświadczenia innych użytkowników zarządzania tożsamością i dostępem (IAM), zarówno ustawionych jako zmienne środowiskowe Lambda, jak i przekazanych w postaci zwykłego tekstu do zasobników Amazon Simple Storage Service (S3). Krok 3: Atakujący użył poświadczeń znalezionych w poprzednim kroku, aby przeskoczyć lateralnie po sieci. Skontaktował się bezpośrednio z interfejsem API AWS i przystąpił do zbierania informacji i eksfiltracji danych. Na tym etapie cyberprzestępcy byli w stanie: wyłączyć dzienniki CloudTrail, aby uniknąć wykrycia, kraść zastrzeżone oprogramowanie, znaleźć poświadczenia użytkownika IAM powiązane z innym kontem AWS, wykrywając pliki stanu Terraform w zasobnikach S3. Krok 4: Atakujący użył nowych danych uwierzytelniających, aby ponownie przejść w bok, powtarzając atak i cały łańcuch z innego znalezionego konta AWS. Na szczęście w tym przypadku nie był w stanie enumerować zasobów, ponieważ wszystkie żądania API AWS, których próbował, zakończyły się niepowodzeniem z powodu braku uprawnień. Zródło: https://sysdig.com/blog/cloud-breach-terraform-data-theft/

  • Stwórz sobie backdoor w dzienniku zdarzeń Windows

    Technik na ukrywanie się w systemie Windows i możliwości utworzenia backdoora jest na pewno wiele. Czy jednak zdawałeś sobie sprawę, że taki backdoor może istnieć również w logach na Windows, a tak naprawdę w przeglądarce logów? O tym właśnie jest dzisiejszy tekst. Event Viewer na Windows jako miejsce przyczółku dla atakującego Event Viewer (podgląd dziennika zdarzeń) to znana w środowisku administratorów i cybersecurity konsola (składnik systemu Windows) do wyświetlania logów. Pokazuje informacje związane z aplikacjami, bezpieczeństwem, zdarzeniami systemowymi i konfiguracyjnymi. Mimo że podgląd zdarzeń używany jest głównie do rozwiązywania problemów z systemem Windows przez administratorów, może być również wykorzystywany jako miejsce, w którym zespół red team lub atakujący mogą utworzyć w systemie przyczółek. Jedną z funkcji, jakie oferuje konsola, jest pomoc dla administratorów w celu uzyskania bezpośrednich informacji o określonym identyfikatorze zdarzenia przez Internet. Microsoft wbudował tę funkcję pod linkiem o nazwie: „Pomoc online dziennika zdarzeń”. Pomoc online dziennika zdarzeń przekierowuje użytkowników do adresu URL firmy Microsoft i jest kontrolowana z następującej lokalizacji rejestru: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Event Viewer Co to dla nas oznacza? Jeśli uzyskałeś wcześniej dostęp administracyjny do systemu lub Twój payload czy skrypt modyfikujący rejestr został uruchomiony na poświadczeniach użytkownika, który pracuje na komputerze, jako lokalny admin możesz zmodyfikować ciekawe trzy klucze rejestru. Wszystkie one dotyczą właśnie powyższego przycisku pomocy (hyperlink) w konsoli. Omawiane klucze to: MicrosoftRedirectionURL= MicrosoftRedirectionProgramCommandLineParameters= MicrosoftRedirectionProgram= W tle systemu operacyjnego, gdy klikniemy łącze, konsola (proces mmc.exe) otworzy domyślne łącze pomocy firmy Microsoft, które będzie renderowane przez aktualnie skonfigurowaną (domyślną) przeglądarkę. Najważniejsze w tym wszystkim jest to, że modyfikując wartości tych kluczy, zamiast domyślnej przeglądarki możemy uruchomić wybrany przez nas program! Wiedza na temat odpowiedniej modyfikacji kluczy rejestru będzie sednem powodzenia utworzenia takiego backdoora w systemie. Pamiętajmy, że do ich modyfikacji potrzebne są uprawnienia administratora. Później, żeby wykonać tę sztuczkę i uruchomić backdoor, wystarczy, że będziemy zalogowani na zwykłym koncie użytkownika. Jakie wartości wpisać? W przypadku: MicrosoftRedirectionURL –można zmienić na np. „file://c:\windows\system32\cmd.exe” MicrosoftRedirectionProgram – można bezpośrednio wskazać plik wykonywalny. Można też majstrować przy parametrach wiersza poleceń, Podczas konfigurowania parametrów pojawia się jeden problem – istnieje odpowiednik dla tych wpisów w rejestrze w gałęzi „Wow6432Node”, ale nie wydają się one zdatne do użytku. Nawet jeśli wpisy w tym kluczu zostaną zmienione, a podgląd zdarzeń zostanie uruchomiony z katalogu syswow64 (w celu wymuszenia wersji 32-bitowej), system operacyjny i tak uruchomi właściwą wersję 64-bitową. Kolejna rzeczą, która należy wyłączyć w rejestrze, jest ostrzeżenie użytkownika, a w zasadzie prośba o zgodę na przesłanie danych z dziennika do firmy Microsoft (to okno dialogowe pojawia się przed uruchomieniem programu): W celu wyłączenia tego okna należy w rejestrze zmienić parametr w kluczu: HKCU\Software\Microsoft\Windows NT\ CurrentVersion\Event Viewer\ConfirmUrl=0 na zero. Po tej zmianie w momencie kliknięcia na link pomocy możemy się cieszyć uruchomionym w systemie naszym payload lub LOLBinem Czy stanowi to duże zagrożenie? Zauważmy, że do detekcji tego procesu wystarczy reguła w systemie bezpieczeństwa, która będzie sprawdzała proces „mmc.exe” i odpalane przez niego procesy dziedziczne. Ponadto monitorowanie powyższych kluczy rejestru pod kątem zmian może stworzyć okazję do wykrycia próby manipulacji w systemie. Patrząc też na konieczność ręcznego dostępu do konsoli w celu kliknięcia na link i biorąc pod uwagę fakt, że przeciętny użytkownik zazwyczaj nie otwiera dziennika zdarzeń i nie klika pomocy online, jest mało prawdopodobne, aby technika ta zyskała popularność. Sprawdzi się natomiast jako trywialna metoda do odpalenia payload i uruchomienia kanału komunikacji

  • Aktualizacja PS5 7.0 dla wszystkich!

    Sony informuje, że dzisiaj nastąpiła globalna premiera nowej wersji systemu PlayStation 5. Wcześniej mogli korzystać z nowości jedynie testerzy. Zobacz, jakie funkcje i nowości zawiera aktualizacja PS5 7.0. Po tygodniach testów, aktualizacja PS5 7.0 (23.01-07.00.00) została udostępniona dla wszystkich posiadaczy najnowszej konsoli od Sony. To, na co czekała zdecydowana większość graczy, to integracja z Discord. Lecz update zawiera wiele innych przydatnych nowości, jak choćby obsługę zmiennej częstotliwości odświeżania (VRR) dla rozdzielczości 1440p. Aktualizacja waży 1,142 GB. Zobacz, co dokładnie zawiera. Główne cechy tej aktualizacji oprogramowania systemu Wyjście wideo 1440p zostało rozszerzone na konsoli PS5. VRR (variable refresh rate — zmienna częstotliwość odświeżania) jest teraz obsługiwana w rozdzielczości 1440p. Obsługiwanych jest więcej trybów i urządzeń HDMI. Aby sprawdzić, czy dane urządzenie HDMI obsługuje tę funkcję, wybierz Ustawienia > Ekran i wideo > Wyjście wideo > Testuj wyświetlanie w rozdzielczości 1440p. Można teraz przesyłać dane między konsolami PS5. Łatwo prześlesz wszystkie dane z jednego urządzenia PS5 na inne. W ramach tego procesu Twoje dane na pierwszej konsoli PS5 nie zostaną usunięte ani zmienione. Od teraz na konsoli PS5 można korzystać z czatu głosowego na platformie Discord. Możesz połączyć swoje konto Discord z kontem PlayStation Network. Aby rozpocząć czat głosowy Discord na PS5, uruchom aplikację Discord na urządzeniu mobilnym lub komputerze. Możesz także udostępniać znajomym z platformy Discord informację, kiedy jesteś online i w co grasz. Funkcja poleceń głosowych obsługuje teraz używanie głosu do zapisywania klipów wideo z rozgrywki. Powiedz „Hey PlayStation, capture that!” (Hej PlayStation, zapisz to!), aby zapisać klip wideo z ostatniej rozgrywki. Domyślny czas zapisu zależy od wybranych ustawień. Możesz też zapisać określony czas trwania Twojej rozgrywki, od 15 sekund do 60 minut. Na przykład, aby zapisać 5 minut, powiedz „Hey PlayStation, capture the last 5 minutes” (Hej PlayStation, zapisz ostatnie 5 minut). Aby ręcznie rozpocząć nowe nagranie rozgrywki, powiedz „Hey PlayStation, start recording” (Hej PlayStation, rozpocznij nagrywanie). Następnie możesz powiedzieć „Hey PlayStation, stop recording” (Hej PlayStation, zatrzymaj nagrywanie), aby zakończyć nagrywanie i zapisać klip wideo. Obecnie funkcja Polecenie głosowe (podgląd) jest dostępna tylko w języku angielskim dla graczy mających konta w PlayStation Network w USA i Wielkiej Brytanii. Inne zaktualizowane funkcje Do funkcji czytnika ekranu wprowadzono następujące ulepszenia. Czytnik ekranu zapewnia teraz bardziej szczegółowe wskazówki podczas obsługi konsoli. Pokazuje, w którym kierunku można przejść od aktualnie wybranego komponentu, a także aktualną pozycję w komponencie z wieloma elementami. Podczas korzystania z czytnika ekranu w przeglądarce internetowej widoczne będą teraz obramowania wokół sekcji, która jest odczytywana na głos. Czytnik ekranu został zaktualizowany tak, aby poprawnie odczytywał niektóre kluczowe terminy. Do centrów gier dodaliśmy następujące funkcje: Każda gra będzie miała widoczny w centrum gier zegar, który odlicza całkowity czas rozgrywki. Postęp gry będzie również wyświetlany w przypadku gier, w których jest określona maksymalna liczba działań fabularnych. Został dodany kafelek Znajomi, którzy grają . Możesz zobaczyć, którzy z Twoich znajomych mają daną grę i kto jest aktualnie online. Wybierając kafelek, możesz zobaczyć, co robią Twoi znajomi, a także uzyskać dostęp do ich profili, gdzie dostępnych jest więcej opcji interakcji. Kafelek trofeów został przeniesiony i zaktualizowany, tak aby ułatwić do niego dostęp. Wyświetla też postępy w zdobywaniu trofeów. Karty trybu współzawodnictwa wielu graczy można wyświetlać na pełnym ekranie. Wybranie opcji Uruchom aktywność spowoduje przejście od razu do meczu. Dzięki umieszczeniu karty w widocznym miejscu i jej rozmiarowi łatwo jest jej używać w trybie dla wielu graczy. Funkcja rozgrywki multiplatformowej została zaktualizowana w następujący sposób. Karty sesji gry w trybie multiplatformowym umożliwiają teraz sprawdzenie, którzy członkowie grają na innych platformach. Do Game Base dodano następujące funkcje. Możesz teraz wysłać prośbę o udostępnienie ekranu lub rozpocząć sesję udostępniania ekranu znajomemu bezpośrednio z jego profilu. Wybierz ikonę udostępniania ekranu w profilu znajomego. Prośbę o udostępnienie ekranu możesz też wysłać z PlayStation App. Na karcie czatu głosowego, przy uczestnikach imprezy grających w grę, do której możesz dołączyć, zostanie wyświetlona ikona umożliwiająca dołączenie. Możesz dołączyć do gry bezpośrednio, wybierając gracza, a następnie wybierając z menu opcję Dołącz do gry . Znajomi, którzy są aktywni w PlayStation App, będą teraz oznaczeni jako online na Twojej liście znajomych. Co zmieniliśmy w bibliotece gier: Możesz określić domyślną kolejność sortowania gier na listach. Za pomocą filtrów w bibliotece możesz łatwo znajdować gry przeznaczone do systemów PS VR i PS VR2. Do ustawień wstępnych gry dodano następujące opcje. W grach obsługiwanych przez tę funkcję możesz ustawić swoje preferencje w taki sposób, aby decydować, kto może dołączyć i kto może zapraszać inne osoby na utworzone przez Ciebie sesje dla wielu graczy. Wybierz Ustawienia > Zapisane dane i ustawienia gry/aplikacji > Ustawienia wstępne gry > Sesje wieloosobowej gry online i wskaż preferencje w obszarach Kto może dołączać i Kto może zapraszać. Zmieniliśmy sposób sprawdzania zapisywanych danych podczas pobierania i instalacji gry. Jeśli jest to gra na PS4, a nie masz zapisanych danych w pamięci masowej konsoli, otrzymasz powiadomienie, czy zapisane dane PS4 są dostępne w chmurze. Jeśli jest to gra na PS5, która może korzystać z zapisanych danych PS4, a nie masz zapisanych danych w pamięci masowej konsoli, otrzymasz powiadomienie, czy zapisane dane PS4 są dostępne w chmurze. Aby pobrać zapisane dane z pamięci w chmurze, naciśnij przycisk PS. Gdy powiadomienie się rozwinie, wybierz opcję Pobierz zapisane dane PS4. Możesz teraz wybrać, które pliki Galerii multimediów przesłać ręcznie do Zrzutów w PlayStation App. Dotychczasowe zasady dotyczące zawartości nadal obowiązują. W klawiaturze ekranowej wprowadzono następujące zmiany. Gdy zaczniesz wpisywać znaki, w górnej części klawiatury ekranowej pojawią się sugestie. Naciskając przycisk R1, wybierasz daną sugestię – nie musisz jej wpisywać ręcznie. Aby wpisać wybraną sugestię, naciśnij przycisk krzyżyk. Jeśli chcesz usunąć jakieś sugestie z pamięci konsoli, możesz to zrobić w menu opcji. (Tylko w przypadku klawiatury japońskiej) Sugestie pojawiające się podczas wpisywania znaków są teraz wyświetlane zarówno w postaci znaków o połowie szerokości, jak i pełnej szerokości. Wyświetlane są już emoji z Unicode 15.0. Czas potrzebny na przeprowadzenie kontroli integralności pobranych danych został znacznie skrócony. Proces ten jest wykonywany w czasie, gdy na pobieranym elemencie widoczna jest etykieta [Kopiowanie…] w obszarze Pobieranie/Przesyłanie w centrum sterowania. Został zmieniony sposób uruchamiania zainstalowanych gier. Jeśli na PS5 znajduje się pobrana wersja gry, której użytkownik nie kupił (np. gra kupiona przez innych użytkowników tej samej konsoli), a masz wersję na płycie, to możesz teraz zagrać w zainstalowaną wersję do pobrania, wkładając płytę (bez instalowania wersji z płyty). Tak samo, jeśli gra została zainstalowana z płyty i masz kupioną wersję do pobrania, to możesz teraz uruchomić zainstalowaną wersję z płyty bez wkładania dysku. System podpowiedzi został rozszerzony i wyświetla teraz listę celów, o ile są dostępne w grze. Wybierając dowolny cel, możesz zobaczyć film lub podpowiedź tekstową o bardziej szczegółowym charakterze. Możesz teraz przeglądać autoryzowane aplikacje i zarządzać nimi w Ustawieniach. Autoryzowane aplikacje to aplikacje i usługi innych firm, z którymi zostało połączone konto PlayStation Network. Korzystając z autoryzowanej aplikacji, wyrażasz zgodę na udostępnianie tej aplikacji danych swojego konta. Aby wyświetlić autoryzowane aplikacje i zarządzać nimi, wybierz Ustawienia > Użytkownicy i konta > Autoryzowane aplikacje. Zaktualizowaliśmy oprogramowanie kontrolera bezprzewodowego DualSense, kontrolera bezprzewodowego DualSense Edge i kontrolerów PlayStation VR2 Sense. Aktualizacja poprawia stabilność. Teraz oprogramowanie kontrolera bezprzewodowego DualSense można zaktualizować za pomocą połączenia bezprzewodowego. W przypadku problemów z bezprzewodową aktualizacją oprogramowania kontrolera podłącz go do systemu PS5 za pomocą przewodu USB. Następną aktualizację będzie można pobrać bezprzewodowo. Kontroler bezprzewodowy DualSense Edge i kontrolery PlayStation VR2 Sense obsługują już bezprzewodową aktualizację ich oprogramowania. Ta aktualizacja nie jest wymagana do wykonywania aktualizacji bezprzewodowych dla tych kontrolerów. Rozwiązano następujące problemy. Naprawiono komunikat o błędzie, który podawał mylące informacje dotyczące ograniczeń kontroli rodzicielskiej podczas korzystania z przeglądarki internetowej. Wprowadzono aktualizację w związku z problemem powodującym migotanie niektórych monitorów LCD IPS po włączeniu funkcji VRR (variable refresh rate — zmienna częstotliwość odświeżania). Aktualizacja może pomóc w rozwiązaniu tego problemu na takich monitorach.

  • Free Tier - małe porównanie

    Czy planujesz, dyskutujesz ze swoimi współpracownikami lub po prostu myślisz o przyjęciu chmury, ale nie masz pojęcia o cenach? Cóż, dostawcy chmury wiedzą o tym i oferują bezpłatne poziomy swoich usług, aby pomóc klientom wypróbować to samo. Kto kiedykolwiek odmówił bezpłatnego okresu próbnego? W tym blogu omawiamy, co jest oferowane dla bezpłatnych warstw każdego dostawcy usług w chmurze, tj. AWS vs Azure vs GCP Free Tier. Lista klientów dostawców usług w chmurze obejmuje zarówno indywidualnych programistów, jak i duże przedsiębiorstwa. Trzej najwięksi dostawcy usług w chmurze — Amazon Web Services, Google Cloud Platform i Microsoft Azure — oferują bezpłatne wersje próbne różnych usług. Te bezpłatne oferty mają ograniczone zasoby i nie mogą w pełni zaspokoić potrzeb produkcyjnych. Jednak bezpłatny okres próbny daje wyobrażenie o tym, jak usługi będą działać, nawet nie płacąc za to nic. Istnieją zasadniczo dwa rodzaje ofert w ramach Free Tier, tj. „bezpłatne przez ograniczony czas” i „zawsze bezpłatne”. Usługi w ramach każdego typu Free Tier mogą się różnić w zależności od dostawcy chmury. Może się zdarzyć, że dostawca usług w chmurze oferuje jedną usługę bezpłatnie przez ograniczony czas, a inny dostawca usług w chmurze oferuje podobną usługę bezpłatnie przez cały okres użytkowania z pewnymi ograniczeniami. Tutaj przyjrzymy się kluczowym aspektom oferty Free Tier najlepszych dostawców chmury — AWS , Microsoft Azure i Google Cloud . Przeczytaj, aby zrozumieć podobieństwa, różnice i ograniczenia każdej oferty. AWS vs Microsoft Azure vs Google Cloud Platform (GCP) Darmowe typy warstw Jak już wspomniano, istnieją tylko dwa rodzaje bezpłatnych poziomów, a mianowicie: 1. Bezpłatnie przez ograniczony czas: Dostawcy usług w chmurze oferują pewne usługi bezpłatnie przez 12 miesięcy . Ten bezpłatny poziom jest oferowany tylko przy pierwszej rejestracji lub pierwszej rejestracji w usługach i to również z pewnymi ograniczeniami. Opłata za usługi zostanie naliczona według zwykłej stawki 12 miesięcy po pierwszej rejestracji. 2. Zawsze za darmo: Istnieje kilka usług oferowanych przez dostawców usług w chmurze, które są bezpłatne przez całe życie , ale wiąże się to z miesięcznym ograniczeniem korzystania z tych usług . Możesz zarządzać miesięcznym wykorzystaniem usług za pośrednictwem konsol oferowanych przez danego dostawcę. Kluczowe punkty do zapamiętania: Platforma Azure i Google Cloud oferują środki na usługi podczas rejestracji. Google Cloud oferuje środki w wysokości 300 USD do wykorzystania na dowolną usługę Google Cloud Platform. Twój 12-miesięczny bezpłatny okres próbny zakończy się wcześniej, jeśli wydasz całe 300 USD kredytu przed upływem 12 miesięcy. Platforma Azure oferuje środki w wysokości 200 USD podczas rejestracji, które można wydać w ciągu pierwszych 30 dni. Jednak wydanie całego kredytu nie zakończy bezpłatnego okresu próbnego. Jakie są ograniczenia Free Tier w AWS, Azure i Google Cloud? Wspomniane powyżej usługi Free Tier mają ograniczenia czasowe do 12 miesięcy dla użytkowników rejestrujących się po raz pierwszy oraz miesięczne ograniczenia użytkowania. Są to ograniczenia, które pojawiają się, jak „sugeruje nazwa”, ale nie są to jedyne ograniczenia i zwykle mogą obowiązywać inne. Oto inne ograniczenia, w które zazwyczaj wyposażone są poziomy bezpłatne : Ograniczenia operacyjne: Usługi Free Tier są oferowane z określonymi ograniczeniami, które można wyłączyć tylko po przejściu na wersję płatną. Oprogramowanie i systemy operacyjne: Oprogramowanie komercyjne i systemy operacyjne zasadniczo nie są objęte warstwą Bezpłatną. Wydaje się to sprawiedliwe, ponieważ oprogramowanie i system operacyjny dają użytkownikowi wyłączną kontrolę nad spełnianiem ich żądań, za które faktycznie należy zapłacić. Rollovery są zabronione: Limity są określone typowo dla miesięcznego użytkowania, jeśli nie wykorzystasz tego, co jest oferowane w danym miesiącu, użycie nie zostanie przeniesione na następny miesiąc. Cóż, oto profesjonalna wskazówka, jeśli naprawdę chcesz poznać tę usługę, skorzystaj z niej w ciągu miesiąca, ponieważ jest to idealny czas na eksperymenty. Najważniejsze informacje o darmowym poziomie AWS. AWS Lambda: Ta usługa FaaS (funkcja jako usługa) może być używana w warstwie bezpłatnej z maksymalnie 1 milionem żądań i 3,2 miliona sekund czasu obliczeniowego miesięcznie. Funkcje krokowe AWS: Użytkownik ma prawo do 4000 bezpłatnych przejść między stanami miesięcznie. Amazon Glacier: Jest to długoterminowa usługa przechowywania danych, a użytkownik może odzyskać do 10 GB danych. AWS CodeCommit: AWS pozwala maksymalnie pięciu użytkownikom z 50 GB przestrzeni dyskowej miesięcznie i 10 000 żądań Git AWS CodePipeline: Użytkownicy otrzymują bezpłatnie jeden aktywny rurociąg miesięcznie. AWS CodeBuild: Użytkownik otrzymuje 100 minut kompilacji miesięcznie na instancji typu build.general1.small w ramach warstwy bezpłatnej. Amazon DynamoDB: Baza danych AWS NoSQL oferuje 25 GB przestrzeni dyskowej i 25 jednostek pojemności odczytu i zapisu bezpłatnie każdego miesiąca. Amazon twierdzi, że to „wystarcza do obsłużenia do 200 milionów żądań miesięcznie”. Amazon Chime: Jest to usługa komunikacji biznesowej AWS, która jest całkowicie bezpłatna dla nowych klientów od 4 marca 2020 r. do 30 czerwca 2020 r. Pamiętaj, że podstawowe funkcje, takie jak czat tekstowy i połączenia głosowe, są zawsze bezpłatne. Odwiedź Amazon Web Services Free Tier, aby uzyskać więcej informacji. Najważniejsze informacje dotyczące bezpłatnej warstwy platformy Microsoft Azure Azure Functions: użytkownicy mogą przesyłać do 1 miliona żądań miesięcznie w ramach bezpłatnej warstwy. Azure Active Directory: Bezpłatna warstwa oferuje do 50 000 uwierzytelnień miesięcznie. Azure DevOps: Użytkownicy mogą utworzyć do 5 użytkowników z nieograniczoną liczbą prywatnych repozytoriów Git. Usługa Azure App Service: można utworzyć do 10 aplikacji internetowych, mobilnych lub aplikacji interfejsu API bez żadnych kosztów. Azure Cosmos DB: Użyj do 500 GB przestrzeni dyskowej i 400 jednostek żądań na sekundę bez żadnych kosztów każdego miesiąca. Platforma Azure oferuje 5 GB danych wychodzących bezpłatnie miesięcznie. Odwiedź bezpłatną warstwę platformy Microsoft Azure, aby uzyskać więcej informacji. Najważniejsze informacje o bezpłatnej warstwie Google Cloud Google BigQuery: Użytkownicy mogą bezpłatnie korzystać z 1 TB zapytań i 10 GB przestrzeni dyskowej miesięcznie. Google Cloud Build: codziennie użytkownicy otrzymują bezpłatnie 120 minut budowania. Repozytoria źródłowe Google Cloud: w ramach bezpłatnej warstwy Google Cloud oferuje maksymalnie pięciu użytkownikom 50 GB przestrzeni dyskowej i 50 GB danych wychodzących. Funkcje Google Cloud: Bezpłatna warstwa oferuje 2 mln wywołań (zarówno w tle, jak i HTTP), wraz z 5 GB wychodzących danych sieciowych, 400 000 GB-sekund i 200 000 GHz-sekund czasu obliczeniowego. Google Compute Engine: tylko jedna maszyna wirtualna f1-micro jest dostępna bezpłatnie w regionie USA, ale korzystanie z GPU lub TPU wiąże się z dodatkowymi kosztami. Przestrzeń dyskowa Google Cloud: w ramach bezpłatnej warstwy co miesiąc użytkownicy otrzymują 5 GB regionalnej pamięci masowej w Stanach Zjednoczonych, 5000 operacji klasy A i 50 000 operacji klasy B oraz 1 GB danych wychodzących, które są ograniczone zgodnie z Compute Engine. Odwiedź bezpłatną warstwę Google Cloud Platform, aby uzyskać więcej informacji. Plus zestawienie mniejszych graczy na GitHUB: https://github.com/cloudcommunity/Cloud-Free-Tier-Comparison 4. Oracle Cloud Homepage: Oracle Cloud Free Tier Free for Limited-time 30 day free trial US $300 credit for 30 days Up to eight instances across all available services Up to 5 TB of storage Always Free Compute: (Note- 1 Oracle OCPU = 2 vCPUs) 2 AMD-based VMs: 1/8 OCPU = 0.25 vCPU with 1 GB RAM each 4 Arm-based VMs: 24 GB RAM total, 3,000 OCPU hours and 18,000 GB memory hours per month 2 Block Volumes Storage, 200 GB total 10 GB Object Storage - Standard 10 GB Object Storage - Infrequent Access 10 GB Archive Storage 10TB of network data egress/month per originating region Resource Manager (managed terraform) 5 OCI Bastions 2 Oracle Autonomous Databases incl. Oracle Application Express (APEX), Oracle SQL Developer etc., each with 20GB storage NoSQL Database with 25GB storage per table, up to 3 tables 4 Load Balancers: 1 Flexible (10Mbps) and 3 Network Monitoring and Notifications 5. Alibaba Cloud Homepage: Alibaba Cloud Free Trial Try Over 40 Products for Free Worth $450-$1300 USD. Now up to 12 Months Usage for Elastic Compute Services. 6. IBM Cloud Homepage: IBM Cloud Free Tier Free for Limited-time US$200 credit for 30 days 7. Scaleway Homepage: Scaleway Free for Limited-time sometimes they give away free credits Always Free 75GB block storage (S3-compatible API) 50k message in the IoT Hub (MQTT, REST, Sigfox, LoRa) 8. DigitalOcean Homepage: DigitalOcean Free for Limited-time $100 credit for 60 days from do.co/hf100 9. Hetzner Cloud Homepage: Hetzner Cloud Free for Limited-time sometimes they give away free credits 10. render Homepage: render Free for Limited-time sometimes they give away free credits Always Free static site hosting 11. Netlify Homepage: Netlify Free for Limited-time sometimes they give away free credits Always Free static site hosting 12. jfrog Homepage: Jfrog Free Tier Free for Limited-time Self-Hosted 30 day trial Always Free 2GB Storage 10GB Transfer/month 2,000 CI/CD Minutes/month 13. Salesforce Homepage: Salesforce Free Tier Free for Limited-time Your FREE 30-Days Trial Now! Always Free When you download Listware for Salesforce, you are given 1,000 free credits which you can use during a free 30-day trial of the app. 14. Openshift Homepage: Interactive Learning Portal Try out Openshift 4 cluster for free Openshift 4: Try Openshift 4 cluster for free 15. Linode Homepage: Linode Free for Limited-time US$100, 60-day free trial requires valid credit card. free-credit-100 16. Container Hosting Service Homepage: Container Hosting Service Currently Free Container Hosting Service Try Open Source Container Hosting Service for free 17. Fly.io Homepage: Fly.io Always free on all plans: Up to 3 shared-cpu-1x 256mb VMs (Apps or Machines) 3GB persistent volume storage (total) 160GB outbound data transfer 18. Railway Homepage: Railway Always Free: 512 MB RAM and shared CPU/container 1 GB Disk (split between your services) $5 or 500 hours of usage (deploys shut off when first limit is reached) Źródło: https://n2ws.com/blog/amazon-aws-microsoft-azure-google-cloud-free-tier-cloud-computing-service-comparison https://www.infoworld.com/article/3179785/aws-vs-azure-vs-google-cloud-which-free-tier-is-best.html https://github.com/cloudcommunity/Cloud-Free-Tier-Comparison

  • Omijanie 2FA na Google, YouTube, Facebook

    Przejmują konta Google i YouTube umieszczając na nich live stream typu: Z super okazja pomnożenie BTC :D Jak przejmuj konta - Taki stealer (malware) musi być w jakiś sposób dostarczony do ofiary – np. za pomocą złośliwej reklamy wykupionej w Google, która kieruje w sklonowaną stronę jednego z popularnych pakietów oprogramowania (GIMP, Blender, Notepad++, sterowniki do karty graficznej…). Inna opcja to np. pirackie oprogramowanie. Ofiara pobiera narzędzie, instaluje je i… stealer już działa – tj. wykrada hasła, ciasteczka z przeglądarki i inne ciekawe dane. Poniżej przykładowy wynik działania takiego narzędzia. Przestępca posiada ciasteczka z przeglądarki – nie musi zatem przejmować się żadnym 2FA, ponieważ przejmuje zalogowaną sesję – czym dostaje się bez loginu/hasła/2FA na konto ofiary. A o FB - możemy przeczytać na Sekuraku, który to ładnie i ciekawie opisał. Zródło: https://sekurak.pl/od-cracka-narzedzia-tworzacego-pdfy-po-przejecie-kont-reklamowych-na-facebooku-i-to-pomimo-skonfigurowanego-2fa-analiza/

  • Ubuntu 22.04.2 LTS jest dostępny do pobrania

    Wersja Ubuntu 22.04.2 LTS jest już dostępna do pobrania. Ta aktualizacja, służąca jako drugie wydanie punktowe w serii Ubuntu 22.04 LTS, zawiera wiele poprawek bezpieczeństwa, poprawek błędów i aktualizacji oprogramowania wydanych dla Jammy Jellyfish od czasu poprzedniego wydania punktowego. Co więcej, Ubuntu 22.04.2 LTS wprowadza zupełnie nowy stos sprzętowy (HWE) składający się z nowszego jądra Linuksa i zaktualizowanych sterowników graficznych Linuksa. Właściwie jest to pierwsza z dwóch zaplanowanych na ten rok premier punktowych. Ubuntu 20.04.3 ma pojawić się późnym latem, a także aktualizacje pakietów wydawane od czasu do czasu, dostarczane z jądrem Linuksa używanym w nadchodzącej wersji Ubuntu 23.04. Ubuntu 22.04 LTS zawiera jądro Linuksa 5.19, Mesa 22.2.5 i libdrm 2.4.113. W pakiecie znajduje się również pakiet aktualizacji, w tym GNOME Shell 42.5, LibreOffice 7.3.7.2 i Mozilla Firefox 110. Możesz zobaczyć pełną listę zmian wprowadzonych między Ubuntu 22.04.1 a Ubuntu 22.04.2 na forum Ubuntu (chociaż strona może, ale nie musi, zostać zaktualizowana, kiedy to czytasz). Przypominamy, że system Ubuntu 22.04 LTS jest obsługiwany do kwietnia 2027 r., a mamy też Ubuntu ESM i/lub Ubuntu Pro. Pobierz Ubuntu 22.04.2 LTS Ubuntu 20.04.2 LTS można pobrać ze strony internetowej Ubuntu/ serwera wydań Ubuntu oraz z oficjalnych serwerów lustrzanych. Jeśli korzystasz już z Ubuntu 22.04 LTS, nie musisz nic „robić”, ponieważ dopóki masz zainstalowane wszystkie dostępne aktualizacje, „masz” Ubuntu 22.04.2 LTS.

  • Podatności w Cisco oraz Fortinet

    Podatności w Cisco i dostępne łatki Podatności Cisco dotyczą kilku produktów zabezpieczających i sieciowych dla przedsiębiorstw. Naprawione zostały między innymi: krytyczna luka (CVE-2023-20032) w bibliotece skanowania ClamAV, używanej przez Secure Endpoint, Secure Endpoint Private Cloud i Secure Web Appliance oraz dwie luki wysokiego ryzyka (CVE-2023-20009, CVE-2023-20075) mające wpływ na urządzenie Email Security Appliance oraz Cisco Secure Email and Web Manager, dla których jest już dostępny kod exploita typu proof-of-concept (PoC). Podatność CISCO CVE-2023-20032 Pierwsza luka, CVE-2023-20032, to luka w parserze plików partycji HFS+ różnych wersji ClamAV – bezpłatnego wieloplatformowego zestawu narzędzi do ochrony przed złośliwym oprogramowaniem, utrzymywanym przez Cisco Talos. „Wykryty błąd wynika z braku sprawdzania rozmiaru bufora, co może skutkować zapisem przepełnienia bufora sterty. Osoba atakująca może wykorzystać tę lukę, przesyłając spreparowany plik partycji HFS+ do przeskanowania przez ClamAV na zagrożonym urządzeniu. Udany exploit może pozwolić atakującemu na wykonanie dowolnego kodu z uprawnieniami procesu skanowania ClamAV lub też spowodować awarię procesu, powodując stan odmowy usługi (DoS)” – wyjaśnia Cisco. Wersje ClamAV zawierające poprawkę tej podatności oraz poprawkę dla CVE-2023-20052, luki powodującej wyciek informacji, zostały wydane w środę, ale ponieważ biblioteka jest używana również w rozwiązaniach Secure Web Appliance i Secure Endpoint i nie ma na nie obejścia, te także muszą zostać zaktualizowane. Dobra wiadomość jest taka, że żadna z tych luk nie jest aktywnie wykorzystywana. Podatności CISCO CVE-2023-20009, CVE-2023-20075 i exploit Kolejne podatności to możliwość przeprowadzania eskalacji uprawnień (CVE-2023-20009 ) i luka w zabezpieczeniach umożliwiająca wstrzykiwanie poleceń (CVE-2023-20075). Występuje ona w urządzeniach do ochrony poczty e-mail oraz instancji Cisco Secure Email i Web Manager. Obie podatności administratorzy tych urządzeń powinni jak najszybciej naprawić, gdyż pojawił się exploit. Aby atakujący mógł je wykorzystać i włamać się do środowiska IT, musi zdobyć prawidłowe dane uwierzytelniające użytkownika. Gdy już je uzyska, może użyć luk, aby podnieść swoje uprawnienia do root i wykonać na nich dowolne polecenia na urządzeniu, którego dotyczy problem. Jak wspomniano wcześniej, dla obu dostępny jest exploit PoC. Podatności w Fortinet i dostępne łatki Administratorzy urządzeń Fortinet mają ostatnio pełne ręce roboty związanej z aktualizacjami. Opisywana przez nas poważna podatność pozwalała zdalnie zalogować się do urządzenia z Internetu. W przypadku tego producenta wykryto i załatano krytyczne błędy RCE w FortiNAC i FortiWeb. Podatność Fortinet CVE-2022-39952 Pierwszy błąd wpływa na FortiNAC, jest śledzony jako CVE-2022-39952 oraz posiada wynik CVSS v3 9,8 (krytyczny). Produkty, w których wykryto lukę, to: FortiNAC 9.4.0, FortiNAC w wersji od 9.2.0 do 9.2.5, FortiNAC w wersji od 9.1.0 do 9.1.7, wszystkie wersje FortiNAC 8.8, wszystkie wersje FortiNAC 8.7, wszystkie wersje FortiNAC 8.6, wszystkie wersje FortiNAC 8.5, wszystkie wersje FortiNAC 8.3. Luka CVE-2022-39952 została naprawiona w FortiNAC 9.4.1 i nowszych, 9.2.6 i nowszych, 9.1.8 i nowszych oraz 7.2.0 i nowszych. FortiNAC to rozwiązanie do kontroli dostępu do sieci, które pomaga organizacjom uzyskać widoczność sieci w czasie rzeczywistym, egzekwować zasady bezpieczeństwa oraz wykrywać i łagodzić zagrożenia. „Zewnętrzna kontrola luki w zabezpieczeniach nazwy pliku lub ścieżki [CWE-73] w serwerze internetowym FortiNAC może pozwolić nieuwierzytelnionemu atakującemu na wykonanie dowolnego zapisu w systemie” – wyjaśnia Fortinet. Podatność Fortinet CVE-2021-42756 Druga luka w zabezpieczeniach FortiWeb to CVE-2021-42756. Uzyskała wynik CVSS v3 na poziomie 9,3 (krytyczny) i dotyczy WAF-a. O dziwo identyfikator CVE wskazuje, że luka została odkryta w 2021 r., ale do tej pory nie była publicznie ujawniona. FortiWeb to zapora sieciowa (WAF) przeznaczona do ochrony aplikacji internetowych i interfejsów API przed atakami typu cross-site scripting (XSS), wstrzykiwaniem kodu SQL, atakami botów, DDoS (rozproszona odmowa usługi) i innymi zagrożeniami internetowymi. „Wiele luk związanych z przepełnieniem bufora opartych na stosie [CWE-121] w demonie proxy FortiWeb może pozwolić nieuwierzytelnionemu zdalnemu atakującemu na wykonanie dowolnego kodu za pomocą specjalnie spreparowanych żądań HTTP” – opisuje Fortinet. CVE-2021-42756 wpływa na poniższe wersje: FortiWeb wersje 5.x – wszystkie wersje, FortiWeb w wersji 6.0.7 i starszych, FortiWeb w wersji 6.1.2 i starszych, FortiWeb w wersji 6.2.6 i starszych, FortiWeb w wersji 6.3.16 i starszych, FortiWeb wersje 6.4 – wszystkie wersje. W celu pozbycia się luki administratorzy powinni zaktualizować FortiWeb do wersji 7.0.0 lub nowszej, 6.3.17 lub nowszej, 6.2.7 lub nowszej, 6.1.3 lub nowszej oraz 6.0.8 lub nowszej. Producent nie dostarczył porad dotyczących łagodzenia skutków ani obejść żadnej z tych wad, więc zastosowanie dostępnych aktualizacji zabezpieczeń jest jedynym sposobem na zaradzenie zagrożeniom. Należy pamiętać, że ci, którzy nie zastosują aktualizacji w przypadku Cisco oraz Fortinet, będą wystawiali infrastrukturę IT na duże ryzyko ataku. Źródło: https://www.fortiguard.com/psirt/FG-IR-21-186 https://www.fortiguard.com/psirt/FG-IR-22-300 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-39952 https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-clamav-xxe-TcSZduhN https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-clamav-q8DThCy

  • Ataki spam na Kalendarze iPhone – jak sobie z tym radzić?

    Jeśli kiedykolwiek odblokujesz iPhone’a i zobaczysz liczne powiadomienia twierdzące, że zostałeś zhakowany, że Twój telefon nie jest chroniony, że wirusy uszkodziły dane lub (najlepsze) komunikat „Kliknij, aby pozbyć się irytujących reklam”, prawdopodobnie nie ma się czego obawiać. Całkiem możliwe, że przypadkowo zetknąłeś się z powszechną formą oszustwa: spamem wydarzeń z kalendarza. Spam kalendarza to cwany sposób na umieszczanie bezsensownych twierdzeń, ofert i ostrzeżeń z potencjalnie szkodliwymi linkami w aplikacji kalendarza, co powoduje wyświetlenie powiadomień i wzbudzenie niepokoju u użytkowników smartfonów. Najczęstszymi technikami rozprzestrzeniania spamu do kalendarza są fałszywe reklamy, wyskakujące okienka i inne formy kodowania używane na stronach internetowych, z którymi musiało dojść do interakcji. Można je znaleźć na stronach z treściami dla dorosłych, ale także na witrynach udostępniających pliki, nieoficjalnych platformach streamingowych, witrynach z grami, przypadkowych blogach, krótko mówiąc – praktycznie wszędzie. Aplikacje kalendarza takie jak iCal ułatwiają dodawanie publicznych kalendarzy, które są tylko adresami URL, a oszuści wykorzystują tę łatwość użycia. Celem gry hakerów jest tutaj skłonienie niczego niepodejrzewających użytkowników do zaakceptowania subskrypcji kalendarza. Często zaciemniają subskrypcję, rozpraszając uwagę. Na przykład użytkownik może zostać poproszony o potwierdzenie, że jest człowiekiem, za pomocą CAPTCHA. Użytkownik klika i zanim się zorientuje, kliknie również „OK” w kolejnej wiadomości, zawierającej subskrypcję kalendarza. Wystarczy, że użytkownik zaakceptuje jedną ze złośliwych subskrypcji, a kalendarz spamu i wszystkie powiązane wydarzenia zostaną dodane do domyślnej aplikacji kalendarza w iPhonie. Wydarzenia te zawierają alerty, które generują powiadomienia, przez co ekran może wyglądać mniej więcej tak. Poza tym oczywiście w samej aplikacji Kalendarz będzie istny chaos. Jest to tak duży i tak powszechny problem, że Apple napisało stronę poświęconą właśnie temu zjawisku. Istnieją dwa sposoby usuwania spamu z kalendarza, a wybór zależy od używanej wersji systemu iOS: iOS 14.6 lub nowszy: Otwórz aplikację Kalendarz. Stuknij niechciane wydarzenie w Kalendarzu. Stuknij opcję „Anuluj subskrypcję tego kalendarza” u dołu ekranu. Aby potwierdzić, kliknij „Anuluj subskrypcję”. Wcześniejsze wersje iOS: Otwórz aplikację Kalendarz. U dołu ekranu dotknij „Kalendarze”. Poszukaj kalendarza, którego nie rozpoznajesz. Stuknij przycisk „Więcej informacji” obok tego kalendarza, a następnie przewiń w dół i stuknij opcję „Usuń kalendarz”. Jeśli to nie rozwiąże problemu, usuń subskrypcję kalendarza w Ustawieniach: Otwórz aplikację Ustawienia. Stuknij Kalendarz > Konta. Stuknij w „Subskrybowane kalendarze”. Poszukaj kalendarza, którego nie rozpoznajesz. Stuknij go, a następnie stuknij „Usuń konto”. Spamerzy będą stale próbować nadużywania wszelkiego rodzaju urządzeń, aplikacji i systemów, aby oblegać użytkowników Internetu powiadomieniami. Tak niestety działa agresywny marketing. W 2019 roku użytkownicy Kalendarza Google zostali dotknięci falą spamerskich powiadomień, a w 2022 roku użytkownicy Calendly phisherami nadużywającymi usługi. W tym samym roku pojawiły się nowe funkcje bezpieczeństwa dla użytkowników Dokumentów Google, aby dać im trochę więcej pewności, że powiadomienia są lub nie są fałszywe. Bez względu na urządzenie lub usługę celem może być wszystko, co ma funkcję powiadamiania. Pod wieloma względami spam kalendarza idealnie pasuje do telefonów, na których bardzo często zdarzają się błędne kliknięcia przez użytkowników. Wystarczy jeden monit złośliwego kalendarza ukryty za czymś innym i ułamek sekundy nieuwagi, aby oszuści zagościli w Twoim telefonie. Dobrą wiadomością jest to, że gdy zrozumiemy, jak działa ta złośliwa aktywność, to bardzo łatwo będziemy w stanie usunąć powiadomienia i uwolnić telefon od niekończących się alertów z niechcianymi treściami.

  • Oh My ZSH i PowerLevel10k

    Jeżeli twój terminal jest nudny i szary, pozwól że przedstawię Ci rozwiązanie, które tchnie trochę życia do tej codziennej szarości :) Przedstawione rozwiązanie działa na Windows (WSL), Linux i MacOS - oczywiście wiadomym jest że trzeba będzie użyć innych paczek i narzędzi do instalacji oprogramowania. Pobieramy zsh Używamy (odpowiedniej) komendy od instalacji w naszym systemie: Po instalacji przełączamy naszą powłokę komendą zsh (zsh moze nas zapytac o konfiguracje, zalecam ustawienie rekomendowanych lub domyślnych): Instalujemy nasz Oh My Zsh Teraz instalujemy nasz theme PowerLevel10k za pomocą gh lub git Po instalacji możemy wykorzystać nasz nowy Theme - zastępujemy zmienna w naszym pliku (~/.zshrc) ZSH_THEME tą wartością: Zanim przystąpimy do konfiguracji naszego theme warto tez doinstalować font do naszego systemu: Polecany font to FiraCode NF a można pobrać go tu a dla użytkowników Windows - tu Jeżeli używasz Windows Terminal (git) lub mobaxterm lud dowolnego windowsowego klienta SSH warto jeszcze doinstalować ten font (w razie problemów z wyświetlaniem) A poniżej przykład konfiguracji Windows terminal Znów wydajemy polecenie zsh i nasz theme sie załaduje jeżeli będzie to pierwszy raz wyskoczy nam panel konfiguracyjny ale możemy go tez wywołać komendą: A o to jak to wygląda u mnie Reklama:

bottom of page