Ubuntu 14.04 LTS, apt-dater i restart usług

Jakiś czas temu zachwalałem apt-dater jako narzędzie do aktualizacji większej ilości systemów. Jak pisałem w późniejszych uwagach, apt-dater nieźle integruje się z programem needrestart. Tyle teorii…

Niestety, o ile na Debianie Jessie wyglądało to naprawdę dobrze i sprawdzenie przez checkrestart (inne polecenie realizujące podobne zadanie) dawało spójne wyniki z needrestart, o tyle na Ubuntu 14.04 LTS needrestart pokazywał często, że do restartu nic nie ma, o tyle checkrestart był zupełnie innego zdania... I – co gorsza – miał rację.

Przyczyną okazała się różnica w wersji needrestart. W Jessie jest to 1.2, w Ubuntu 14.04 LTS – 0.5. Ponieważ to skrypt perlowy, to dałem szansę i wrzuciłem wersję z Debiana (stable). Instaluje się czysto, działa bardzo dobrze – w połączeniu z apt-dater wykrywa więcej usług do restartu i także tu wyniki needrestart są teraz spójne z checkrestart.

Nawiasem, checkrestart w Jessie ma problem z mysql i zawsze pokazuje, że należy go zrestartować. Jest na to zgłoszony bug. Ale to tak nawiasem, kto korzysta, ten wie, zresztą można dopisać mysql do wyjątków w konfigu.

Kraizm

Mapa świata

Źródło: https://commons.wikimedia.org/wiki/File:BlankMap-World6.svg

Wyobraźmy sobie, że ktoś w cywilizowanym świecie otwiera sklep/oferuje usługę i zabrania korzystania z niego ludziom o określonym kolorze skóry. Na przykład salon fryzjerski albo kino, z napisem Murzynów nie obsługujemy. Albo wyznającym określoną religię. Ewentualnie określonej narodowości. Albo w drugą stronę – sklep/usługa tylko dla białych. Albo Nur für Deutsche… Myślicie, że by przeszło? Ja myślę, że zdecydowanie nie.

To może coś mniej oczywistego. Sklep internetowy (albo usługa…) o podobnych ograniczeniach korzystania. Co prawda trochę trudniej weryfikować, ale zawsze można próbować posiłkować się danymi z social media, czyli wymagać logowania przez Facebooka, a jeśli płeć albo kolor skóry właściciela na zdjęciach się nie spodoba, to odmawiamy dostępu do usług. Ewentualnie można wymagać zdjęcia dowodu tożsamości i próbować określić na tej podstawie. Technicznie wykonalne, z rozsądną pewnością. Myślicie, że to by przeszło? Nie jestem już taki pewny, jak w poprzednim przypadku, ale nadal mam wrażenie, że nie.

Natomiast w sieci każdego dnia spotykamy się z dokładnie taką segregacją ludzi na podstawie domniemania kraju, w którym aktualnie przebywają. Chodzi oczywiście o ograniczanie dostępu do kultury/rozrywki (muzyka, film) przy pomocy DRM, czy to za sprawą regionów DVD, czy innych, podobnych technik. Wystarczy wejść na YouTube – część utworów jest w danym kraju niedostępna (Google, don’t be evil…).

Generalnie o ile nie uznajemy segregowania na podstawie płci, rasy, koloru skóry, religii czy narodowości za właściwe, to już segregacja na podstawie (domniemania) kraju przebywania jest raczej akceptowana. Przynajmniej w sieci. Nawet, jeśli nie wynika ona wprost z przepisów obowiązujących w danym kraju. Swoją drogą, prawa sankcjonujące dyskryminację ze względu na religię/narodowość/kolor skóry/płeć też istniały, więc to żaden argument.

Zastanawiałem się, czy już ktoś użył tego określenia, ale szukając po countrism znajduję tylko countrist, o zbliżonym znaczeniu, ale jednak w trochę innym kontekście. Do rozważań na ten temat bezpośrednio skłoniła mnie sytuacja z Netflix, który co prawda otworzył się na różne rynki, ale jednocześnie dołączył do firm wykorzystujących DRM i zapowiedział blokadę proxy/VPN w celu uzyskania dostępu do treści, ale problem jest oczywiście szerszy.

Automatyczne pobieranie kontaktu abuse dla domeny lub adresu IP

Zawsze miałem problem z szukaniem właściwego kontaktu abuse. No może problem to za dużo powiedziane, ale szukanie ręcznie, w hurtowych ilościach to nie jest nic ciekawego. Poza tym, jeśli chcemy zgłaszać automatycznie, to szukanie ręcznie odpada. A w danych whois były cuda, więc parsowanie tego byłoby wyzwaniem… Stosunkowo niedawno RIPE zrobiło jako taki porządek i pojawiły się pola abuse-c. Jednak już wcześniej znalazłem abusix i ich projekt Abuse Contact DB. Pozwala na wygodne odpytywanie o kontakty abuse przy pomocy DNS, więc szybko, prosto i wygodnie.

Trochę, żeby ułatwić życie kolegom, a trochę, żeby automatycznie zgłaszać nadużycia (np. próby włamań po SSH) ze swoich hostów, popełniłem funkcję w Perlu[1], która zwraca pierwszy email z listy, na podstawie ww. bazy. W międzyczasie zająłem się czym innym, znalazłem serwis, który rozwiązał temat automatycznego raportowania prób włamania. Temat więc trochę umarł. Przynajmniej do wczoraj/przedwczoraj, kiedy znalazłem ten wpis i dowiedziałem się, że najprawdopodobniej nikt nie powiadomił firm hostujących. Plus zwykła ciekawość: a gdzie te skompromitowane hosty leżą? Z potrzeby chwili i własnej ciekawości skleciłem skrypt, który bierze domenę (czyli adres strony), sprawdza jego IP (dokładniej: rekord A) i ustala stosowny adres email do kontaktu z abuse.

Wynik działania dla domen .pl jest tu, a wynik działania dla całej listy tu. Skrypt jest zdecydowanie do poprawienia i rozwoju. W tej chwili nie zwraca nic przy braku kompletu danych, czyli brak obsługi błędów, jest wolny, bo działa sekwencyjnie, nie jest to czysty Perl, nie obsługuje IP (ani IPv6 czyli rekordów AAAA), grupowania domen/IP po kontakcie abuse (żeby nie słać wielu maili na ten sam adres) i wysyłki maili, ale leci na GitHuba. W ramach motywatora. 😉 Może kiedyś przyda się komuś, kto znajdzie jakiś malware…

TIL: istnieje oficjalne narzędzie w Pythonie, obsługujące bazę danych abuse; działa zarówno dla IPv4 jak i IPv6 (ale nie obsługuje domen). Generalnie robi to, co moja pierwotna funkcja w Perlu, tylko trochę lepiej. Mam wrażenie, że jak wtedy patrzyłem na tę stronę, to go nie było…

PS Z różnych źródeł wiem, że większe polskie hostingi są już powiadomione, nie ma potrzeby wysyłania maili. 😉 Warto natomiast zobaczyć, czy nie ma na liście strony własnej/znajomych. Problem leży tak naprawdę po stronie użytkownika hostingu i  jego niezaktualizowanej aplikacji, więc tylko on może go tak naprawdę rozwiązać.

[1] Teraz widzę, że funkcja nie jest w czystym Perlu, tylko wywołuje zewnętrzny program host, poprawię wkrótce.