Ubuntu – płatne bezpieczeństwo

Ubuntu LTS kojarzy się nam z dystrybucją stabilną i bezpieczną, prawda? Otóż niezupełnie tak jest. Bowiem nie wszystkie pakiety w Ubuntu LTS (np. 20.04 LTS czy 22.04 LTS) otrzymują aktualizacje bezpieczeństwa. Przynajmniej nie za darmo. Od strony technicznej, które pakiety otrzymują aktualizacje (main), a które niekoniecznie (universe) przeczytacie w artykule na nfsec.pl, podobnie jak o genezie szumu wokół Ubuntu i repozytorium ESM (Expanded Security Maintenance).

Zarys sytuacji

Zamiast na stronie technicznej, skupię się na stronie etycznej i prawnej. Sytuacja wygląda bowiem na dość skomplikowaną. Tytułem wprowadzenia niezbędny skrót. Ubuntu w ramach Ubuntu Pro daje między innymi dostęp do repozytorium ESM, które zawiera łatki bezpieczeństwa do tych pakietów z repozytorium universe, do których zostały one przygotowane przez opłaconych przez Ubuntu maintainterów, zamiast przez maintainerów ze społeczności. Osoby fizyczne (personal) mogą bezpłatnie korzystać z Ubuntu Pro na maksymalnie 5 systemach. Natomiast firmy (enterprise) powinny zapłacić za dostęp, albo… nie korzystać z załatanych pakietów. Jest jeszcze trzecia kategoria – edukacja (education, research, and academia). Też powinni kupić, ale dostaną zniżkę w niejawnej wysokości.

Abonament na bezpieczeństwo

Mam mocno mieszane uczucia w stosunku do tego podejścia. Z jednej strony nie ulega wątpliwości, że maintainerzy, którzy wykonali na zlecenie pracę, której nikt nie chciał podjąć się za darmo, powinni otrzymać wynagrodzenie. Z drugiej strony, jest to podcinanie gałęzi, na której się siedzi i z której Ubuntu wyrasta. Bowiem maintainterzy społeczności mogą dojść do wniosku, że nie ma sensu robić za darmo tego, za co inni otrzymują wynagrodzenie. To z czasem może przełożyć się na gorsze wsparcie wolnego oprogramowania, w szczególności dystrybucji opartych o pakiety deb.

Kolejny aspekt to pewnego rodzaju szantaż w stosunku do użytkowników. Niby system i oprogramowanie są za darmo, ale jak chcesz mieć bezpiecznie, to zapłać… Płatne bezpieczeństwo to skomplikowane zagadnienie. Co powiecie na abonament na ABS, poduszki powietrzne czy pasy bezpieczeństwa w aucie? Albo jeszcze lepiej: hamulce w wersji zwykłej i pro, te drugie zapewniające krótszą drogę hamowania? I wszystko to rzecz jasna w formie abonamentu, czyli wszędzie jest zamontowane, ale trzeba zapłacić, by było aktywne.

Opłata za udostępnianie

No i ostatnia sprawa – czy Ubuntu może w ogóle brać pieniądze za udostępnianie oprogramowania na wolnych licencjach? Ograniczę się do licencji GPL. Zarówno wersja druga, jak i trzecia GPL wprost mówi, że akt udostępnienia oprogramowania może być zarówno darmowy, jak i płatny. Czyli Ubuntu może żądać wynagrodzenia za udostępnienie oprogramowania.

Jednak jednocześnie GPL zabrania zmiany licencji[1], a licencjonobiorca nabywa wszystkie prawa. W szczególności prawo do dalszej dystrybucji. Czyli czy dowolna osoba może skorzystać z Ubuntu Pro w wersji personal, pobrać z repozytorium ESM pakiety lub kod źródłowy i udostępnić je na swoim serwerze każdemu chętnemu? IANAL, ale wygląda na to, że tak. Przynajmniej te pakiety/patche wydane na licencji GPL.

O sprawie zaczęło się robić głośno dopiero teraz i sam jestem ciekaw, czy jakoś bardziej się to rozwinie i jak się ostatecznie skończy. Trzeba pamiętać, że Ubuntu Pro to znacznie więcej, niż tylko dostęp do załatanych pakietów z repozytorium universe w ramach ESM. To także możliwość aktualizacji kernela bez konieczności restartu systemu, support 24/7. Być może lepszą strategią dla Canonical byłoby udostępnienie patchy społeczności za darmo? Tym bardziej, że z prawnego punktu widzenia raczej są na przegranej pozycji, przynajmniej w kontekście licencji GPL.

[1] Pomijam tu przypadki oprogramowania wydawanego równolegle na kilku licencjach. Wówczas można wybrać, którą licencję się wybrało i modyfikować tylko kod na tej wybranej, dystrybuując go zgodnie z jej – i tylko jej – postanowieniami.

Debian Bookworm

Debian 12 o nazwie Bookworm został wydany niemal dwa miesiące temu. Zapomniałem o wpisie z tej okazji, choć większość systemów (kilka desktopów, kilka serwerów) już zaktualizowałem. Może dlatego, że aktualizacja bezproblemowa, żeby nie powiedzieć nudna. Zatem zgodnie z tradycją, wrażenia z aktualizacji.

Przy aktualizacji do Bookworm warto pamiętać o dwóch istotnych zmianach:

  1. Niewolne firmware zostały przeniesione z non-free do non-free-firmware. Jeśli korzystamy, to warto dodać stosowny wpis w sources.list. I przy okazji można pomyśleć, czy potrzebujemy non-free. Jeśli nie, można usunąć.
  2. W związku ze zmianami w pakietach, pojawił się osobny pakiet systemd-resolved. Teoretycznie nie powinien być potrzebny, bo w domyślnej konfiguracji rozwiązywanie nazw nie korzystało z rozwiązania systemd. W praktyce na paru – ale nie wszystkich – VMkach resolvowanie DNS przestało mi działać, a doinstalowanie systemd-resolved rozwiązało problem. Polecam zatem pobranie go przed rozpoczęciem aktualizacji[1]:

wget http://ftp.de.debian.org/debian/pool/main/s/systemd/systemd-resolved_252.12-1~deb12u1_amd64.deb

Gdyby rozwiązywanie nazw nie działało po aktualizacji, będzie pod ręką i wystarczy wtedy

dpkg -i systemd-resolved_252.12-1~deb12u1_amd64.deb

W przeciwnym razie będziemy zmuszeni do drobnej kombinacji z dostarczeniem pakietu przy nie do końca działającej sieci. Co nie jest trudne, ale nieco bardziej niewygodne.

[1] Wersja dla amd64, pozostałe architektury dostępne na https://packages.debian.org/bookworm/systemd-resolved

MacOS, iTerm i problemy z pl-znakami

Niezbyt często używam pl-znaków w konsoli łącząc się po SSH, ale jest parę miejsc, gdzie ich potrzebuję. Po dłuższym czasie zauważyłem, że na nowym komputerze mam problem z pl-znakami. Występował tylko przy połączeniu się z tego macOS przy pomocy SSH do Linuksa. Nic krytycznego, bo w zasadzie nie potrzebuję się tam łączyć z macOS, z innych Linuksów działało, ale byłoby miło, gdyby działało wszędzie. W końcu znalazłem chwilę i postanowiłem się zająć sprawą.

Krótko o środowisku: na workstacji macOS Ventura 13.4 z zsh 5.9 oraz iTerm2 3.4.19. Dla pamięci opis sprawdzania ustawień krok po kroku.

ustawienia iTerm

Upewniamy się, że iTerm korzysta z kodowania UTF-8. W tym celu należy wybrać
settings -> profiles -> terminal
Upewniamy się, że character encoding jest ustawione na UTF-8.

zmienne środowiskowe

Sprawdzamy ustawienia zmiennych środowiskowych na macOS. W tym celu należy wpisać
echo $LANG
i sprawdzić wartość zmiennej LANG. Powinna być jakaś z UTF-8, na przykład pl_PL.UTF-8.

Jeśli jest inaczej, można dopisać odpowiednią wartość w pliku .zshrc[1]
export LANG=pl_PL.UTF-8

Jeśli wykonujemy zmianę, należy uruchomić nowy terminal, aby została zastosowana.

kodowanie w powłoce

Sprawdzamy na macOS, jakie kodowanie mamy ustawione w terminalu. Wpisujemy locale i weryfikujemy zawartość zmiennych LC_CTYPE oraz LANG. Powinny zawierać kodowanie UTF-8. Jeśli tak nie jest, można ustawić odpowiednie zmienne w sposób opisany w poprzedniem akapicie.

ustawienia systemu zdalnego

Należy sprawdzić, czy na serwerze zdalnym locale ustawione są na wersję z UTF-8. W tym celu wpisujemy locale. Jeśli tak nie jest, to w Debianie i Ubuntu polecenie dpkg-reconfigure locales umożliwi zarówno wygenerowanie odpowiednich locali, jak i ustawienie domyślnych.

Przy powyższych ustawieniach pl-znaki powinny wyświetlać się poprawnie.

Dla zupełnej transparentności: tym razem nie ma odnośników do stron, których używałem przy rozwiązywaniu problemu. Posiłkowałem się bowiem chatGPT z niewyszukanym promptem macos problem utf-8 iterm how to solve. Całkiem sprawnie sobie poradził.

[1] Jeżeli z jakiegoś powodu korzytamy z bash, nie zsh, to właściwym plikiem będzie .bash_profile