Jak znaleźć liczbę otwartych portów w systemie Linux?

17

Jak znaleźć liczbę otwartych portów w systemie Linux? Chcę sprawdzić, czy brakuje mi portów. Jak mogę sprawdzić limit mojego systemu operacyjnego?

erotsppa
źródło
2
Co robisz, że boisz się, że zabraknie Ci portów?
MDMarra,

Odpowiedzi:

27

W nowoczesnym systemie Linux użyj narzędzia ss (socket stats).

$ ss -s
Total: 10160 (kernel 10262)
TCP:   10349 (estab 8886, closed 408, orphaned 0, synrecv 0, timewait 393/0), ports 3147

Transport Total     IP        IPv6
*         10262     -         -        
RAW       0         0         0        
UDP       5         5         0        
TCP       9941      9941      0        
INET      9946      9946      0        
FRAG      0         0         0        
Curtis Doty
źródło
9
netstat -an | grep ESTABLISHED | wc -l

poda liczbę otwartych portów, w moim przypadku 32.

cat /proc/sys/net/ipv4/ip_local_port_range

Zwróci coś takiego:

32768 61000

co oznacza, 61000 - 32768 - $ OPENPORTS = Dostępne porty

Na moim pudełku to:

61000-32768-32 = 28200 dostępnych numerów portów.

Grizly
źródło
-a46 nie działał. Jakaś pomoc?
erotsppa
Jaką dystrybucję prowadzisz? (działa na serwerze Ubuntu 10.04 LTS). Oczywiście, jeśli nie masz zainstalowanego IPv6, po prostu użyj netstat -a.
Grizly
Testowany na moim polu CentOS, wydaje się, że zawiesza się, jeśli nie użyjesz „-n”, aby zatrzymać rozpoznawanie nazw. (netstat -an | grep ESTABLISHED | wc -l)
Grizly
Właśnie widziałem poniżej „ss”, to niesamowite, nie wiedziałem o tym… znacznie lepiej! Użyj ip_local_port_range, aby określić, na co zezwala twój Linux, ale pokazuje ci to, czego aktualnie używasz, w znacznie bardziej dostępnym formacie!
Grizly,
8

Jak wspomnieli inni, netstat to narzędzie, za pomocą którego można określić, które porty są aktualnie używane. Jeśli chodzi o limity, liczba dostępnych portów to 16-bitowa liczba całkowita bez znaku, co daje zakres 0-65535. Porty, które są dostępne dla aplikacji do połączenia, to zarezerwowane porty uprzywilejowane / root (0-1024) oraz cokolwiek, co nie jest objęte twoim efemerycznym zakresem portów.

Możesz wyświetlić efemeryczne porty, uruchamiając cat /proc/sys/net/ipv4/ip_local_port_range.

Aby zmodyfikować to trwale, musisz dodać / zmodyfikować „net.ipv4.ip_local_port_range” w pliku /etc/sysctl.conf lub interaktywnie z sysctl -n net.ipv4.ip_local_port_range="<start_port> <end_port>"

Alex
źródło
1
wybieranie nitów, ale nie jest to dokładnie limit IPv4. Jest to limit tcp / udp. i te działają niezależnie od ipv4. (np. ipv6 nie robi nic dla warstwy transportowej)
Joel K
Ach, masz rację. Usunąłem odniesienie IPV4 w mojej odpowiedzi.
Alex
1

Osobiście wolę nmap. Możesz znaleźć stan wszystkich portów, wydając cel nmap -P 1-65535. Większość dystrybucji powinna mieć ten pakiet dostępny za pośrednictwem menedżera pakietów.

ThaKidd KG5ORD
źródło
1

Próbować

# lsof -n -i -P 

Dla kompletności :)

Jurij
źródło
0

netstat pozwoli ci zobaczyć, które porty są otwarte, wykonaj „netstat -”, aby zobaczyć, co najlepiej odpowiada Twoim potrzebom.

jer.salamon
źródło
1
netstat --inetnajbardziej pomoże.
Paul Tomblin,
Miałem na myśli -? brakująca postać.
jer.salamon
lub przeczytaj stronę podręcznika
MDMarra
Dołącz także --inet6 (skrót od obu: -4 -6), aby uzyskać gniazda IPv6 i gniazda agnostyczne ip (to drugie ustawienie domyślne na hostach z dwoma stosami, patrz sekcja 3.7).
Tobu,
0

„nmap localhost” da ci wszystkie otwarte porty i usługi na nich działające.

Vivek Varghese Cherian
źródło
1
Nie naprawdę, to tylko porty skanowania dla 127.0.0.1, nie dla WAN IP
Lucas Kauffman
0

netstat -tulnp

Argumenty programu netstat są wymienione poniżej:

*

  t - Show TCP
*

  u - Show UDP
*

  l - Show only listening processes (netstat can show both listening and all established connections, i.e. as a client too)
*

  n - Do not resolve network IP address names or port numbers
*

  p - Show the process name that is listening on the port
Rajat
źródło
0

użyj następującego polecenia na terminalu, aby sprawdzić wszystkie porty

netstat -lntu

Aby zobaczyć status określonego portu, użyj następującego polecenia

netstat -an | grep ':6060'

zastąp 6060 swoim numerem portu.

Samuel
źródło