RIPE Network Coordination Centre uwolniła źródła narzędzia pomiarowego RIPE Atlas, czyli największej sieci pomiarowej w Internecie. RIPE NCC to niezależna i niedochodowa organizacja, która zajmuje się wsparciem infrastruktury sieci Internet oraz rozdzielaniem i przechowywaniem adresów IPv4, IPv6 oraz numerów AS. Jej projekt – RIPE Atlas, tworzy interaktywną mapę internetową na podstawie danych zebranych ze specjalnych sond.
Kod RIPE Atlas jest dostępny na licencji GPLv2. Jednym z powodów wypuszczenia kodu źródłowego były prośby użytkowników, którzy chcieli wiedzieć, jak to działa. Dodatkowo ma to pomóc w rozwoju oraz poprawie bezpieczeństwa całego projektu.
Krótka historia
Projekt został rozpoczęty, jako mała modyfikacja standardowych narzędzi w oprogramowaniu BusyBox. Skrypty konsolowe uruchamiały ping i traceroute, przekierowywały wyjście do plików logów, a następnie używały narzędzia wget do publikacji wyników kontroli infrastruktury.
W tym czasie projekt ewoluował w dwóch różnych kierunkach. Wpierw został napisany planista, bazujący na crond ale dostosowany do potrzeb RIPE Atlas. Nazwano go perd, czyli periodic daemon. Odróżnia się on od crona tym, że posiada początek i koniec zadania, a także przedział czasowy w sekundach. Dodatkowo jest zaimplementowany jitter, aby uniknąć kolizji startu kilku pomiarów jednocześnie, a także stałego odstępu czasu w jednym pomiarze. Na koniec perd zwraca wyniki pomiarów, jako wywołania funkcji C, zamiast jako nowe procesy. Jest to wymagane przez ograniczenia pierwszej i drugiej wersji próbników, które nie posiadają MMU.
Głównym ograniczeniem perd i tradycyjnych narzędzi Uniksa jest wykonywanie tylko jednego pomiaru w danych czasie. Aby stworzyć wielozadaniowość, sondy musiałyby uruchamiać kilka instancji perda.
RIPE NCC wydało do tej pory kilka wersji sond:
Kolejnym logicznym krokiem było przepisanie kodu pomiarowego do używania libevent, biblioteki która zapewnia abstrakcję i zarządzanie zadaniami z wybranego wywołania systemu i nie zablokowanego I/O. Zmieniono także format pomiarów na JSON. Perd został przemianowany na eperd, aby móc zaadoptować libevent.
Kod libevent został zmodyfikowany, aby naprawić błąd w DNS stub-resolver.
Programiści dodali dwa ciekawe narzędzia, które posiadają specjalne modyfikacje, aby mogły używać funkcji RIPE Atlas. Telnet daemon otrzymał możliwość akceptowania komand z kontrolera do uruchamiania i zakańczania pomiarów. Eooqd jest demonem, który uruchamia pomiary one-off.
Narzędzia
Warto wymienić ciekawe funkcje, które wykorzystują pewne udoskonalenia z użyciem libevent.
- perd – periodic daemon, używany z sslgetcert i komendą wysyłającą wyniki
- eperd – periodic daemon z obsługą libevent, następca perd
- evping jest implementacją protokołu ICMP
- evtraceroute jest implementacją traceroute, używającą protokołów ICMP i UDP bez Paris
- evtdig jest implementacją klienta DNS
- evhttpget jest klientem HTTP
- sslgetcert jest narzędziem, które pobiera certyfikat SSL z serwera, i nie ustanawia połączenia SSL
RIPE Atlas kompiluje i uruchamia się na Debianie 7.0 Wheezy oraz CentOS 6.3. Powinno też zadziałać na każdej nowoczesnej dystrybucji Linuksa.
Michał Olber liked this on Facebook.
Łukasz Wòjcik liked this on Facebook.
Skompilowałem sobie to coś i działa spoko, ale nie wiem do czego użyć. Sondę już mam. A nie wiecie czy można dostać nowszy model?
Dla mnie to jeden wielki botnet.
Raczej to potem może posłużyć za botnet. Pytanie, czy da się zdalnie wgrać oprogramowanie na takie urządzenia. Jeżeli tak, to jest to naprawdę ogromne zagrożenie :]
Jeśli ktoś przejmie kontrolę nad panelem RIPE to ma fajny botnet :]
Myślę, że to zabezpieczyli – ale fakt. Dali źródła to teraz komuś będzie łatwiej odszukać lukę. Ciekawy kąsek :/
Czy istnieje możliwość aktualizacji systemu (Linuxa) wbudowanego w tę sondę?
Mam tę sondę i dość często włączam ją:)
[…] roku później RIPE NCC uwolniła źródła narzędzi pomiarowych RIPE Atlas na licencji GPLv2. Dzięki temu wiele osób mogło samodzielnie stworzyć własne próbniki, z […]