Jak zainstalować Debiana przy pomocy debootstrap – HOWTO.

Co prawda instalacja systemu przy pomocy debootstrap jest trywialna, opisów są setki, a i man debootstrap niby jest wystarczający, ale zawsze kończy się tak, że o czymś zapominam jak z głowy robię i muszę bootować powtórnie, więc postanowiłem spisać. Tym bardziej, że ostatnio jest to najpopularniejsza dla mnie metoda instalacji – instalator Debiana został wykastrowany z niewolnych firmware’ów, przez co instalacja Debiana na laptopach czy ultrabookach, gdy nie ma przewodowej karty sieciowej jest… powiedzmy delikatnie niefajna. No i parę instalacji znowu w ostatnim czasie było.

Instalację przy pomocy debootstrap można zrobić z dowolnego systemu, nie musi być to Debian. Zwykle korzystam z Debiana live lub – ostatnio – Ubuntu w wersji live (jakoś lepiej sprzęt wykrywa, a nie mam czasu sklikać debianowego live z testing/unstable…), ale z bardziej pamiętnych zdarzało się i Gentoo. Cokolwiek co ma pakiet debootstrap się nada. Kolejne kroki wyglądają tak:

  • utworzenie i sformatowanie partycji, na którą ma być zrobiona instalacja
  • utworzenie punktu montowania, zamontowanie partycji – mkdir /chrooted; mount /dev/sda3 /chrooted
  • debootstrap właściwy – debootstrap squeeze /chrooted http://ftp2.de.debian.org/debian/
  • podmontowanie proc- mount proc /chrooted/proc -t proc
  • podmontowanie dev i sys – mount –bind /dev/ /chrooted/dev; mount –bind /sys/ /chrooted/sys
  • wejście do chroota – chroot /chrooted /bin/bash
  • edycja sources.list i aktualizacja listy pakietów
  • instalacja kernela, firmware’ów (także niewolne, jeśli wymagane), gruba
  • aktualizacja wpisów dla grub – update-grub2
  • instalacja dodatkowych programów – apt-get install wajig less mc wicd wpasupplicant wicd-curses
  • edycja /etc/fstab, /etc/network/interfaces, /etc/hosts (w sumie bez tego też działa)
  • zmiana hasła root, ew. dodanie użytkowników
  • wyjście z chroota – exit
  • reboot kontrolny – system powinien działać

Jest szansa,  że o czymś zapomniałem, więc pewnie będę uzupełniał.

UPDATE: Gdyby okazało się, że maszyna, która jest dostępna tylko po sieci (nie mamy monitora) po takiej instalacji nie pinguje się, a sieć została skonfigurowana, to warto sprawdzić okolice /etc/udev/rules.d/70-persistent-net.rules czy MAC nie został przypisany do kolejnego interfejsu.

Wicd nie startuje w Debianie – problem z Pythonem.

Ostatnio wicd mi się w Debianie znarowiło – nie wstawał klient GTK. Wersja curses działała OK, więc nie wykazałem się należną czujnością i  zignorowałem problem. Zorientowałem się dość późno, bo korzystam z hibernacji głównie, a efektem był brak sieci WiFi po restarcie (no dobrze, skrót myślowy, nie tyle brak sieci, bo wpa_supplicant z ręki daje radę, co niestartowanie wicd). W każdym razie uruchomienie wicd dawało:

 Traceback (most recent call last):
File "/usr/share/wicd/daemon/wicd-daemon.py", line 47, in
import dbus
File "/usr/lib/python2.7/dist-packages/dbus/__init__.py", line 100, in
from dbus._dbus import Bus, SystemBus, SessionBus, StarterBus
File "/usr/lib/python2.7/dist-packages/dbus/_dbus.py", line 46, in
from dbus.bus import BusConnection
File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 46, in
from dbus.connection import Connection
File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 42, in
from dbus.proxies import ProxyObject
File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 35, in
from dbus._expat_introspect_parser import process_introspection_data
File "/usr/lib/python2.7/dist-packages/dbus/_expat_introspect_parser.py", line 26, in
from xml.parsers.expat import ExpatError, ParserCreate
File "/usr/lib/python2.7/xml/parsers/expat.py", line 4, in
from pyexpat import *
ImportError: /usr/lib/python2.7/lib-dynload/pyexpat.so: undefined symbol: XML_SetHashSalt

W ramach zmyłki – w pakiecie wicd błąd nie jest zgłoszony (i słusznie), za to zgłoszony jest błąd 665346 w Pythonie. I faktycznie, upgrade libexpat1 do 2.1~beta3 (wersja z unstable) pomaga. HTH

Polska planeta Debiana – reaktywacja?

Jakiś czas temu, pod adresem planetadebiana.pl działała polska planeta Debiana. Nigdy nie wyszła poza parę blogów, ale była. Parę miesięcy temu adres przestał odpowiadać, niedawno domena była na sprzedaż, teraz wisi tam jakiś blog.

Dziś zauważyłem w statystykach wejście z debian.zuchmanski.com i okazuje się, że jest tam planeta, co więcej, wygląda, że działa – pojawiają się nowe wpisy. Szybkie porządki w linkach zatem i dorzucam do RSS. Ciekawe, czy działała cały czas pod tym adresem i czy poszło info o zmianie domeny (TBH nie subskrybowałem, bo i tak prawie wszystkie wpisy istotniejsze wpisy okołolinuksowe lądują na linuxportal.pl)… A może (oby) reaktywacja?

Historia pewnego spamu.

Dzisiejszy dzień w pracy zaczął się jak zwykle od rzutu oka na maile. Jeden z jak się okazało ciekawszych został w pierwszej chwili zignorowany. Ot, spam jakich wiele. Tyle, że warszawska restauracja i załącznik w PDF. Ale po chwili zaczęły na niego odpowiadać kolejne osoby, więc pojawił się mały WTF w głowie. Pojawiły się też informacje, że lista adresatów jest zbieżna z uczestnikami PLNOG.

Faktycznie, o pomyłce nie mogło być mowy. Rzut oka w źródło ujawnił 470 (sic!) maili w polu To, lista na oko zbieżna z uczestnikami PLNOG. Pojawiła się informacja, że maile może zebrane z wizytówek, ale szybko upadła, bo okazało się, że część ludzi nie dzieliła się wizytówkami, część w ogóle nie dotarła na konferencję… Tak, autor spamu wysłał go do 470 osób, z których pewnie większość zajmuje się zawodowo zwalczaniem spamu i nieźle zna prawo, na dodatek to podając pełną bazę adresów email. Mniej więcej odpowiednik śpiewania Legia, Legia, kur… (polecam obejrzeć, jeśli ktoś nie zna tej wersji ;-)) w obecności grupy kibiców Legii.

Być może sprawa rozeszłaby się po kościach, bo podejście było od suchego „nie wyrażałem zgody na przetwarzanie danych, proszę o usunięcie z listy” po humorystyczne komentarze ale autor spamu postanowił się pogrążyć i zamieścił szybkie „przeprosiny”, którymi dolał oliwy do ognia. Otóż obwieścił on, że przeprasza, a pracownik, który pobrał bazę z forum został już zwolniony. Przypominam, że napisała to osoba wysyłająca maila, a przynajmniej podpisana pod nim. Po około 90 minutach od początkowego spamu. Oczywiście wszyscy „uwierzyli” w tak szybkie działanie i „wyciągnięcie wniosków” (szczególnie, że znów poszło do wszystkich z jawnym To ;-)), parę osób zainteresowało się, cóż to za forum, gdzie takie wesołe bazy są zamieszczane… Ups numer jeden.

W międzyczasie zareagował – w przeciwieństwie do spamera przytomnie i sensownie – organizator konferencji, który po chwili zamieścił uczciwą (i jak widzę aktualizowaną) informację na stronie. Wyszło na jaw (nie wnikam jak, w każdym razie szybko, ale jak się organizuje konferencje dla bezpieczników i sieciowców, to się ma kontakty), że baza została prawdopodobnie wykradziona. Ups numer dwa.

Finał jest taki, że aktualne obwieszczenie w sprawie wycieku bazy maili głosi:

Z pewnością zostaną wyciągnęte konsekwencje wobec sprawcy, a sprawa została skierowana do prokuratury.

Z niecierpliwością czekam na finał, pewnie nie tylko ja… Z tego co rozmawiałem ze znajomymi, i co widać było w wątku, większość osób miała po prostu niezły ubaw, ale spamer chyba wolałby gołym zadem na gnieździe szerszeni usiąść, niż wysłać tego maila. Oraz, odnośnie reagowania na wtopę i zarządzania sytuacją kryzysową: w przeprosinach nie warto kłamać.

Taki wpis związany ze spamem, który ostatnio zaprząta moją głowę i zamiast podsumowania PLNOG, o którym z braku czasu nie napiszę tym razem nic więcej, poza tym, że było fajnie, ciekawie i jak zwykle cieszę się, że byłem.

Automatyczne wykrywanie spamu na Blox.

Trochę z rozpędu po ostatnim spojrzeniu na beznadziejną captchę na Blox, trochę zażenowany brakiem działania administratorów Blox w tak wydawałoby się prostej sprawie, trochę chcąc odkurzyć stare skrypty i znajomość Perla, trochę ze względu na zainteresowaniem tematem spamu, a w końcu trochę dla zabawy, postanowiłem zrobić przymiarkę do automatycznego wykrywania spamu na Blox. Chodzi o określanie, czy dany blog służy wyłącznie spamowaniu, oczywiście automatycznie, a co za tym idzie nie ze stuprocentową pewnością.

Administratorzy zapowiedzieli, że captcha zostanie poprawiona w kwietniu (trzymam za słowo i liczę na to, zapewne nie tylko ja), więc spamblogów nie powinno od tej pory przybywać. Zatem postanowiłem skupić się nie na liście nowozałożonych blogów, tylko na liście nowych wpisów, czyli aktywnych spamblogach. Co prawda pierwotny plan zakładał przeiterowanie się po wszystkich blogach i określenie prawdopodobieństwa, czy jest to spamblog, ale nie znalazłem niestety listy wszystkich blogów na Blox. Owszem, można próbować robić rzeźbę pod tytułem „przeiterujmy się po tagach”, ale nadal nie daje to gwarancji uzyskania listy wszystkich blogów – wystarczy, że ktoś nie taguje i system nie dotrze do jego bloga, więc stanęło na tym, że obserwuję listę nowych wpisów i stamtąd biorę dane. Przy okazji oceniam nie tyle cały blog, co poszczególne wpisy, co może być przydatne.

Podejście pierwsze – pobierz i oceń. Na samym początku stwierdziłem, że będę pobierał wpis do oceny i oceniał na podstawie arbitralnych kryteriów. Pomysł szybko upadł – zmiany w algorytmie oceniania powodowały niekompatybilność z poprzednimi danymi, a zmiany były konieczne – wychodziły coraz to nowe kryteria i ich wagi. Wersjonowanie algorytmu przy ocenie nie pomagało, bo dane były tracone. OK, nie jest to wszystko aż tak proste, jak się wydawało na początku.

Podejście drugie – pobierz i zapisz jak najwięcej cech wyróżniających dla danego wpisu/bloga, a potem pomyśli się nad algorytmem. No niestety, zapisywanie dużej ilości danych może być ciekawe, szczególnie, że potem można sięgnąć do wiedzy ze studiów i określić poziomy istotności poszczególnych parametrów (albo popytać kumpla o gotowca, może jeszcze ma…). Wytrenuje się AI na próbce kontrolnej, a potem AI sama zrobi resztę. Brzmi fajnie, ale trochę overkill, poza tym, mało odporne na dołożenie kolejnych parametrów, gdyby przyszło mi do głowy ich wyciąganie.

Podejście trzecie, aktualne,kompromisowe – pobierz i zapisz istotne (wybrane arbitralnie przeze mnie) cechy wyróżniające dany wpis. Osobny skrypt ma algorytm procentowy, każda cecha może przyjmować wartości 0-100% prawdopodobieństwa bycia spamem. Następnie w zależności od ilości cech wylicz prawdopodobieństwo dla całego wpisu przy pomocy średniej ważonej. Rezultaty są dość interesujące.

Tutaj lista blogów (praktycznie nikt nie korzystał, więc wywaliłem), które sklasyfikowałem jako spamerskie z prawdopodobieństwem 80% i więcej. Format prawdopodobieństwo bycia spamem (%), spacja, link do bloga. Nie widzę (szybko patrząc) żadnego false positive, a wy? Aktualnie jest takich blogów 375 na 2404 wszystkich sprawdzonych blogów. Jasne, nie jest to cud techniki, ale przy dodaniu pewnych prostych whitelist myślę, że można spokojnie blokować automatem wszystkie blogi z prawdopodobieństwem od 70% w górę.

Szczegółów badanych cech oraz algorytmu nie chcę na razie opisywać, bo po co spamerzy mają się bronić? Jak będzie utrudnione zakładanie nowych blogów, to pomyślę o tym. Na razie cały czas zbierają się dane… Gdyby byli chętni do przeglądania wyniku w celu wychwytywania false positive’ów (wpisujcie miasta, które przeglądają ;-)), to mogę pomyśleć o wystawianiu listy spamów automatem co jakiś czas.

Całość napisana oczywiście w Perlu, główny moduł zbierający z użyciem WWW::Mechanize (genialna sprawa do crawlerów).

UPDATE: Drobny update statystyk z dnia 27.04.2012 – 13481 unikatowe blogi (wcześniej chyba były unikatowe wpisy, ale mniejsza), w tym 1094 do natychmiastowego wycięcia (80% i więcej). Dla porządku 70% i więcej to 2438 sztuki. Listy nie zamieszczam, bo zainteresowanie było znikome. A captcha nadal nie została poprawiona, choć koniec kwietnia…

Nowe słowa.

Jak nazywamy część, która się żarzy w żarówce? Żarnik. A jak nazywamy tę część, która świeci w lampie? No i tu pojawia się problem… Możemy powiedzieć żarówka, ale to nazywa tylko określony rodzaj, podobnie jak świetlówka, dioda, płomień itd., a chcemy być precyzyjni (nazwać tylko elementy świecące w lampie) i ogólni jednocześnie (nazwać wszystkie rodzaje tych elementów). Zawsze można powiedzieć element świecący, ale to długie i niezbyt ładne.

Bardzo ładnym IMO rozwiązaniem tego problemu jest określenie świetlnik. Analogiczne do żarnik (coś, co się żarzy), wirnik (coś, co wiruje), nieużywane. Czego to dzieci nie wymyślą… 🙂

Jesteśmy milsi, niż myślimy.

Wczoraj widziałem na Slashdocie ciekawy materiał, tu oryginał. W skrócie: wygląda, że homo sapiens ma wbudowane opory przed wykonywaniem aktów przemocy (uderzenia młotkiem, strzał z pistoletu, cięcie nożem itp.) w stosunku do innych przedstawicieli swojego gatunku (niestety o rasach nic nie ma, ciekawe, czy zgodność rasy zmieniałaby w jakimkolwiek stopniu wyniki…).

90% respondentów, różnego wieku, ras, kultur, uważa fakt osobistego wyrzucenia na tory jednej osoby, żeby ocalić pięć za niedopuszczalny. Co ciekawe, jeśli nie musieliby go dotykać (wyrzucać) osobiście, proporcja się zmienia i nagle 95% pozwala uważa takie zachowanie za dopuszczalne.

Zastanawiam się, jak się to ma do różnych gatunków zwierząt. Czy rezultat byłby podobny, gdyby zamiast człowieka w eksperymentach brało udział zwierzę? I czy dla powiedzmy szympansa, psa, szczura i kury rezultat byłby taki sam? Co istotne, ważny jest aspekt bezpośredniości działań, może dlatego zwierzęta traktowane są jak tylko zwierzęta? Nie, nie widziałem jeszcze całego filmu, pozwolę sobie jednak na małą propagandę, bo znajomy stronę robił i jakoś tak się te dwa newsy zbiegły w czasie.

Jak zdobyć certyfikat IPv6 i fajną koszulkę za darmo.

No i udało się. Szczerze mówiąc myślałem, że będzie trudniej i nie przypuszczałem, że cel jest tak blisko. Blokada IRC przez HE o której pisałem niedawno okazała się świetnym motywatorem do skończenia testu, czyli osiągnięcia poziomu Sage, który pozwala na odblokowanie dostępu do IRC. No i okazuje się, że prawdą jest to, co chciałem sprawdzić, czyli że certyfkiat IPv6 od HE da się zrobić, nie wydając ani złotówki i korzystając wyłącznie z zasobów (domeny, serwery DNS), dostępnych zupełnie za darmo w Internecie.

Nie zamierzam robić tutoriala krok po kroku – sam proces certyfikacji jest prosty i w sumie daje sporo frajdy (pod warunkiem, że nie trzeba powtarzać kroków kilka razy jak w moim przypadku…), poza tym samo HE daje tutoriale video, ale parę wskazówek się przyda, żeby się nie frustrować niepotrzebnie.

Adresację (tunel) IPv6 za darmo dostaniemy na przykład od samego HE. Z kolei domeny (dobra, subdomeny) za darmo daje na przykład afraid.org w ramach usługi FreeDNS. Niestety, ich NSy nie posiadają adresów IPv6 (żaden!). Można to jednak obejść delegując subdomenę na takie NSy, które posiadają obsługę IPv6. Na przykład te od HE.

Żeby nie było za prosto – wygląda, że jest jakiś problem z cache’owaniem(?) wpisów DNS po stronie HE – w pewnym momencie panel żadną miarą nie chciał przyjąć obsługi domeny, mimo, że powinien (support też tak twierdził). Rozwiązaniem jest dodanie delegacji na wszystkie ns1 do ns5 na he.net. Potem, przy którymś teście co prawda trzeba usunąć ns1, bo test wymaga (IMHO błędnie, powinien sprawdzać czy minimum 1 ma), żeby wszystkie NSy miały adresy IPv6, ale to insza inszość.

I tyle. Warto dodać, że ukończenie certyfikatu IPv6 od HE daje nie tylko możliwość odblokowania dostępu do IRC. Dodatkowo (a może przede wszystkim?) każdy, kto uzyska poziom Sage może otrzymać fajną, geekową, unikatową koszulkę za darmo (wysyłka też) – wystarczy podać rozmiar w panelu HE i potwierdzić adres do wysyłki. Taki – podobno bardzo udany – pomysł HE na popularyzację IPv6.

Zachęcam do zabawy. Mi pozostało wymaksowanie punktów. Osobną kategorią zabawy jest znalezienie błędów (implementacyjnych, nie rzeczowych) w samym teście (można udawać, że się zrobiło pewne rzeczy, nie robiąc ich, ale nie o to oczywiście chodzi). 😉

UPDATE: Szczerze mówiąc, myślałem, że Sage jest więcej, szczególnie, że sporo spotkałem na IRCu. Tymczasem na PLNOG dowiedziałem się, że jest raptem 87 osób w Polsce i ok. 4600 na całym świecie. Więcej statystyk.