Introductie
A port is a communication endpoint. Within an operating system, a port is opened or closed to data packets for specific processes or network services.
Meestal identificeren poorten een specifieke aan hen toegewezen netwerkservice. Dit kan worden gewijzigd door handmatig de service in te stellen om een andere poort te gebruiken, maar over het algemeen kunnen de standaardinstellingen worden gebruikt.
De eerste 1024 poorten (poortnummers 0
tot 1023
) worden aangeduid als bekende poortnummers en zijn gereserveerd voor de meest gebruikte services. Hieronder vallen SSH (poort 22
), HTTP (poort 80
), HTTPS (poort 443
).
Poortnummers boven 1024 worden aangeduid als ephemeral poorten.
- Poortnummers
1024
tot49151
worden de geregistreerde/gebruikerspoorten genoemd. - Poortnummers
49152
tot65535
worden de dynamische/privepoorten genoemd.
In deze handleiding zul je een ephemeral poort openen op Linux, aangezien de meest voorkomende services de bekende poorten gebruiken.
Implementeer je applicaties vanuit GitHub met behulp van DigitalOcean App Platform. Laat DigitalOcean zich richten op het schalen van je app.
Vereisten
Om deze handleiding te voltooien, heb je nodig:
- Vertrouwdheid met het gebruik van de terminal.
Lijst Alle Open Poorten
Voordat u een poort op Linux opent, moet u de lijst met alle open poorten controleren en een tijdelijke poort kiezen die niet op die lijst staat.
Gebruik het netstat
-commando om alle open poorten te vermelden, inclusief TCP en UDP, die de meest voorkomende protocollen zijn voor pakketoverdracht in de netwerklaag.
- netstat -lntu
Dit zal afdrukken:
- alle luisterende sockets (
-l
) - het poort nummer (
-n
) - TCP poorten (
-t
) - UDP poorten (
-u
)
OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:5432 :::* LISTEN
tcp6 0 0 ::1:6379 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
Opmerking: Als uw distributie geen netstat
heeft, kunt u het ss
-commando gebruiken om open poorten weer te geven door te controleren op luisterende sockets.
Controleer of u consistente uitvoer ontvangt met behulp van het ss
-commando om luisterende sockets met een open poort weer te geven:
- ss -lntu
Dit zal afdrukken:
OutputNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:5432 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:27017 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:6379 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 128 [::1]:5432 0.0.0.0:*
tcp LISTEN 0 128 [::1]:6379 0.0.0.0:*
tcp LISTEN 0 128 [::]:22 0.0.0.0:*
Dit geeft min of meer dezelfde open poorten als netstat
.
Een poort openen op Linux om TCP-verbindingen toe te staan
Open nu een gesloten poort en laat deze luisteren naar TCP-verbindingen.
Voor het doel van deze handleiding, zal je poort 4000
openen. Als die poort echter niet open is in jouw systeem, voel je vrij om een andere gesloten poort te kiezen. Zorg er gewoon voor dat deze groter is dan 1023
.
Zorg ervoor dat poort 4000
niet wordt gebruikt met behulp van het netstat
-commando:
- netstat -na | grep :4000
Of het ss
-commando:
- ss -na | grep :4000
De uitvoer moet leeg blijven, wat bevestigt dat deze momenteel niet wordt gebruikt, zodat je de poortregels handmatig kunt toevoegen aan de iptables firewall van het systeem.
Voor Ubuntu-gebruikers en systemen gebaseerd op ufw
Gebruik ufw
– de commandoregelclient voor de UncomplicatedFirewall.
Je opdrachten zullen lijken op:
- sudo ufw allow 4000
Zie Hoe je een ufw
-firewall instelt voor jouw distributie.
Opmerking:
- Ubuntu 14.0.4: “Specifieke poortreeksen toestaan”
- Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: “Toestaan van andere verbindingen / Specifieke poortbereiken”
- Debian 9/10/11: “Toestaan van andere verbindingen / Specifieke poortbereiken”
Voor CentOS en firewalld
-gebaseerde systemen
Gebruik firewall-cmd
– de command-line client voor de firewalld
daemon.
Je opdrachten zullen er als volgt uitzien:
- firewall-cmd --add-port=4000/tcp
Raadpleeg Hoe stel je firewalld
in voor jouw distributie.
Opmerking:
- CentOS 7/8: “Regels instellen voor je applicaties / Een poort openen voor je zones”
- Rocky Linux 8/9: “Regels instellen voor je applicaties / Een poort openen voor je zones”
Voor andere Linux-distributies
Gebruik iptables
om de IPv4-pakketfilterregels van het systeem te wijzigen.
- iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
Raadpleeg Hoe stel je een firewall in met iptables
voor jouw distributie.
Opmerking:
- Ubuntu 12.04: “Een Basis Firewall”
- Ubuntu 14.04: “Accepteer Andere Noodzakelijke Verbindingen”
Test de Nieuw Geopende Poort voor TCP-verbindingen
Nu je succesvol een nieuwe TCP-poort hebt geopend, is het tijd om deze te testen.
Start eerst netcat (nc
) en luister (-l
) op poort (-p
) 4000
, terwijl je de output van ls
naar elke verbonden client stuurt:
- ls | nc -l -p 4000
Nu, nadat een client een TCP-verbinding heeft geopend op poort 4000
, ontvangen ze de output van ls
. Laat deze sessie voor nu met rust.
Open een andere terminalsessie op dezelfde machine.
Aangezien je een TCP-poort hebt geopend, gebruik telnet
om te controleren op TCP-connectiviteit. Als de opdracht niet bestaat, installeer deze dan met je pakketbeheerder.
Voer je server-IP en het poortnummer in (4000
in dit voorbeeld) en voer deze opdracht uit:
- telnet localhost 4000
Deze opdracht probeert een TCP-verbinding te openen op localhost
op poort 4000
.
Je krijgt een vergelijkbare output als dit, wat aangeeft dat er een verbinding tot stand is gebracht met het luisterende programma (nc
):
OutputTrying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
while.sh
De output van ls
(while.sh
, in dit voorbeeld) is ook naar de client gestuurd, wat wijst op een succesvolle TCP-verbinding.
Gebruik nmap
om te controleren of de poort (-p
) open staat:
- nmap localhost -p 4000
Met dit commando wordt de open poort gecontroleerd:
OutputStarting Nmap 7.60 ( https://nmap.org ) at 2020-01-18 21:51 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
4000/tcp open remoteanything
Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds
De poort is geopend. U heeft succesvol een nieuwe poort geopend op uw Linux systeem.
Let op: nmap
vermeldt alleen geopende poorten die momenteel een luisterende toepassing hebben. Als u geen luisterende toepassing gebruikt, zoals netcat, wordt de poort 4000
als gesloten weergegeven omdat er momenteel geen toepassing luistert op die poort. Op dezelfde manier zal telnet
ook niet werken omdat het ook een luisterende toepassing nodig heeft om aan te binden. Dit is de reden waarom nc
zo’n handige tool is. Hiermee simuleert u dergelijke omgevingen met een eenvoudig commando.
Maar dit is slechts tijdelijk, aangezien de wijzigingen telkens worden gereset wanneer u het systeem opnieuw opstart.
Regels behouden
De aanpak die in dit artikel wordt gepresenteerd, zal de firewallregels slechts tijdelijk bijwerken totdat het systeem wordt uitgeschakeld of opnieuw wordt opgestart. Dus vergelijkbare stappen moeten worden herhaald om dezelfde poort opnieuw te openen na een herstart.
Voor ufw
Firewall
ufw
-regels worden niet gereset bij het opnieuw opstarten. Dit komt doordat het is geïntegreerd in het opstartproces, en de kernel slaat de firewallregels op met behulp van ufw
door de juiste configuratiebestanden toe te passen.
Voor firewalld
Je moet de --permanent
-vlag toepassen.
Raadpleeg Hoe je firewalld
instelt voor jouw distributie.
Opmerking:
- CentOS 7/8: “Regels instellen voor jouw applicaties”
- Rocky Linux 8/9: “Regels instellen voor jouw applicaties”
Voor iptables
Je moet de configuratieregels opslaan. Deze tutorials raden iptables-persistent
aan.
Raadpleeg Hoe je een firewall instelt met iptables
voor jouw distributie.
Opmerking:
- Ubuntu 12.04: “Iptables-regels opslaan”
- Ubuntu 14.04: “Je Iptables-configuratie opslaan”
Conclusie
In deze tutorial heb je geleerd hoe je een nieuwe poort op Linux kunt openen en instellen voor inkomende verbindingen. Je hebt ook netstat
, ss
, telnet
, nc
en nmap
gebruikt.
Ga verder met leren over Hoe de Iptables Firewall Werkt, Een Diepe Duik in de Iptables en Netfilter Architectuur, Het Begrijpen van Sockets, en Hoe je Top, Netstat, Du & Andere Tools Gebruikt om Server Resources te Monitoren.
Source:
https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux