Bądź na bieżąco - RSS

Jak używać SSH jako VPN: przewodnik po Shuttle

24 lutego, 2024 | Brak Komentarzy | Kategoria: Linux, MacOS, Porady
Suttle

Termin “Poor Man’s VPN” często odnosi się do prostych, niestandardowych rozwiązań służących do tworzenia wirtualnych sieci prywatnych (VPN), które nie wykorzystują dedykowanego oprogramowania VPN. Zamiast tego mogą używać innych technologii, takich jak SSH (Secure Shell), do tworzenia zabezpieczonych tuneli przez Internet.

SSH jest często wykorzystywane do tworzenia prostych VPNów, ponieważ umożliwia szyfrowane połączenie między dwoma punktami w sieci. Przykładowo, można przekierować ruch z lokalnego komputera przez zdalny serwer SSH, co zadziała podobnie jak VPN, dzięki tunelowaniu ruchu sieciowego i umożliwi bezpieczny dostęp do zasobów sieciowych.

Shuttle to narzędzie działające jako transparentny serwer proxy, służący jako prosty zamiennik VPN. Działa poprzez przekierowanie ruchu za pomocą SSH. Nie wymaga uprawnień administratora i jest kompatybilne z Linuxem i MacOS. Ponadto obsługuje tunelowanie DNS, co jest istotne w kontekście przekierowania całego ruchu przez łącze VPN. Można go zainstalować na wiele sposobów, w tym przez menedżery pakietów w różnych dystrybucjach Linuxa, PyPI, Homebrew, a także bezpośrednio z kodu źródłowego. Dokumentacja jest dostępna online, a sshuttle może być również konfigurowany jako usługa.

Przykład użycia komendy sshuttle do przekierowania całego ruchu z lokalnego komputera przez połączenie SSH wraz z przekazywaniem zapytań DNS wygląda następująco:

sshuttle -r username@remote_host 0/0 -vv --dns

W powyższym poleceniu:

  • -r username@remote_host określa zdalnego użytkownika i host, przez który ma być przekierowany ruch.
  • 0/0 oznacza, że cały ruch ma być przekierowany.
  • -vv włącza tryb szczegółowych informacji (verbose).
  • --dns oznacza, że zapytania DNS również będą przekierowywane przez połączenie SSH.

Więcej informacji i opcji konfiguracyjnych można znaleźć w dokumentacji sshuttle dostępnej na GitHubie.

G

Tagi: , , , ,

Zarządzanie czasem pracy zdalnej: wprowadzenie do Kimai i Docker

27 stycznia, 2024 | Brak Komentarzy | Kategoria: Linux, Porady, Windows

Praca zdalna i prawo: efektywne monitorowanie czasu pracy

W Polsce, w obliczu nowych przepisów prawnych oraz rosnącej popularności pracy zdalnej, pojawiła się pilna potrzeba znalezienia skutecznych metod monitorowania czasu pracy. Zmiana ta wynika z konieczności dostosowania się do przepisów prawa pracy, które wymagają od pracodawców dokładnego rejestrowania czasu pracy pracowników, niezależnie od ich lokalizacji. Rozwiązanie ma na celu zapewnienie ochrony praw pracowniczych i przestrzegania norm dotyczących czasu pracy, co jest szczególnie ważne w modelu pracy zdalnej, gdzie tradycyjne metody rejestracji czasu pracy mogą być nieefektywne lub niewystarczające. Dlatego pojawiła się potrzeba wdrożenia narzędzi umożliwiających efektywne i zgodne z prawem zarządzanie czasem pracy zdalnej. Jednym z proponowanych jest bezpłatna platforma Kimai, która oferuje funkcjonalności konkurencyjne w stosunku do płatnych rozwiązań, takich jak TimeCamp czy Toggl, dostarczając równie efektywnych narzędzi do monitorowania czasu pracy, lecz bez dodatkowych kosztów dla organizacji.

Konteneryzacja Docker: efektywność i bezpieczeństwo

Konteneryzacja za pomocą Dockera stanowi jedną z najbardziej efektywnych metod wdrażania i zarządzania aplikacjami, oferując szereg zalet zarówno na systemach Windows, jak i Linux. Jedną z głównych zalet jest zdolność do szybkiego tworzenia gotowych do użycia serwerów w ciągu zaledwie kilku minut. Docker pozwala na izolację aplikacji w kontenerach, co zapewnia spójność środowiska między różnymi systemami operacyjnymi, eliminując typowe problemy związane z różnicami w konfiguracji. Co więcej, konteneryzacja ułatwia zarządzanie zasobami, umożliwiając efektywniejsze wykorzystanie dostępnej infrastruktury. Istotnym aspektem bezpieczeństwa jest możliwość korzystania z dobrze utrzymywanych i regularnie aktualizowanych obrazów kontenerów, co minimalizuje ryzyko eksploatacji znanych luk bezpieczeństwa. Dzięki temu, wybierając Docker, użytkownicy otrzymują nie tylko szybkie i elastyczne rozwiązanie do wdrażania aplikacji, ale także system, który przy odpowiednim zarządzaniu i wyborze źródeł może oferować wysoki poziom bezpieczeństwa.

Docker-compose: uproszczenie zarządzania wieloma kontenerami

Pakiet docker-compose jest narzędziem ułatwiającym zarządzanie wielokontenerowymi aplikacjami Docker. Pozwala on na definiowanie i uruchamianie aplikacji składających się z wielu kontenerów za pomocą jednego pliku konfiguracyjnego, zwanego docker-compose.yml. Dzięki temu, zamiast uruchamiać każdy kontener osobno i ręcznie zarządzać ich zależnościami oraz siecią, użytkownicy mogą wykorzystać docker-compose do automatyzacji tego procesu. Narzędzie to znacznie upraszcza proces konfiguracji środowiska, zwłaszcza w przypadku skomplikowanych aplikacji, gdzie interakcje między kontenerami są kluczowe. Ważne jest, że docker-compose nie jest domyślnie dołączony w instalacji standardowej wersji Docker i wymaga osobnego zainstalowania w systemie. Jest on dostępny zarówno dla systemów operacyjnych Windows, jak i Linux, a jego instalacja znacząco rozszerza możliwości zarządzania kontenerami Docker, ułatwiając pracę deweloperów i administratorów systemów. W systemie Windows docker-compose jest zwykle instalowany automatycznie wraz z Docker Desktop, a jego aktualizacja odbywa się poprzez aktualizację całego pakietu Docker Desktop.

Instalacja Kimai: konfiguracja via docker-compose

Aby rozpocząć instalację Kimai, pierwszym krokiem jest przygotowanie niezbędnego środowiska, a następnie utworzenie nowego folderu, w którym należy zapisać plik z poniższego przykładu. Jest on kluczowy dla procesu instalacji, gdyż zawiera konfigurację niezbędną do uruchomienia i zarządzania Kimai przy użyciu Docker-compose.

version: '3.5'
services:
  sqldb:
    image: mysql:5.7
    environment:
      - MYSQL_DATABASE=kimai
      - MYSQL_USER=kimai
      - MYSQL_PASSWORD=kimai
      - MYSQL_ROOT_PASSWORD=kimai
    volumes:
      - ./kimai2_db:/var/lib/mysql
    command: --default-storage-engine innodb
    restart: unless-stopped
  nginx:
    image: tobybatch/nginx-fpm-reverse-proxy
    ports:
      - 8080:80
    volumes:
      - public:/opt/kimai/public:ro
    restart: unless-stopped
    depends_on:
      - kimai
  kimai:
    image: kimai/kimai2:latest
    environment:
      - APP_ENV=prod
      - TRUSTED_HOSTS=localhost
      - ADMINMAIL=admin@example.me
      - ADMINPASS=changemeplease
      - DATABASE_URL=mysql://kimai:kimai@sqldb/kimai
      - TRUSTED_HOSTS=nginx,localhost,127.0.0.1
    volumes:
      - public:/opt/kimai/public
    restart: unless-stopped
volumes:
    public:

Żeby spersonalizować konfigurację trzeba zmienić dwa ustawienia zanaczone pogrubioną czcionką. W przypadku adresu e-mail będzie to zarazem nazwa konta do pierwszego logowania. W ostatnim kroku aby uruchomić swoją instancję Kimai i rozpocząć śledzenie czasu otwórz terminal, przejdź do folderu, w którym przechowywany jest powyższy plik, i wykonaj polecenie:

 docker-compose up -d

Po pomyślnym wykonaniu polecenia możesz otworzyć swoją instancję do śledzenia czasu Kimai w preferowanej przeglądarce internetowej i zalogować się przy użyciu danych uwierzytelniających z pliku docker.

G

Tagi: , , ,

IPv6 i nawiasy kwadratowe w NFS

30 grudnia, 2023 | Brak Komentarzy | Kategoria: Linux, Porady
IPv6 i nawiasy kwadratowe w NFS

1. Wprowadzenie: Moje Doświadczenia z IPv6 i NFS w Debianie

W “karierze” administratora systemów Linux, często spotykałem się z wyzwaniami związanymi z implementacją IPv6. Szczególnie w ulubionym Debianie, gdzie zauważyłem, że konfiguracja udziałów NFS (Network File System) z użyciem IPv6 wymaga uwzględnienia pewnych szczegółów, zwłaszcza konieczności używania nawiasów kwadratowych wokół adresów IPv6.

2. Znaczenie Nawiasów Kwadratowych w Adresach IPv6

Podczas konfiguracji udziałów NFS adresy IPv6 muszą być umieszczone w nawiasach kwadratowych. Jest to kluczowe dla rozróżnienia portów i adresów, zwłaszcza gdy adres IPv6 zawiera segmenty, które mogą być pomylone z formatem adresu URL.

3. Konfiguracja Udziału NFS z Użyciem IPv6 – Krok po Kroku

Jak skonfigurować udział NFS z IPv6?

  • Edytujemy /etc/exports na serwerze NFS, dodając ścieżkę i adres, np.:
    /path/to/share [2001:db8::1](rw).
  • Na kliencie montujemu udział za pomocą:
    mount -t nfs [2001:db8::1]:/path/to/share /local/mountpoint.

4. Scenariusz Użycia: Kopie Zapasowe przez IPv6

Jednym z praktycznych zastosowań, które implementowałem, jest system kopii zapasowych wykorzystujący udział NFS dostępny przez IPv6. Jest to szczególnie przydatne, gdy serwer kopii zapasowych jest dostępny wyłącznie przez IPv6.

5. Implementacja Systemu Kopii Zapasowych

W tym scenariuszu używam oprogramowania do backupu, takiego jak rsync lub Bacula, konfigurując je do wysyłania danych na udział NFS dostępny przez IPv6. Pamiętajmy o umieszczeniu adresu IPv6 serwera w nawiasach kwadratowych, co jest kluczowe dla poprawnego rozpoznania adresu przez oprogramowanie.

6. Podsumowanie

Podsumowując, użycie nawiasów kwadratowych w adresach IPv6 jest niezbędne przy konfiguracji udziałów NFS w Debianie. To prosta, ale istotna praktyka, która zapewnia prawidłową komunikację w sieciach IPv6 i pozwala na efektywne wykorzystanie technologii w takich zastosowaniach jak systemy kopii zapasowych.

G

Tagi: , , ,

Alpine Linux

28 października, 2023 | Brak Komentarzy | Kategoria: Felieton, Linux, Porady
Alpine Linux

Pierwszy raz Alpine Linux wpadł mi w oko przy okazji budowy maszyny wirtualnej w środowisku VMware ESXi kiedy miałem wskazać wybrany system z rodziny Linux z listy dostępnych opcji. Drugi raz nazwa ta przewinęła się przy okazji kontenerów LXC w Proxmoxie. Z czystej ciekawości zacząłem zastanawiać się dlaczego akurat ten system zasłużył sobie na to aby stać się jednym z wyborów w dojrzałych środowiskach wirtualizacyjnych. Po raz trzeci gdy przyjrzałem się uważniej gotowym kontenerom na Docker Hubie, gdzie bardzo duża ich część opierała się właśnie na Alpine jako systemie bazowym.

Jako zagorzały zwolennik Debiana, w myśl starego powiedzenia, że wszyscy zaczynają od różnych dystrybucji a kończą na Debianie, założyłem, że nic już nie może się zmienić w moich wyborach operatora systemowego. Byłem w dużym błędzie.

Od jakiegoś czasu Debian zaczął się zmieniać. Siła nawyków jest ogromna i ciężko było się przyzwyczaić do niektórych modyfikacji począwszy od trywialnej zmiany nazwy interfejsu sieciowego (gdzie się podziało stare dobre ETH0) a skończywszy na grubszych zmianach, które na przykład spowodowały przeniesienie i zmianę systemu logów (brrr…). Dlaczego zginęła początkowa prostota i przejrzysta logika w budowie systemu operacyjnego. Przecież Linuxem zainteresowałem się bo był dalece bardziej prosty w obłudze i logice działania niż Windows NT, którem zajmowałem się wówczas (sic!).

Tak czy inaczej jak tylko znalazłem chwilę czasu to postanowiłem wypróbować Apline, tym bardziej że Proxmox pozwala na wykreowanie kontenera tego typu w kilkanaście sekund. Wypróbowałem i oniemiałem. Zobaczyłem system jak za dawnych lat. Prosty, łatwy w obsłudze i niezwykle szybki.

Aby nie być gołosłownym przytaczam poniżej zestaw przykładowych podstawowych komend używanych tuż po instalacji świeżego systemu. Każdy może sam się domyślić do czego mogą służyć 🙂

apk update
apk update
apk add docker
rc-update add docker default
service docker start
reboot

Prawda, że wygląda bardzo znajomo? Wszystko co potrzebne można znaleźć wraz ze szczegółowym opisem na stronach Wiki projektu Alpine Linux Wiki. I dodatkowo powróciła nawet nazwa ETH0. Myślę, że ktoś kto miał do czynienia z tekstowym Debianem powinien być zadawolony.

Nie wiem jak długo zostanę przy projekcie Alpine Linux. Na razie trwa pierwsze młodzieńcze zauroczenia chociaż już pojawiły się pewne rysy. Ale o tym może innym razem.

MG

Tagi: ,

Instalacja sterowników GPU NVIDIA

4 października, 2023 | Brak Komentarzy | Kategoria: Linux, Porady
NVIDIA GPU

Jeśli na serwerze zainstalowany jest procesor graficzny GPU NVIDIA, dodanie jego sterowników jest pierwszą rzeczą, którą należy zrobić po zainstalowaniu systemu. W artykule chciałbym w skrócie pokazać co należy zrobić aby zainstalować wspomniane sterowniki w wersji otwartej, na bazie systemów z rodziny Debiana, czyli np. Ubuntu. Zakładam również, że podczas instalacji Ubuntu nie zaznaczyliśmy opcji użycia sterowników własnościowych.

Pierwszą czynnością jest sprawdzenie czy system widzi poprawnie kartę NVIDIA. W tym celu można skorzystać z polecenia lshw i poszukać w komunikacie wyjściowym frazy NVIDIA. Jeśli ją znajdziemy to raczej wszystko jest w porządku.

W drugim kroku powinniśmy sprawdzić czy uruchomione zostały otwarte sterowniki Nouveau. Należy ich się pozbyć i zamienić ze sterownikami NVIDIA. Używamy polecenia:

lsmod | grep nouveau

Powinniśmy otrzymać pełną informację o zainstalowanych sterownikach. Dla pewności możemy wydać jeszcze polecenie:

lsmod | grep nvidia

W tym przypadku rezultatem będzie brak informacji, ponieważ dopiero zainstalujemy sterowniki NVIDIA.

Przechodzimy do głównej części procesu. Aby zainstalować firmowe sterowniki NVIDIA z wiersza poleceń, otwieramy terminal i uruchomiamy następujące polecenie:

ubuntu-drivers devices

Otrzymamy listę dostępnych sterowników. W tym momencie warto się na chwilę zatrzymać. Nie zawsze najnowsze sterowniki będą stabilnie działać. Dla pewności można zainstalować na początek przedostatnią wersję, która zazwyczaj zawiera wszystkie konieczne poprawki dzięki czemu pozwala na bezbłędną pracę. Zatem użyjmy dajmy na to polecenia:

sudo apt install nvidia-driver-535

wybierając stabilną wersję. Po zakończeniu instalacji pozostaje uruchomić ponownie system:

sudo reboot

Jak sprawdzić czy sterowniki zostały zainstalowane poprawnie? Przede wszystkim możemy użyć polecenia lsmod z początku artykułu, a poza tym zawsze warto skorzystać z narzędzia linii poleceń:

nvidia-smi

MG

Tagi: , , , ,

Aktualizacja Debian LTS za pomocą Freexian

1 sierpnia, 2023 | Brak Komentarzy | Kategoria: Linux, Porady

Debian, Freexian, aktualizacja, LTS

Debian

Każdy, nawet najlepszy system operacyjny ma swój termin przydatności. Najczęściej po jego przekroczeniu trudno oczekiwać wsparcia w postaci aktualizacji oprogramowania systemowego. Prowadzi to z kolei do całkiem prawdopodobnego narażania się na niebezpieczeństwo w postaci niezałatanych dziur i w konsekwencji ataków na usługi, które pracowicie utrzymujemy. Takie niedbałości w postaci porzuconych systemów można spotkać wbrew pozorom całkiem często.

Jeśli mamy pod opieką pojedyncze maszyny, nieważne czy jako fizyczne serwery czy jako wirtualne instancje, to oczywiście aktualizacja systemu operacyjnego do nowszej wersji jest wyzwaniem ale prawdopodobnie niezbyt wymagającym. Jeśli jednak wspomnianych serwerów jest cała masa albo co gorsza zainstalowaliśmy unikalne ale ważne usługi, których konfiguracja jest naprawdę pracochłonna to aktualizacja może być procesem, który spowoduje, że będziemy musieli się nieco napracować.

Nic dziwnego, że o ile jest dostępna droga przedłużenia wsparcia dla systemu, nawet jako alternatywa dla oficjalnych repozytoriów, to czasami chętnie po nią sięgamy. Tak właśnie można wytłumaczyć popularność projektu Freexian, który ratuje przeterminowane serwery z Linux Debian.

O projekcie Freexian wspomninałem już w innym wpisie. Jeśli ktoś chce zapoznać się ze szczegółami to serdecznie zachęcam. Jednak ponieważ pojawiło się parę istotnych nowości to postanowiłem zaktualizować informację.

Wspomniane nowości dotyczą aktualizacji kluczy instalacyjnych, które jakiś czas temu zostały zmienienione. Na szczęście przepis na instalację nowych jest bardzo prosty i sprowadza się do wydania dwóch poleceń:

wget https://deb.freexian.com/extended-lts/pool/main/f/freexian-archive-keyring/freexian-archive-keyring_2022.06.08_all.deb && dpkg -i freexian-archive-keyring_2022.06.08_all.deb
wget https://deb.freexian.com/extended-lts/archive-key.gpg -O elts-archive-key.gpg && mv elts-archive-key.gpg /etc/apt/trusted.gpg.d/freexian-archive-extended-lts.gpg

Jeżeli wszystko przebiegnie pomyślnie to możemy dodać do pliku /etc/apt/sources.list odpowienie repozytorium w zależności od wersji naszego systemu operacyjnego:

deb http://deb.freexian.com/extended-lts jessie-lts main contrib non-free
deb http://deb.freexian.com/extended-lts stretch-lts main contrib non-free

Pamiętajmy jednak, że nie zwalnia nas to z obowiązku podniesienia wersji systemu… gdy już będziemy gotowi zmierzyć się z tym zadaniem.

MG

Tagi: , , ,

Kontener WordPress i strefa czasowa

31 maja, 2023 | Brak Komentarzy | Kategoria: Linux, Porady
Kontener WordPress

Wirtualizacja i kontneryzacja są zdecydowanie technikami zmieniającymi sposób w jaki budujemy swoje usługi. O ile kiedyś przygotowanie np. własnej (nawet) statycznej strony www wymagało przygotowania serwera, później zainstalowania i skonfigurowania oprogramowania (nie wspominając, że najpierw w pocie czoła składało się coś na kształt peceta hmm… serwerowego) o tyle obecnie cały proces znacznie się skrócił bo dostajemy gotowe moduły do uruchomienia czy to w środowiskach wirtualizacyjnych, czy to na platformie dla kontenerów.

Oczywiście nie ma rozwiązań doskonałych i nawet coś tak łatwego w utrzymaniu jak kontenery ma swoje ułomności. Jedną z nich, dosyć często występującą, jest brak obsługi strefy czasowej w przypadku bardzo popularnego systemu CMS jakim jest WordPress. Jest to zadziwiające, że w przypadku oficjalnego obrazu dostępnego w serwisie Docker Hub nie pomyślano o tym. Być może nie jest to wada, która będzie uciążliwa od pierwszych minut funkcjonowania naszej strony ale szybko ujawni się jeśli włączymy np. dwustopniową autoryzację podczas logowania do panelu administracyjnego. Poniżej opisuję krótko jak naprawić tą niedogodność.

W internecie można znaleźć dużo porad na ten temat jednak tak naprawdę tylko jedna z nich sprawdziła się w moim przypadku. Dotyczy ona konfiguracji w oparciu o plik YAML dla konfiguracji Docker Compose. Przy korzystaniu z Portainera, czyli narzędzia, które zdecydowanie mogę polecić nie tylko początkującym, jest to w zasadzie najprostsza droga dla budowania całkiem skomplikowanych konfiguracji.

Rozwiązanie w całości opiera się na dopisaniu kliku linijek tekstu we wspomnianym pliku konfiguracyjnym:

services:
  service_name:
    volumes:
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"

Jeśli zapewnimy prawidłową konfigurację systemu hosta kontenerów – mam na myśli strefę czasową – to praktycznie kontener WordPress skopiuje te ustawienia do swojego obrazu. Tylko tyle i aż tyle. Zatem do roboty!

MG

Tagi: , ,

OpenMediaVault migracja do najnowszej wersji

3 maja, 2023 | Brak Komentarzy | Kategoria: Linux, Porady
OpenMediaVault migracja do najnowszej wersji

Jako zagorzały fanatyk OpenMediaVault nie wiedziałem dotychczas, że można dosyć łatwo i sprawnie przeprowadzić migrację do jego najnowszej wersji. Z czystego lenistwa używam OMV jako interfejsu graficznego do zarządzania serwerami i tylko w razie potrzeby zaglądam do linii poleceń. OMV można zawsze zainstalować jako dodatek do istniejącego już systemu korzystając ze skryptu instalacyjnego:

https://github.com/OpenMediaVault-Plugin-Developers/installScript

Jednak zawsze po pewnym czasie, kiedy system się starzeje a repozytoria przechodzą do archiwum może dojść do sytuacji, w której linie aktualizacji GMV oraz OS rozejdą się na tyle, że któraś z bibliotek przestanie działać albo w najgorszym razie zaktualizowana konfiguracji nie pozwoli na uruchomienie kluczowej usługi np. Dockera z całą masą krytycznych kontenerów.

W takim przypadku pozostaje wymiana OS i instalacja od nowa GMV z przeniesieniem kluczowych serwisów lub … skorzystanie z bardzo wygodnego w użyciu skryptu pozwalającego po prostu zaktualizować GMV do wyższej wersji.

Skrypt aktualizacyjny jest dołączony do narzędzi OMV i wywołujemy go poleceniem:

omv-release-upgrade

Przy odrobinie szczęścia i po odczekaniu kilkunastu minut będziemy mogli się cieszyć nową wersją OMV.

Jednak trzeba wyraźnie napisać, że tego typu “duże” aktualizacje niosą za sobą ryzyko niezgodności bibliotek, konieczności wykonania rekonfiguracji oraz poprawek systemu etc. Ja odkryłem na razie jedną dotyczącą pakietu Nginx Proxy Manager w wersji kontenerowej (Docker). Okazało się, że Nginx nie startuje podczas automatycznegi uruchomienia kontenera. W tym przypadku wystarczy uruchomić go wewnątrz kontenera ponownie po zatrzymaniu procesu na kilka sekund. Można również napisać skrypt uruchomieniowy jeśli ktoś jest bardziej ambitny. Tak czy inaczej tam gdzie drwa rąbią itd.

MG

Tagi: , ,

Reset hasła administratora – Portainer

29 marca, 2023 | Brak Komentarzy | Kategoria: Linux, Porady
Portainer

Konteneryzacja przy użyciu Dockera jest obecnie jednym z absolutnie topowych tematów. Świat zmierza w kierunku upraszczania i przyspieszania wszelkich operacji więc nikogo nie zdziwi, że do zarządzania Dockerem najłatwiej i najszybciej jest użyć nakładki o nazwie Portainer. Niestety zawodna pamięć ludzka (oraz brak dobrych nawyków) często prowadzą nas na manowce. W konsekwencji może zdarzyć się, że hasło administracyjne do tego ostatniego po prostu nam umknie. Co wtedy zrobić?

Po pierwsze musimy zmierzyć się z konsolą serwera i zatrzymać kontener Portainer:

docker stop "id-kontenera-portainera"

W drugim kroku przystępujemy do właściwej operacji pobierając odpowiednie narzędzie z repozytorium:

docker pull portainer/helper-reset-password

Ostatecznie możemy zeresetować hasło dla konta admin:

docker run --rm -v portainer_data:/data portainer/helper-reset-password

W wyniku działania powyższej komendy powinniśmy otrzymać zestaw niezbędnych informacji:

... Password succesfully updated for user: admin
... Use the following password to login: ****

Zwróćmy uwagę na wyświetlane hasło, które trzeba zapamiętać. Najprawdopodobniej zmienimy je przy pierwszej okazji ale na razie będzie nam potrzebne.

Na koniec używamy poniższego polecenia, aby ponownie uruchomić kontener z Portainerem, a następnie zalogować się przy użyciu nowego hasła.

docker start "id-kontenera-portainera"

Jak wspomniałem podejrzewam, że pierwszą czynnością będzie zmiana hasła i cały cykl znowu może się powtórzyć. 😉

Tagi: , ,

Wirtualizacja KVM – przekierowanie ruchu

6 marca, 2023 | Brak Komentarzy | Kategoria: Bez kategorii, Linux, Porady
Przkierowanie ruchu

Wielokrotnie pisałem o mojej ulubionej wirtualizacji czyli środowisku VMware. Pomimo doświadczeń z innymi rodzajami hostów nadal uważam, że jest to naprawdę bardzo dobrze zrównoważone rozwiązanie. Drugą istotną cechą jest wsparcie techniczne, które pod postacią dokumentacji elektronicznej oraz komentarzy użytkowników jest uporządkowane i pieczołowicie utrzymywane przez samego producenta. Wszystko to sprawia, że nawet jeżeli spotka nas jakiś ezoteryczny problem to od razu wiadomo gdzie szukać rozwiązania.

Jednak jak zwykle życie wymusza często zmiany w rozwiązaniach i ostatnio zmierzyłem się z maszynami wirtualnymi KVM. Posiadając działający i w pełni skonfigurowany serwer zbudowany na bazie np. Debiana, nie ma raczej innego wyjścia chociaż można spróbować tzw. poor man virtualization czyli Virtualbox w trybie headless. Przyznam, że do tej pory mam pod opieką jeden taki wynalazek. Wracając do KVM to warto zaznaczyć, że nawet jeżeli nie lubisz konfiguracji z użyciem komend to możesz zaistalować chociażby pakiet Cockpit i uzyskać tym samym zarządzanie przez webinterface.

Niezależnie w jaki sposób będziemy korzystać z KVM warto zadbać o bezpieczeństwo konfigurując swoje węzły wirtualne w dedykowanej wirtulanej sieci za NATem. W ten sposób odetniemy możliwość bezpośredniego atakowania usług sieciowych. Z kolei na potrzeby chociażby testowania mamy wygodne rozwiązanie na kształt prywatnej sieci lokalnej z dostępem do Internetu.

Załóżmy następnie, że będziemy chcieli wystawić wybraną usługę, może to być np. serwer www na zewnątrz sieci LAN. Powinniśmy użyć mechanizmu forwardowania pakietów pod wskazany wewnętrzny adres IP, na wskazany port. Jest to powszechnie wykorzystywana metoda w wielu domowych (i nie tylko) routerach z firewallem. W tym miejscu dochodzimy do głównego wyzwania bo przecież interfejs sieciowy KVM oraz interfejs fizyczny nie są ze sobą wprost związane. Żeby przekazywać komunikację między jednym a drugim trzeba skorzystać z dodatkowej konfiguracji za pomocą iptables.

Biorąc za przykład przekazywanie ruchu do serwera www (via HTTPS) będą potrzebne dwie reguły:

iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 443 / 
-j DNAT --to-destination 10.0.0.1:443
iptables -I FORWARD -m state -d 10.0.0.1/24 /
--state NEW,RELATED,ESTABLISHED -j ACCEPT

Domyślny konfiguracja KVM NAT zapewnia regułę podobną do drugiej linijki, ale pomija stan NEW, który jest niezbędny do akceptacji połączeń przychodzących. W przykładzie 1.2.3.4 jest adresem publicznym (zewnętrznym) zaś 10.0.0.1 adresem prywatnym. Należy je zmienić według potrzeb i konfiguracji własnej sieci.

Dopiero wpisanie z linii poleceń powyższych dwóch komend pozwoli nam skomunikować się z maszyną wirtualną KVM. Jako zadanie domowe polecam sprawdzenie jak można dodoac reguły do konfiguracji tak aby nie trzeb było ich za każdym razem ręcznie podawać po starcie systemu.

MG

Tagi: , , ,