vermin.eu.org

Specjalista IT na tru^Hopie

Entries Comments



bezpieczny apt, czyli o błędzie podczas aktualizacji repozytoriów

13 January, 2006 (17:34) | debian(ized) | By: vermin

Na podręcznym komputerze stoi debian we odmianie testing. Debian w wersji testing jest stabilny na tyle, że rozsądnie updatowany w zasadzie się nie wykłada, a ma nowe wersje oprogramowania. Żeby zwiększyć sobie poziom adrenaliny dość często aktualizuję komponenty bez wczytywania się co te zmiany właściwie wnoszą, (ok, wiem, że to tylko lekkie podniesienie ciśnienia - większe byłoby na unstable/experimental, ale ja naprawdę muszę pracować na tej maszynie :) ).
Ostatnio niestety, po aktualizacji ponowne wczytanie repozytoriów zakończyło się błędem

W: GPG error: http://ftp.pl.debian.org testing Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 010908312D230C5F

Przeniosłem się natychmiast na serwer, gdzie zaktualizowałem repozytoria bez problemu. Najpierw pomyślałem, że to wobec tego problem z transferem, jednak w momencie, gdy synaptic na podręcznym komputerze zapytał się mnie, czy jestem pewien, że chcę instalować niezweryfikowane oprogramowanie (WARNING: The following packages cannot be authenticated!), w głowie zaświeciła się lampa ‘you have been hacked!’. Oczywiście natchmiast przerwałem instalację aktualizacji i rozpocząłem poszukiwanie informacji o tym co się właściwie dzieje. (OK - wiem, że mogłem wpisać apt –allow-unauthenticated, ale to nie jest rozwiązanie, prawda?)
Problem jak się okazało leżał po stronie oprogramowania do zarządzania pakietami - apt. Otóż podczas pobierania danych o pakietach, apt/aptitude/synaptic pobierają plik Release, który zawiera sumy MD5 (a w przyszłości SHA1) pozostałych pobieranych plików, oraz plik Packages.gz, zawierający m.in. sumy kontrolne poszczególnych pakietów. System ten ma w swoich założeniach chronić instalacje pakietów przed zainstaowanie oprogramowania o niesprawdzonej sygnaturze. Oczywiście słabym punktem jest plik Release, zawierający sygnatury wyjściowe. W celu polepszenia bezpieczeństwa, dodany został plik Release.gpg, zawierający tzw. ascii-armored deteached gpg signature, czyli sygnaturę kryptograficzną gpg zapisaną znakami ascii. Pliku tego wymaga apt w wersji 0.6x w górę, co także oznacza, dlaczego wersja stable posiadająca starszego apt’a nie wykazywała tego błędu.

Cała sprawa polegała na tym, iż w momencie, gdy mu się nie zgodzi podpis elektroniczny, to zaczynają się wzmiankowane powyżej problemy. Podpisy dla ftp-master’a mają ważność jednego roku, co oznacza, że na początku roku wygasają. Co oznacza, że generowane są nowe podpisy i starym kluczem już nie sprawdzimy wiadomości (o szyfrowaniu kluczem asymetrycznym nie chce mi się tu rozwodzić).

Trzeba zdobyć teraz ten klucz (klucze można wylistować z pomocą polecenia apt-key list). W zasadzie rzecz jest banalna - mając zainstalowany pakiet gpg-rsca (czyli pakiet wirtualny instalujący gpg-pg) uruchamiamy w kontekście użytkownika aktualizującego system (podpowiem, chodzi zazwyczaj o root’a) gpg z następującymi przełącznikami:

gpg –keyserver pgpkeys.mit.edu –recv-key 2D230C5F

Warto zauważyć, że ważne jest ostatnie 8 znaków klucza. Uzyskany w ten sposób klucz exportujemy w zrozumiałej formie z keyringa do apt-key

gpg –armor –export 2D230C5F | apt-key add

(możemy też bezpośrednio nakarmić nim apt’a). Jest jednak pewien problem - gpg, żeby pozyskać klucze łączy się z serwerami na porcie rzędu 11137, co oznacza, że niektórzy mogą mieć z tym problem (złapanie tego klucza z serwera WWW też wymaga połączenia na tym porcie). Rozwiązaniem jest ściągnięcie pliku http://ftp-master.debian.org/ziyi_key_2006.asc, gdzie 2006 to rok na który obowiązuje klucz a ziyi to jakaś chińska tancerka (?) i nakarmienie nim apt-key.
Voila! I po problemie.

Edit: w zasadzie, to pojawiła się nowa paczka, której instlacja sama rozwiąże problem - apt-get install debian-archive-keyring. Jak widać rozwiązanie z secure aptem musi się dotrzeć porządnie zanim będzie mogło przejść do testing, szczególnie, że to przełom roku pokaże sprawność działania infrastruktury…

Edit2: Pozdrawiam czytelników Linux news, którzy zawitali na te strony dzięki pewnej notce - zapraszam do komentarzy!

Powyższy tekst powstał na podstawie doświadczeń własnych oraz tekstu SecureApt, który choć ukazał się późno w stosunku do występującego problemu (niestety), to pozwolił mi usystematyzować wiedzę i który gorąco polecam wszystkim chcącym mocniej zgłębić temat.

Comments

Pingback from vermin.eu.org » Blog Archive » debian etch w grudniu?
Time: 03/05/06, 19:53

[...] Andreas Barth podał potencjalny termin pojawienia się nowej wersji projektu Debian - Etch. Jeśli wszystko pójdzie zgodnie z zapowiadziami, nowa wersja pojawi się już po 18 miesiącach od wydania poprzedniej wersji 3.1 (obecnie w release 2). Termin w sumie akurat - nie za szybko, żeby wciąż aktualizować systemy, ale i nie za długo, (poprzednio na update z 3.0 na 3.1 czekaliśmy tylko trzy lata, co powodowało konieczność wspierania się backportsami), także technologia się mocno nie zdąży zestarzeć. Co da nam nowa stabilna wersja? Przejście na XFree na xorg, gcc z 3.1 na 4.0, wsparcie dla architektury amd64 no i przejście na obecny od poczatku roku secure-apt. Cóż - pozostaje nam czekać na nowe, stabilne wydanie, tymczasem testując je na nieprodukcyjnych maszynach [...]

Pingback from vermin.eu.org » Blog Archive » Debian 4.0 w grudniu
Time: 25/07/06, 10:46

[...] Co pojawi się w nowej wersji Debiana? Jest kilka blokad - oraz celów. Co ciekawe - cele nie muszą być spełnione żeby pojawiła się nowa wersja - blokady muszą (chyba czepiam się aktualnie nazewnictwa…). Wśród blokad pojawia się przede wszystkim przejście na xorg (w końcu), przejście na gcc 4.x, wsparcie dla architektury amd64, selekcjonowanie dokumentów zgodnie z polityką Debiana, wyrzucenie z jądra firmware’u oraz secure apt (ciekawe czy z zaimplementowanymi plikami delta, pozwalającymi na zmniejszenie ilości danych, które są pobierane z serwerów debiana podczas apt-get update). Do celów nowej wersji zaliczają się m.in. uwzględnienie standardu Linux Standard Base w wersji 3.1, wsparcie dla SELinuxa, ipv6 oraz NFS v4 - w sumie z tego wszystkiego interesuje mnie ipv6 oraz SELinux, którego trzeba powoli poznawać (dobrze to można zrobić na przykładzie np. Fedory, która ma go zintegrowanego z distro od dawna). [...]

Write a comment