Co to jest port?
W sieci komputerowej port reprezentuje logiczny punkt wejścia i wyjścia dla połączenia. Porty są oparte na oprogramowaniu i są całkowicie wirtualne. Te porty na komputerze są zarządzane przez system operacyjny.
O czym będziemy porozmawiać?
Ten szybki samouczek pokazuje różne metody określania, który proces lub usługa Linux słucha obecnie na określonym porcie. Porozmawiajmy o portach i ich celu.
Jak są porty analogiczne do portów fizycznych?
Podobnie jak porty fizyczne pomagają w interakcji z różnymi urządzeniami peryferyjnymi podłączonymi do komputera, porty pomagają różnym usługom w komunikacji. Usługi te mogą znajdować się na tym samym komputerze lub na różnych komputerach.
Trochę o porcie usługi
Aby wysłuchać żądań przychodzących, proces kojarzy się z numerem portu. Większość procesów jest konfigurowana z domyślnym portem i muszą używać tego portu zgodnie z ich specyfikacją. Nie przełączają się automatycznie do drugiego portu, chyba że ich konfiguracja jest jawnie zmodyfikowana.
Kilka przykładów protokołów i powiązanych z nimi portów domyślnych obejmuje protokół Secure Shell (SSH) (Port22), Apache HTTP (Port80), serwer bazy danych MySQL (Port3306) i tak dalej. Możesz użyć tych informacji, aby odkryć, który dom domyślny wykorzystuje usługę.
Plik konfiguracyjny tych usług można edytować, aby korzystać z innego portu.
Sprawdzanie portów w Linux
Zobaczmy teraz, jak sprawdzić, jakie porty/porty używa procesu w Linux. Tutaj pokażemy różne polecenia w tym celu.
1. Polecenie lsof
Użyteczność LSOF jest pomocna w uzyskaniu listy portów używanych przez system. Rozważmy następujący przykład, aby uzyskać informacje o procesie (procesach) za pomocą portu TCP 22:
$ sudo lsof -i tcp: 22
Polecenie LSOF podaje więcej informacji, takich jak nazwa użytkownika i jakie identyfikatory procesów są powiązane z każdym procesem. Działa z portów TCP i UDP.
2. Polecenie ss
SS Polecenie to kolejny sposób, aby dowiedzieć się, które procesy są powiązane z określonym portem. Chociaż LSOF jest bardziej powszechnym skrótem, niektórzy ludzie mogą uznać, że SS jest bardziej przydatny.
Poszukajmy procesów lub usług, które słuchają na porcie 3306:
$ sudo ss -tunap | GREP: 3306
Rozbijmy to polecenie:
1. T: Mówi komendę SS, aby wyświetlała pakiety TCP.
2. u: Mówi komendę SS, aby wyświetlała pakiety UDP.
3. N: Służy do wyświetlania numerów portów zamiast ich tłumaczeń.
4. A: Służy do wyświetlania słuchania, a także nie do podania gniazd wszystkich typów.
5. P: Służy do wyświetlania procesów wykorzystujących gniazdo.
Wynik poprzedniego polecenia pokazuje, który proces wykorzystuje, który port. Możesz także wydać następujące polecenie:
$ sudo ss -tup -a sport =: 80
Tutaj sport oznacza port źródłowy.
Te dwa podejścia mogą pomóc w znalezieniu identyfikatorów procesów podłączonych do różnych portów.
3. Polecenie NetStat
Polecenie NetStat pokazuje informacje o sieci i może być używane do rozwiązania problemów lub zmiany sposobu konfigurowania sieci. Może również obserwować bliskie obserwacje połączeń sieciowych.
To polecenie jest często używane do zobaczenia informacji o połączeniach przychodzących i wychodzących, tabelach routingu, statystykach słuchania i użytkowania. Chociaż w ostatnich latach został przestarzały, NetStat jest nadal użytecznym narzędziem do analizy sieci.
Za pomocą polecenia GREP NetStat może określić, który proces lub usługa korzysta z określonego portu (wspominając o porcie):
$ sudo netstat -ltnp | grep -w ': 80'
Opcje używane tutaj można sklasyfikować w następujący sposób:
1. T: Pokazuje tylko połączenie TCP.
2. L: Służy do wyświetlania wyników na liście.
3. N: Wyświetla adresy i numery portów w formacie numerycznym.
4. P: Wyświetla nazwę PID i programu, które są powiązane z każdym gniazdem.
4. Polecenie fuser
Polecenie Fuser określa procesy wykorzystujące pliki lub gniazda. Możesz go użyć do listy usług, które działają na określonym porcie. Weźmy przykład portu 3306 i zobaczmy, jakie usługi są tutaj uruchomione:
$ sudo fuser 3306/tcp
Daje nam to numery procesów za pomocą tego portu. Możesz użyć tego numeru procesu, aby znaleźć odpowiednie nazwy procesów. Na przykład, jeśli numer procesu wynosi 15809, polecenie do użycia jest następujące:
$ ps -p 15809 -o comm =
Jednak niektóre narzędzia są wymagane do zidentyfikowania procesów wykorzystujących niestandardowy port. „LSOF” to narzędzie do odkrywania, jakie usługi są dostępne w sieci i jakich portów używają. Rozważ następujący przykład. To pokazuje, jak wymienić porty słuchowe UDP i TCP:
$ sudo lsof -pni | egrep "(UDP | Słuchaj)"
Poniżej znajduje się opis opcji używanych tutaj:
1. P: Tłumi wyszukiwanie nazwy usługi portu.
2. N: Wyświetla adresy sieciowe.
3. I: Wymienia gniazda IP.
Zarówno porty, jak i powiązane procesy są pokazane w wcześniej wspomnianym wyniku. W ten sposób jest szczególnie przydatny w procesach z portami bez zabezpieczenia.
Wniosek
W tym artykule rozmawialiśmy o czterech możliwych narzędziach linii poleceń Linux i dostarczyliśmy przykłady, jak je używać, aby dowiedzieć się, który proces słucha na określonym porcie.