Sockstat to wszechstronne narzędzie wiersza poleceń, które jest dołączone do FreeBSD. Widzi ogromne zastosowanie w badaniu połączeń sieciowych i otwartych gniazd. We FreeBSD wyświetla nazwy i stan procesów działających w tle i na pierwszym planie, które spowodowały odblokowanie portu sieciowego. Możesz nawet dostosować go, aby uporządkować listy gniazd komunikacyjnych na temat stanu połączenia, wersji IP, jakich portów nasłuchują określone programy itp., i uprościć wyniki w oparciu o własność gniazda i deskryptory dla gniazd komunikacyjnych. Dzięki Sockstat możesz również zobaczyć wszystkie skomplikowane szczegóły dotyczące każdego z gniazd domeny Unix/IPC. Trafnym posunięciem byłoby zintegrowanie socksstat z filtrem grep, aby potroić jego funkcjonalność i jak najlepiej go wykorzystać .
Spójrzmy na kilka fajnych rzeczy, które możemy zrobić za pomocą Sockstat na FreeBSD.
Wyświetl listę działających portów we FreeBSD za pomocą Sockstat
Polecenie Sockstat wyświetla listę wszystkich gniazd, które są aktualnie otwarte w systemie FreeBSD. Wpisz polecenie sockstat bez dołączonych flag lub opcji, aby wyświetlić listę otwartych gniazd:
$sockstat
Poświęćmy chwilę i przejrzyjmy, co oznaczają poszczególne etykiety kolumn w danych wyjściowych. Pierwsza kolumna od lewej jest oznaczona USERS i zawiera listę wszystkich kont użytkowników (roots, mysql), do których należy każde gniazdo. Drugi nagłówek kolumny to COMMAND, a ten nagłówek zawiera listę wszystkich poleceń, które ustawiły otwarcie każdego gniazda. Kolumna PID i kolumna FD zawierają odpowiednio identyfikatory procesów i deskryptory plików gniazd. Kolumna PROTO wyświetla wszystkie protokoły transportowe typów gniazd połączone z każdym otwartym portem. Ostatnie dwie kolumny to Adres lokalny i Adres zagraniczny. Pierwsza z tych dwóch zawiera lokalny adres IP dla każdego otwartego gniazda. Natomiast ten ostatni wskazuje, jakie adresy IP są połączone z każdym z tych gniazd socket.
Wyświetl listę konkretnych wersji otwartych portów we FreeBSD
Aby wyświetlić listę otwartych gniazd tylko z określoną wersją protokołu, na przykład wersją IPv4, dodaj flagę -4 na końcu polecenia sockstat:
$ skarpetka -4
Możesz również zlecić, aby prezentował w podobny sposób listę innych wersji, na przykład
$Sockstat -6
Powinny wyświetlać wszystkie gniazda z IPv6.
Wymień otwarte gniazda oparte na TCP/UDP we FreeBSD
Dodaj flagę -P do polecenia sockstat, aby wyświetlić listę otwartych gniazd w oparciu o TCP lub UDP. Będziesz także musiał dodać nazwę argumentu protokołu do polecenia, które możesz wyszukać, przechodząc do pliku /etc/protocols i sprawdzając tam plik. Aby mieć tylko gniazda oparte na protokole TCP, wpisz następujące polecenie:
$ sockstat -P tcpPodobnie możesz utworzyć krótką listę na podstawie UDP:
$ Sockstat -P udpTe dwa można połączyć w bardzo prosty sposób:
$ sockstat -P tcp,udp
Jak na razie Sockstat nie rozszerza swojej obsługi na protokół ICMP.
Gniazda wyświetlacza z określonymi numerami portów
Aby zobaczyć wszystkie otwarte gniazda, zarówno TCP, jak i UDP, mając listę uporządkowaną na podstawie numerów portów (zarówno lokalnych, jak i innych), wpisz polecenie sockstat z odpowiednimi flagami:
$ sockstat -P tcp -p 443$ sockstat -P udp -p 53
$ sockstat -P tcp -p 443,53,80,21
W powyższych poleceniach pierwsza pokazuje port TCP HTTPS, druga porty DNS UDP, a trzecia pokazuje oba.
Zobacz otwarte porty nasłuchiwane we FreeBSD
Po dodaniu flagi -l do polecenia sockstat zostanie wyświetlone otwarte gniazdo, które aktualnie nasłuchuje przez pakiet protokołów i wszystkie otwarte gniazda domeny UNIX, a także wszelkie nazwane potoki.
$ skarpetka -lWymień porty aktywnie nasłuchujące w sieci
Dodaj flagi -l i -s do polecenia sockstat, aby otwarte porty TCP były uporządkowane według ich statusu nasłuchiwania.
$ skarpetka -46 -l -s
UDP nie może być wyświetlany jako protokół niesieciowy, dlatego nie zachowuje danych o stanie nasłuchiwania.
Uporządkuj otwarte porty za pomocą aplikacji/polecenia za ich pomocą
Oto część, w której przydaje się parowanie polecenia Sockstat z narzędziem grep; za pomocą narzędzia grep możesz wyświetlić listę otwartych portów dla aplikacji, które aktualnie z nich korzystają.
Polecenie, którego użyjesz do wyświetlenia otwartych portów połączonych w szczególności z serwerem ntpd, to:
$ skarpetka -46 | grep ntpd
Listę można uszczegółowić, wyświetlając tylko podłączone gniazda, dodając flagę -c do powyższego polecenia:
$ skarpetka -46 -c| grep ntpd
Wyświetl wszystkie gniazda Unix
Wyświetl listę wszystkich gniazd domeny uniksowej, dodając flagę u- do polecenia sockstat:
$ skarpetka -u
Powinno to również wyświetlić nazwane potoki wraz z gniazdami Unix.
Rozmieść otwarte porty za pomocą protokołów podłączonych HTTPS
Aby lista była wyświetlana przez protokół HTTPS dla każdego gniazda, użyj poniższego polecenia:
$ sockstat -46 -s -P TCP -p 443 -c
Wyświetlanie listy zdalnych gniazd HTTP
Możesz także wyświetlić listę wszystkich zdalnych gniazd korzystających obecnie z protokołu HTTP. Uruchom jedno z następujących poleceń w terminalu:
$ skarpetka -46 -c | egrep '80|443' | awk 'drukuj 7 USD' | uniq -c | sortuj -nr$ sockstat -46 -c -p 80 443 | grep -v ADRES|awk 'print $7' |
uniq -c | sortuj -nr
Sprawdź, ile razy adres IP wysłał żądania
Aby dowiedzieć się, ile żądań połączenia zostało odebranych z każdego adresu IP, możesz uruchomić następujące polecenie:
$ skarpetka -46 -c | egrep '80|443' | awk 'drukuj 7 USD' | wyciąć -d: -f1 | uniq -c | sortuj -n
Określając, czy istnieje wyjątkowo duża liczba żądań połączenia wysyłanych przez adres IP, możesz zidentyfikować, że istnieje jakiś złośliwy zamiar i możesz pozytywnie przejść do żółtego alertu i zastosować odpowiednie protokoły bezpieczeństwa.
Wyślij zapytanie DNS z gniazda TCP
Możesz wysłać zapytanie DNS za pomocą gniazda TCP na konsoli, pod warunkiem, że sieć jest wolna od jakiegokolwiek ruchu DNS. Uruchom poniższe polecenie:
$ dig + tcp [email protected]Zawijanie
Tak więc nauczyłeś się dużo o używaniu polecenia sockstat i jego odmian z flagami i przełącznikami. Zobaczyłeś również, jak jest on używany na różne sposoby, aby prezentować diagnostykę sieci w różnych preferencjach i wykorzystywać te informacje do przeprowadzania wieloaspektowego rozwiązywania problemów we FreeBSD. To dużo samo w sobie, ale teraz, gdy już znasz się na tym, powinieneś rozważyć włączenie wiersza poleceń sockstat z kilkoma potężnymi narzędziami wiersza poleceń, takimi jak netstat i Isof.