W pracy jako admin, zwłaszcza jeżeli jest to adminowanie rzeczami mocno związanymi z siecią (routery, firewalle, VPNy, proxy), bardzo pomocną (czasami niezastąpioną) rzeczą jest posiadanie odpowiednich narzędzi. Odkąd bawię się (zarabiam też) Linuksem udało mi się zebrać całkiem spory (funkcjonalnie, niekoniecznie ilościowo) toolbox różnego rodzaju narzędzi sieciowych. Często zdarzało mi się (na początku) zastanawiać jak to fajnie byłoby mieć możliwość podejrzenia tego czy tamtego, czy zasymulowania tego.

Po czym zwykle okazywało się że narzędzie już powstało ale ja jeszcze o tym nie wiedziałem. Postanowiłem więc zebrać listę “must-have” dla każdego sieciowca, admina a po części także programisty  (jeżeli ma doczynienia z niższymi warstwami OSI)

NMAP & Zenmap

Początek i koniec skanerów portów, czy chcesz sprawdzić czy port jest otwarty, czy jaka wersja serwera www jest uruchomiona, czy na jakim OSie chodzi serwer, czy właściwie cokolwiek innego, to jest najlepsze narzędzie do tego. Paręnaście różnych typów skanów, możliwość tworzenia własnych, nawet wbudowany język skryptowy (Lua).

zenmap

Dla tych którzy nie przepadają za grzebaniem w linii komend jest dostępny świetny frontend Zenmap, w wersji >=5.0 posiada także opcję tworzenia grafów sieci (przydatna gdy chcemy popatrzeć jak wygląda np. lokalny intranet bez bawienia sie traceroute/mtr)

Netcat & Socat

Netcat zna chyba większość, ale dla tych nielicznych co nie znają, to jest coś w rodzaju cat tylko sieciowy ;]. Pozwala łączyć się do usług a także pracować w trybie serwera (słucha na porcie x i wywala na stdout), ma też obsługę proxy i parę innych rzeczy (do doczytania w manie), obsługuje TCP, UDP i w nowszych wersjach unixsocks, jest też domyślnie w instalacji np Debiana.

Socat natomiast jest tak jakby “stuningowaną” wersją netcata. Działa on tak: podajesz mu 2 adresy i on przekazuje dwukierunkowo dane między nimi (można też wymusić działanie tylko w jedną stronę). Ale przez “adresy” rozumiane jest praktycznie wszystko, np:

  • Serwer/klient TCP/UDP/SCTP
  • Wysyłanie danych bezpośrednio przez IP z pominięciem wyższych protokołów (z 3 warstwy)
  • Wysyłanie danych bezpośrednio z warstwy 2
  • Pipe, Unix socket, Pliki, PTY
  • stdin/out/err

I jeszcze pare innych, taki pomost “wszystko do wszystkiego”. Ja np używałem go do komunikacji z demonem przez unixowy socket, ale gdy potrzebny jest szybki most z czegokolwiek do czegokolwiek ten soft jest niezastąpiony ;]

Tcpdump & Wireshark

WiresharkTego używam gdy jest naprawdę dziwny problem z komunikacją w sieci i wyczerpałem inne możliwości. Oba programy są analizatorami ruchu w sieci, tcpdump jest konsolowy, Wireshark ma GUI.Możnaby napisać książkę o Wiresharku więc powiem tylko że można tym zanalizować absolutnie wszystko związane z siecią. A tcpdump świetnie to narzędzie uzupełnia ponieważ na zdalnej maszynie można odpalić tcpdump -w plik -i any nasz_filtr a potem tylko nakarmić wiresharka tym plikiem i można analizować dane. Przydaje się w sytuacjach gdy np. myślimy że ustawiliśmy przekierowanie na routerze poprawnie i nie wiemy czy to nasz błąd czy serwer na który idzie przekierowanie jest blokuje ruch z sieci nie-lokalnej.

Mtr

Traceroute na sterydach. Pokazuje trasę i oprócz tego statystyki ile czasu zajmuje dojście do poszczególnych hopów, gdzie się “pingi” gubią, troche statystyki + nawet małą “wizualizacje” w ASCII. niby można używać traceroute ale mtr jest o wiele czytelniejszy.

Hping

(w debianie pakiet hping3) Uniwersalny generator pakietów, można z lini komend wygenerować co się chcę (może też działać jako “ping via anything”), używam tego rzadko ale od czasu do czasu się przydaje. Jest jeszcze parę innych generatorów tego typu, do wyboru do koloru ;].

Firebug & Ratproxy

Nie są to raczej narzędzia używane na co dzień, zwłaszcza że nie jestem developerem aplikacji webowych, ale od czasu do czasu są przydatne, Firebug jest narzędziem do szeroko pojętej analizy stron/aplikacji webowych, od rozkładania na części HTMLa, Javascriptu i CSSów do badania które elementy strony zajmują najwięcej czasu i pasma. Ratproxy za to jest generalnie narzędziem do szukania security bugów w appach webowych, w pracy admina rzadko się przydaje ale warto wiedzieć o istnienu tego typu softu

Apache Benchmark (ab) & Httperf

(ab z pakietu apache2-utils w debie). Dwa programiki, jeden prosty, drugi trochę bardziej zaawansowany, oba do badania wydajności serwera WWW. Przydają się do wstępnego tuningu serwera WWW/aplikacji (czy to Ruby czy PHP). Oczywiście benchmark to benchmark, nie odpowiada realnemu obciążeniu serwera ale pozwala sprawdzić które parametry w configu wpływają na wydajność.

Arpwatch

Siedzi sobie jako demon, słucha (jak sama nazwa wskazuje) ARP i zapisuje w pliku jaki komp ma jaki MAC. Można go też skonfigurować żeby słał alerty gdy w sieci pojawi się nowy mac albo gdy ktoś z innym MAC niż normalnie był przypisany do danego IP się pojawi w sieci. Oczywiście, MAC można sfałszować, ale ogólnie narzędzie przydatne, czy do zmapowania IP <-> MAC czy do monitoringu nowych urządzeń podłączanych do sieci (nowy telefon z wifi userka czy prywatny laptop).

Perl

Każdy admin ma swój ulubiony język skryptowy, ale jeżeli chodzi o rzeczy typu “wczytaj x, pogrupuj po y, policz z i v” Perl jest chyba najwygodniejszy. Uzywam go głównie do analizy logów, wyciągnięcia danych skądś żeby podłączyć je pod zbieranie statystyk i tego typu duperelków. Można używać shella, awka i seda, ale wg. mnie perl jest wygodniejszy i często wydajniejszy.

Głowa

Ale to się wszędzie przydaje. Trzeba tylko umieć jej używać ;].

Parę narzędzi by się jeszcze znalazło, ale to są raczej bardzo sytuacyjne/bardzo wyspecjalizowane narzędzia, które często można zastąpić którymś z powyższych.