Vraag Controleer of de poort open of gesloten is op een Linux-server?


Hoe kan ik controleren of een poort luistert op een Linux-server?


170
2017-09-07 17:24


oorsprong


Het is niet helemaal duidelijk wat je vraagt. Wat bedoel je met "open"? Bedoel je dat een server op die poort luistert? Of bedoel je dat het is toegestaan ​​door de systeemfirewall? Of wat? - David Schwartz
Ik denk dat een poort wordt geblokkeerd op mijn server en deze wil deblokkeren / opnieuw openen. - James Anderson
netstat -an | grep PORTNUMBER | grep -i listen Als de uitvoer leeg is, is de poort niet in gebruik. - automatix


antwoorden:


U kunt controleren of een proces luistert naar een TCP- of UDP-poort met netstat -tuplen.

Om te controleren of sommige poorten van buitenaf toegankelijk zijn (dit is waarschijnlijk wat je wilt) kun je een poortscanner gebruiken zoals nmap van een ander systeem. Het uitvoeren van Nmap op dezelfde host die u wilt controleren, is vrij nutteloos voor uw doel.


158
2017-09-07 17:31



GNU netstat kent de parameters -t, -u, -p, -l, -e, en -n. Dankzij de optiesparser kan het worden uitgedrukt als -tuplen. linux.die.net/man/8/netstat - joschi
Ook de telnet commando ondersteunt meestal alleen TCP, dus je hebt pech als de service die je wilt controleren op een ander protocol draait. - joschi
ja, ik gebruikte vensters vandaar de verwarring. - Dexter
nc is (beter) alternatief voor telnet. Het ondersteunt ook UDP. - Tsvetomir Dimitrov
Gebruik het met sudo: sudo netstat -tuplen. Dit geeft u processen die niet alleen van u zijn, maar ook van anderen, en die aanvullende details (zoals PID / Programmanaam) zal afdrukken als ze niet al als een niet-rootgebruiker worden weergegeven. - John Red


De snelste manier om te testen of een TCP-poort open is (inclusief eventuele hardwarefirewalls die je hebt), is om te typen vanaf een externe computer (bijvoorbeeld je bureaublad):

telnet myserver.com 80

Welke zal proberen om een ​​verbinding met poort 80 op die server te openen. Als je een time-out krijgt of weigert, is de poort niet open :)


83
2017-09-07 17:33



zegt dat het "telnet" niet erkent als een commando ... - James Anderson
"yum install telnet" om het telnet-clientpakket te installeren. - cjc
Zegt: telnet: maak verbinding met adres 82.165.148.224: Verbinding geweigerd - James Anderson
Hierboven geschreven: if you get a time out or deny, the port is not open - Industrial
Wat als je geen perms hebt om telnet te installeren? Is er nog een standaardtool? - KC Baltz


OK, kort samengevat, je hebt een server waarop je kunt inloggen. U wilt zien of er iets op een bepaalde poort luistert. Als root voer je uit:

netstat -nlp

dit toont een lijst met processen die luisteren op TCP- en UDP-poorten. U kunt het scannen (of grep) voor het proces waarin u geïnteresseerd bent en / of de poortnummers die u verwacht te zien.

Als het proces dat u verwacht niet aanwezig is, moet u dat proces opstarten en netstat opnieuw controleren. Als het proces daar is, maar het luistert op een interface en poort die je niet had verwacht, dan is er een configuratieprobleem (het zou bijvoorbeeld kunnen luisteren, maar alleen op de loopback-interface, zodat je 127.0.0.1:3306 en geen andere regels voor poort 3306, in het geval van de standaardconfiguratie voor MySQL).

Als het proces bezig is en het luistert op de poort die u verwacht, kunt u een "telnet" naar die poort proberen vanuit uw Macbook in uw kantoor / thuis, bijvoorbeeld

 telnet xxxxxxxxxxxx.co.uk 443

Hiermee wordt getest of (uitgaande van standaardpoorten) een webserver is geconfigureerd voor SSL. Merk op dat deze test met telnet alleen werkt als het proces luistert naar een TCP-poort. Als het een UDP-poort is, kunt u net zo goed proberen met welke client u ook gaat gebruiken om verbinding te maken. (Ik zie dat je poort 224 hebt gebruikt. Dit is masqdialer en ik heb geen idee wat dat is).

Als de service er is, maar je kunt er niet extern uitkomen, dan is er een firewall die je blokkeert. Voer in dat geval:

 iptables -L -n

Hiermee worden alle firewallregels weergegeven die zijn gedefinieerd op uw systeem. U kunt dit posten, maar als u niet alles in de INPUT-keten toestaat, moet u waarschijnlijk expliciet verkeer op de betreffende poort toestaan:

 iptables -I INPUT -p tcp --dport 224 -j ACCEPT

of iets in die richting. Voer uw firewallopdrachten niet blindelings uit op basis van wat een onbekende u op internet heeft verteld. Overweeg wat je aan het doen bent.

Als uw firewall op de box het verkeer toestaat dat u wilt, kan uw hostingbedrijf mogelijk een firewall uitvoeren (bijv. Ze staan ​​alleen SSH (22 / tcp), HTTP (80 / tcp) en HTTPS (443 / tcp) toe en het weigeren van alle andere inkomende verkeer). In dit geval moet u een helpdeskkaartje openen om dit probleem op te lossen, hoewel ik vermoed dat er mogelijk iets in uw cPanel is dat dit toestaat.


23
2017-09-07 20:01



Zou je kunnen toevoegen hoe je de opdracht iptables -I ongedaan kunt maken? Bedankt!! - Evgeny
"iptables -D" gevolgd door wat je nog meer had na de "-I" in de originele opdracht. Zoek in principe de documentatie op. - cjc


Ik gebruik de combinatie van netstaten lsof:

netstat -an | grep <portnumber>
lsof -i:<portnumber>

Om te zien of de poort wordt gebruikt en wat deze gebruikt.


8
2018-03-28 19:32



Niets prompts met of zonder sudo - Dheeraj Thedijje
@DheerajThedijje - dan is die poort niet open - warren
Ja dat was het niet, snap het. - Dheeraj Thedijje


Als u verbonden bent met het systeem en een opdracht als root kunt uitvoeren, kunt u de uitvoer van iptables controleren

iptables -L -vn

dit zal de firewallregels vermelden en welke poorten een open doelwit zijn ACCEPT en elk expliciet gesloten poortdoel REJECT.


7
2017-09-07 17:57



En als je firewalld hebt, is het eenvoudiger firewall-cmd --query-port=port/protocolb.v. firewall-cmd --query-port=80/tcp. - Agostino


lsof -i :ssh zal alle processen weergeven met de ssh-poort open, zowel luister- als actieve verbindingen.


5
2018-01-25 21:45



Voorvoegsel sudo als er geen uitvoer wordt geretourneerd. - Elijah Lynn