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.

PUM działa

Doprowadziłem PUMa do takiej postaci, że daje się używać i generuje w miarę strawny i używalny HTML. Przykładowy wynik działania. Oczywiście wszystko jest na GitHubie, który mnie drażni ostatnio, bo pisze (w związku z zupełnie innym projektem, notka leży w szkicach, których coraz więcej, upał taki, że nawet pisać się nie chce), że Can’t automatically merge. Don’t worry, you can still create the pull request. No niby mogę, ale autor upstreamu umiarkowanie nalega na wyprostowanie (się nie dziwię), a ja szczerze mówiąc nie widzę, co mu przeszkadza w automatycznym merge. Pewnie jakbym wiedział, to łatwiej byłoby mi pomóc gitowi ogarnąć się… W każdym razie będę doszkalał się z gita.

Wynikami nie ma się co sugerować zbytnio – sporo hostów zostało dodanych bardzo niedawno, stąd 100%. Jest też rozbieżność pomiędzy wynikami dla All time i jednego roku. Nie bug w skrypcie, tylko tak zwraca dane polecany niedawno Uptime Robot. Zgłosiłem buga i (szybka!) odpowiedź trochę martwi:

The Free Plan can return uptime ratios back to 1 month due to the limit of the logs kept. The Pro Plan supports back to 1 year.

And, the alltimeuptimeratio variable in the API currently returns 1-month uptime (and it’ll be removed from the APIv2).

Mój nos mówi mi, że idzie monetyzacja i z fajnej, darmowej usługi może być wkrótce coś niezbyt fajnego/używalnego. Ale może to tylko moje czarnowidztwo.

Poza tym, po niedawnej awarii (jak ktoś nie zna serwisu downdetector.pl do określania, czy jest awaria u dostawcy, to dość entuzjastycznie polecam) u mojego ISP wylądowałem za NAT (jak wielu innych abonentów). Po telefonie przywrócony publiczny IP, ale od tego czasu dla hosta w domu Uptime Robot pokazuje dziwne rzeczy – host znika, pojawia się, znowu znika… Podejrzewałem jakiś autosuspend w momencie, gdy żadne urządzenie nie jest aktywne, ale raczej nie o to chodzi. IP się nie zmienia, więc nawet w przypadku problemów z odświeżaniem dyndns nie powinno rzutować (ale nie wykluczę…). Problemy z routingiem? Może się zbiorę, ustalę IP z którego Uptime Robot monitoruje i zdiagnozuję… Póki co po prostu pauza, aby się śmieci nie generowały.

UPDATE Odnośnie problemów z git – stupid me, czyli niewiedza w temacie gita i podchodzenie do problemu od zadniej strony. Swoją drogą, namierzenie/szukanie rozwiązaniach po objawach mogłoby trwać długo… Przyczyna to złe forkowanie. Na szczęście GitHub ma świetną pomoc. Robienie forka repo git, następnie synchronizacja forka i wszystko działa.

Urlop

No i urlop się kończy, więc można podsumować. Znowu nad morzem (Bałtyk). To znowu to stwierdzenie faktu, nie oznaka nudy. Doceniłem, że jeździmy na ubocze i w sumie poza sezonem. Wszystko za sprawą jednodniowego wypadu do Międzyzdrojów. Zaczęło się od żubrów, które jak co roku odwiedzamy. Mieliśmy pójść na molo, ale zaskoczył nas deszcz, więc innego dnia zrobiliśmy powtórkę.

Ilość „atrakcji” przytłacza i przygnębia. Podobnie jak ilość ludzi. Spędy wszędzie, ruszyć się nie można (zwł. jak się jest dzieckiem), a to jeszcze nie sezon. Wycieczki starców i dzieci, porykiwania wychowawców. Ja rozumiem, że nie było tego dnia idealnej pogody na plażę, ale za taki „wypoczynek” to ja dziękuję. Niemniej, molo fajne i zdecydowanie warto. Hint: masa płatnych parkingów i strefa koło plaży, ale jak ktoś ma ochotę na dziesięciominutowy spacer, to znajdzie i darmowe parkingi – wystarczy kierować się w stronę „od morza” (ot, wyszedł ze mnie Poznaniak).

Są też i lepsze – na oko – atrakcje, dzieciaki pewnie by szalały, ale po pierwsze, były już nieco padnięte, po drugie, nie przyjechaliśmy do Międzyzdrojów na dłużej, a raptem na jeden dzień, więc nie trzeba było się posiłkować atrakcjami a’la wesołe miasteczko. Poza tym, namioty czy tam pawilony handlowe. Ale jestem niemal pewny, że księgarnia z książkami „od 1 zł”, gdzie zrobiliśmy większe zakupy książkowe to był namiot handlowy, nie pawilon, po prostu. W każdym razie Międzyzdroje zaliczone, na parę lat starczy. 😉

Skoro już przy książkach jesteśmy – trochę „poczytałem”. Cudzysłów, bo nie tylko tradycyjne lektury, w końcu przekonałem się bardziej do audiobooków. I uznałem, że będę je traktował na równi z książkami (czyli będą tak samo oceniane). Miałem wątpliwości, bo i „czytam” inaczej (np. tramwaj czy pociąg), i raczej tematyka inna, i lektor potrafi wpłynąć na odbiór, ale w sumie uznałem, że nie ma co na siłę robić rozróżnienia, skoro to czytana książka. Trochę nadrobiłem czytelnictwo na urlopie.

Ciekawą obserwacją są też ceny atrakcji. Np. gofrów. W Dziwnówku IIRC 2,5 zł za gofra gołego lub z cukrem pudrem. Z bitą śmietaną – 7 zł. Międzyzdroje – standardowo goły 3,5 zł, cukier puder podnosi cenę do 4 zł. Bita śmietana to nadal 7 zł. I więcej. Wersje na wypasie – 10 zł i więcej. Trochę dużo jak za – nie ukrywajmy – bardziej odpowiednik ciastka, niż posiłku.

No, ale większość czasu siedzieliśmy w ciszy, spokoju i odosobnieniu. Pusta plaża, te klimaty. W końcu się zebrałem i zacząłem trochę biegać. Nieopodal szlak biegowy, więc jakoś skusiło AKA zmotywowało. Zresztą był taki plan, nawet buty wziąłem. Już drugiego dnia odkryłem wiązanie z tzw. heel lock, czyli do czego jest dodatkowa dziurka w bucie. Nie wiem, czy coś daje, ale nie wadzi w niczym i jest OK, więc będę używał.

Oczywiście bieganie bez GPS się nie liczy (się nabijam, oczywiście; wiem, że to choroba i się, bo zawsze biegałem po prostu dla przyjemności biegania, ale się skusiłem…), więc telefon w garść, soft do zapamiętywania trasy włączony i bieg. Z pozytywów – pobawiłem się Perlem, GPS i skryptami. Jest szansa, że powstanie coś wolnego/otwartego do wrzucania wyników na stronkę w strawnej formie.

Poza tym, znalazłem rozwiązanie jednego drobiazgu, który mnie męczył w Perlu, co oznacza, że może niedługo światło dzienne ujrzy jeszcze jeden projekcik. Trochę rozwinąłem mojego Perl Uptime Monitor – umie wygenerować bardzo podstawowy HTML. Z największych okołoperlowych rzeczy – wróciłem do tłumaczeń. Tym razem nie GNU, tylko właśnie niezły- jak mi się wydaje – serwis o Perlu. Chwilowo się nie chwalę (choć jak ktoś poszuka, to znajdzie, co robię). Mam postanowienie wrzucania więcej na GitHub.

Ogólnie – brakowało mi urlopu. Klasyczne oderwanie i podładowanie baterii. Pora wrócić do pracy.