overzicht
We weten allemaal dat een poort alleen kan worden gebruikt door een enkele toepassing of service op hetzelfde moment. Soms moeten we weten welk proces luistert op een specifieke poort.
in deze tutorial zullen we verschillende benaderingen zien om het proces te vinden dat op een bepaalde poort in Linux luistert.
root Permission
In Linux kan alleen de root gebruiker of de proceseigenaar de gedetailleerde informatie van het proces verkrijgen.,
wanneer we een proces willen controleren dat op een bepaalde poort luistert, weten we niet van wie het proces is.
met root-rechten kunnen we alle benodigde informatie over het proces verkrijgen, bijvoorbeeld de proces-id.
daarom moeten we onze netwerk tools mogelijk starten met de root gebruiker (of met sudo).
met behulp van netstat
het netstat commando is een lid van het net-tools pakket.
in het verleden werd het voorgeïnstalleerd in veel Linux distributies. Echter, het net-tools pakket is niet bijgewerkt sinds 2011.,
vanwege het gebrek aan ondersteuning van moderne Linux kernel functies en andere redenen, is het net-tools pakket verouderd.
Dat gezegd hebbende, netstat zelf wordt nog steeds veel gebruikt, dus laten we eens kijken hoe het kan helpen.
laten we eerst een voorbeeld uitvoer van het netstat Commando bekijken:
met de opties ltnup toont netstat ons alle poorten in gebruik in het bovenstaande voorbeeld.,
laten we eens kijken wat de opties betekenen:
- l – Toon alleen luistersockets
- t – toon TCP – verbindingen
- n – Toon adressen in een numerieke vorm
- u – Toon UDP-verbindingen
- p-toon proces-id/programmanaam
als we de bovenstaande uitvoer bekijken, is de laatste kolom precies wat we zoeken: de PID en proces naam luisteren op een bepaalde poort.
We kunnen gewoon de netstat-uitvoer naar het grep-Commando doorsluizen om de procesinformatie op een individuele poort te krijgen.,
bijvoorbeeld, laten we eens kijken welk proces luistert op poort 22:
root# netstat -ltnup | grep ':22'tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 575/sshd
gebruikmakend van ss
In de vorige paragraaf hebben we besproken dat het net-tools pakket verouderd is.
het ss commando is de vervanging van het netstat Commando.
laten we nu eens kijken hoe we het ss commando gebruiken om te zien welk proces luistert op poort 22:
als we de opties controleren, vinden we dat de opties die we aan het ss Commando hebben doorgegeven hetzelfde zijn als we aan netstat hebben doorgegeven.,
het enige verschil is dat we gebruik maakten van het state-filter van het SS hulpprogramma in plaats van een extra grep proces om de uitvoer te filteren.
net als de uitvoer van het netstat Commando, ligt de verwachte procesinformatie ook in de laatste kolom.
met behulp van lsof
kan het lsof Commando alle geopende bestanden in een Linux systeem weergeven.,
we kunnen het lsof commando gebruiken om het proces te vinden met behulp van een specifieke poort met de optie-i :port_number:
root# lsof -i :22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)
De eerste vier kolommen in de bovenstaande uitvoer vertellen ons de procesnaam die op poort 22 luistert en zijn PID, eigenaar en de bestandsdescriptor.
We kunnen multiple-i :port doorgeven aan het lsof commando om de processen te achterhalen die op verschillende poorten luisteren:
root# lsof -i :22 -i :68COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEsshd 575 root 3u IPv4 19373 0t0 TCP *:ssh (LISTEN)dhcpcd 8822 root 10u IPv4 49601 0t0 UDP *:bootpc
met behulp van fuser
het fuser utility geeft aan welke processen bestanden met naam, sockets of bestandssystemen gebruiken., Het is opgenomen in het psmisc-pakket en standaard voorgeïnstalleerd op veel moderne Linux-distributies.
we kunnen dit gebruiken om de informatie te bekijken van het proces dat op een specifieke poort draait. Laten we nogmaals de PID van de processing listening tcp-poort 22:
root# fuser 22/tcp22/tcp: 575
de bovenstaande uitvoer is vrij eenvoudig. We weten dat het proces met PID 575 luistert op tcp poort 22.
echter, het vertelt ons geen gedetailleerde informatie over het proces, bijvoorbeeld, Wat is de naam van proces 575? wie is de eigenaar van het proces? en zo verder.,
als we meer details over het proces willen verkrijgen, kunnen we de optie “-v” doorgeven aan het fuser commando om een uitgebreide uitvoer te hebben:
root# fuser -v 22/tcp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd
met behulp van het fuser Commando, kunnen we ook de lopende procesinformatie controleren op meerdere TCP of UDP poorten in één shot:
root# fuser -v 22/tcp 68/udp USER PID ACCESS COMMAND22/tcp: root 575 F.... sshd68/udp: root 8822 F.... dhcpcd
conclusie
in dit korte artikel hebben we vier verschillende Linux command-line utilities met voorbeelden geleerd om de informatie te achterhalen van het proces dat op een bepaalde poort luistert.,
ze zijn allemaal zeer krachtige tools om in ons arsenaal te hebben op de Linux command line.