Powrót do bloga

Narzędzie Netcat w systemie Linux: Testowanie połączeń TCP/UDP na serwerze VPS za pomocą Netcat

Narzędzie Netcat w systemie Linux: Testowanie połączeń TCP/UDP na serwerze VPS za pomocą Netcat

Wprowadzenie

Jedną z największych zalet korzystania z Linux jest mnóstwo pomocnych narzędzi, które dostarcza. Funkcje wbudowane w programy są zazwyczaj wystarczające dla większości programistów do wykonywania ich pracy. Oznacza to, że przez większość czasu nie będziesz musiał pobierać zewnętrznych programów i oprogramowania. Wbudowane narzędzia zapewnią Ci wystarczającą użyteczność. Wśród tych pomocnych funkcji znajduje się narzędzie netcat.

Jeśli chodzi o świat narzędzi sieciowych, netcat jest czymś w rodzaju niezwykle potężnej broni. Jest to niesamowicie wszechstronne polecenie, którego można używać do wielu celów. Na przykład, możesz użyć tego jednego narzędzia do monitorowania, testowania, a także przesyłania wszelkiego rodzaju plików i danych przez połączenia systemowe. W tym poradniku przyjrzymy się, jak wykonać wszystkie te czynności na VPS przy użyciu netcat.

Znajdowanie Netcat

Netcat jest zazwyczaj dostępny we wszystkich nowoczesnych dystrybucjach Linuksa. Oznacza to, że najprawdopodobniej już go masz i nie musisz specjalnie go instalować. W naszym samouczku będziemy korzystać z VPS z systemem Ubuntu 12.04. Możesz zainstalować własny serwer Ubuntu, postępując zgodnie z naszym samouczkiem.  Ubuntu zazwyczaj zawiera wariant BSD narzędzia netcat. Pamiętaj, że jeśli masz inną wersję, może ona działać nieco inaczej.

Omówienie podstawowej składni

Zaczynamy od zapoznania się z ogólną składnią, która działa w narzędziu netcat. Możesz obsługiwać netcat, uruchamiając połączenie TCP. Połączenie musi zostać zainicjowane z hostem zdalnym. Oto podstawowa składnia dla netcat:

To polecenie spróbuje nawiązać połączenie TCP ze zdalnym hostem. To, z którym hostem się połączy, zależy od numeru portu określonego w poleceniu. Połączenie będzie nieszyfrowane. Jak widać, to polecenie działa podobnie do sposobu działania polecenia telnet.

Z drugiej strony, możesz również zainicjować połączenie UDP. Aby wysłać pakiet UDP zamiast TCP, musisz użyć opcji -u. Wyglądałoby to tak:

Jeśli chcesz, możesz również określić zakres portów. Aby to zrobić, musisz wstawić myślnik między pierwszym a ostatnim portem. Oto przykład:

Możesz do tego dodać również więcej flag. Inną rzeczą, na którą warto zwrócić uwagę, jest to, że możesz używać netcat i nc zamiennie. Uruchomią one to samo polecenie, co oznacza, że są swoimi aliasami.

Używanie Netcat do skanowania portów

Na początek przyjrzyjmy się jednemu z najczęstszych zastosowań netcat. Dowiemy się, jak używać go jako skanera portów. W większości sytuacji lepiej jest użyć narzędzia takiego jak nmap. Jeśli jednak potrzebujesz tylko wykonać proste skanowanie portów, netcat jest przydatny. Może pomóc w łatwym zidentyfikowaniu otwartych portów.

Aby użyć netcat jako skanera portów, musisz podać zakres portów. Zrobisz to za pomocą opcji -z. W ten sposób system przeskanuje zakres portów zamiast próbować nawiązać połączenie. Załóżmy, że chcemy przeskanować porty od 1 do 1000:

Oprócz polecenia -z użyliśmy również opcji -v. Ta druga pozwala nam uzyskać więcej informacji z polecenia. Pozwala nam na bycie bardziej „szczegółowym” (verbose).

W odpowiedzi otrzymasz dane wyjściowe wyglądające następująco:

port scanning netcat utility

Dane wyjściowe pokazują wiele informacji dla każdego poszczególnego portu. Znasz status połączenia każdego portu. Z drugiej strony, jeśli znasz adres IP, możesz go użyć zamiast nazwy domeny. To znacznie przyspiesza proces. Oto przykład:

Użyliśmy flagi -n, aby wskazać, że system nie musi używać DNS do rozpoznawania adresu IP.

Zazwyczaj komunikaty zwrotne są wysyłane na standardowe wyjście błędów. Aby szybciej odfiltrować wyniki, możesz przekierować je na standardowe wyjście. Użyjemy do tego składni basha 2>&1. Następnie odfiltrujemy wyniki za pomocą grep. Zastosujmy to do naszego przykładu:

Wynik będzie wyglądał podobnie do tego:

port scan succeeded

Wynik pokazuje, że tylko port 22 jest otwarty dla połączeń w podanym zakresie. Port 22 jest tradycyjnym portem SSH.

Komunikacja przez Netcat: Jak to działa?

Następnie zobaczymy, jak można użyć programu netcat do wysyłania pakietów TCP i UDP. Co więcej, może on również odbierać pakiety na różnych portach. Dzięki tej możliwości można użyć dwóch instancji netcat do stworzenia relacji klient-serwer. Na początku określisz klienta i serwer. Po wstępnej konfiguracji oba klienty mogą wysyłać i odbierać pakiety w obu kierunkach.

Naturalnie, będziesz musiał skonfigurować netcat na jednym systemie, aby nasłuchiwał połączeń na jednym porcie. Aby to zrobić, musisz użyć parametru -l. Dzięki temu możesz wybrać żądany port w następujący sposób:

Teraz protokół TCP na tej maszynie będzie nasłuchiwał połączeń na porcie 4444. Warto zauważyć, że jeśli jesteś użytkownikiem bez uprawnień roota lub zwykłym użytkownikiem, nie będziesz mieć dostępu do portów poniżej 1000.

Następnie musisz skonfigurować drugą maszynę, aby nawiązać połączenie. Użyjesz tego samego numeru portu i wskażesz konkretną nazwę domeny w ten sposób:

Uruchomienie tego polecenia nie da żadnego wyniku. Spowoduje jednak nawiązanie połączenia. Oznacza to, że możesz zacząć wysyłać wiadomości z jednego serwera na drugi. Aby to zrobić, wystarczy wpisać wiadomość, a następnie nacisnąć klawisz ENTER. Wiadomość pojawi się na obu ekranach.

Po zakończeniu możesz zamknąć połączenie TCP, naciskając CTRL+D.

Czy można przesyłać pliki za pomocą Netcat?

Następnie pokażemy, jak przesyłać pliki za pomocą netcat. Za pomocą połączenia TCP można wysyłać wiadomości, a także inne rodzaje danych. Na początek musisz wybrać jedną maszynę, która będzie nasłuchiwać połączeń. Jednak zamiast wpisywać informacje w poleceniu, umieścimy je w pliku w ten sposób:

Na drugiej maszynie będziesz musiał utworzyć nowy plik tekstowy. Oto polecenie, którego należy użyć:

Aby przesłać plik, użyjesz go jako wejścia dla połączenia na komputerze, który nasłuchuje:

Na drugim komputerze pojawi się nowy plik o nazwie „received_file”. Będzie on zawierał wszystkie wpisane przez nas informacje:

file transmissionMożesz użyć tego narzędzia i przekształcić je w program do przesyłania plików. Załóżmy, że chcesz przesłać zawartość katalogu. Zrobimy to, tworząc nienazwane archiwum tar (tarball), które prześlemy do systemu i rozpakujemy w zdalnym katalogu. Na drugiej maszynie musimy przygotować się na odbiór pliku. Wiemy, że będziemy musieli go rozpakować i wyodrębnić. Aby to zrobić, wydaj następujące polecenie:

Myślnik wskazuje, że program tar będzie działał na standardowym wejściu. Pochodzi ono z programu netcat na serwerze początkowym, gdy nawiązaliśmy początkowe połączenie.

Na koniec możemy umieścić zawartość całego katalogu w archiwum tar i wysłać ją przez netcat w ten sposób:

Myślnik w poleceniu tar pokazuje, że nakazujemy systemowi spakowanie i skompresowanie zawartości katalogu. Instrukcja ta nakazuje również zapisanie wyniku na standardowe wyjście. Plik przejdzie przez połączenie TCP na drugi koniec. Serwer odbierający zdekompresuje go i zapisze w bieżącym zdalnym katalogu.

W ten sam sposób można przesyłać przez netcat również inne rodzaje danych. Wiele osób używa polecenia dd do tworzenia obrazów dysków i ich przesyłania. Aby poznać inny sposób przesyłania danych i plików, zapoznaj się z naszym poradnikiem pokazującym, jak zapewnić bezpieczeństwo podczas przesyłania plików za pomocą SFTP.

Używanie Netcat jako serwera WWW

Kolejną przydatną funkcją netcat jest możliwość użycia go do testowania swoich stron. Załóżmy, że używamy serwera do utworzenia pliku HTML takiego jak ten:

Oto kod HTML, który zawiera ten plik:

Wprowadź to do pliku, a następnie zapisz go i zamknij. Zazwyczaj domyślnym portem internetowym jest port 80. Jako zwykły użytkownik (nie-root) wybierzemy port 8888. Zakładając, że chcesz udostępnić i sprawdzić stronę tylko raz, użyj następującego polecenia:

Aby wyświetlić zawartość pliku, przejdź do przeglądarki. Odwiedź następujący adres:

Zobaczysz stronę, którą zakodowałeś w pliku HTML:

output html page netcat utility

Po pobraniu strony połączenie netcat zostanie zamknięte. Oznacza to, że odświeżenie strony spowoduje wyświetlenie błędu zamiast zawartości. Dzieje się tak, ponieważ skonfigurowaliśmy ją tak, aby była udostępniana tylko raz. Jeśli chcesz nadal odbierać połączenia, aby wyświetlać stronę w nieskończoność, użyjesz innego kodu:

W tym przypadku umieściliśmy ostatnie polecenie w nieskończonej pętli. Jeśli chcesz zatrzymać pętlę, wystarczy nacisnąć CTRL-C. Teraz możesz nadal przeglądać swoją stronę i jej renderowanie nawet po zamknięciu pierwszego połączenia. Jest to jednak maksymalna funkcjonalność, jaką można uzyskać z używania narzędzia netcat jako serwera WWW. Nie próbuj używać go do obsługi rzeczywistych stron internetowych, ponieważ nie zapewnia ono żadnego bezpieczeństwa. Zamiast tego możesz zapoznać się z naszymi poradnikami dotyczącymi jak zainstalować oprogramowanie serwera WWW, takie jak Nginx lub Apache.

Podsumowanie

W tym poradniku omówiliśmy narzędzie netcat i zbadaliśmy jego wszechstronność jako narzędzia w systemie Ubuntu. Jak opisano w powyższych sekcjach, można go używać do komunikacji, przesyłania danych i udostępniania stron. Działa idealnie do szybkich interakcji między serwerami za pośrednictwem połączeń TCP/UDP. Jest to bardzo pomocna funkcja w przypadku wielu podstawowych funkcjonalności i diagnostyki.

Miłego korzystania z komputera!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.