Como Abrir uma Porta no Linux

Introdução

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.

Normalmente, as portas identificam um serviço de rede específico atribuído a elas. Isso pode ser alterado configurando manualmente o serviço para usar uma porta diferente, mas, em geral, as configurações padrão podem ser utilizadas.

As primeiras 1024 portas (números de porta 0 a 1023) são chamadas de números de porta bem conhecidos e são reservadas para os serviços mais comumente utilizados. Isso inclui SSH (porta 22), HTTP (porta 80), HTTPS (porta 443).

Os números de porta acima de 1024 são chamados de portas efêmeras.

  • Os números de porta 1024 a 49151 são chamados de portas registradas/usuário.
  • Os números de porta 49152 a 65535 são chamados de portas dinâmicas/privadas.

Neste tutorial, você abrirá uma porta efêmera no Linux, já que os serviços mais comuns utilizam as portas bem conhecidas.

Implante suas aplicações do GitHub usando a Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean se concentrar em dimensionar sua aplicação.

Pré-requisitos

Para concluir este tutorial, você precisará:

Listar Todas as Portas Abertas

Antes de abrir uma porta no Linux, você deve verificar a lista de todas as portas abertas e escolher uma porta efêmera para abrir que não esteja nesta lista.

Use o comando netstat para listar todas as portas abertas, incluindo TCP e UDP, que são os protocolos mais comuns para transmissão de pacotes na camada de rede.

  1. netstat -lntu

Isto irá imprimir:

  • todos os sockets ouvindo (-l)
  • o número da porta (-n)
  • Portas TCP (-t)
  • Portas UDP (-u)
Output
Active 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

Nota: Se sua distribuição não tiver netstat, você pode usar o comando ss para exibir as portas abertas verificando os sockets ouvintes.

Verifique se você está recebendo saídas consistentes usando o comando ss para listar sockets ouvintes com uma porta aberta:

  1. ss -lntu

Isto irá imprimir:

Output
Netid 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:*

Isto fornece mais ou menos as mesmas portas abertas que o netstat.

Abrindo uma Porta no Linux para Permitir Conexões TCP

Agora, abra uma porta fechada e faça com que ela esteja pronta para conexões TCP.

Para os propósitos deste tutorial, você estará abrindo a porta 4000. No entanto, se essa porta não estiver aberta no seu sistema, sinta-se à vontade para escolher outra porta fechada. Apenas certifique-se de que ela seja maior que 1023.

Verifique se a porta 4000 não está sendo usada usando o comando netstat:

  1. netstat -na | grep :4000

Ou o comando ss:

  1. ss -na | grep :4000

A saída deve permanecer vazia, verificando assim que ela não está sendo usada no momento, para que você possa adicionar as regras da porta manualmente ao firewall iptables do sistema.

Para Usuários do Ubuntu e Sistemas Baseados em ufw

Use o ufw – o cliente de linha de comando para o UncomplicatedFirewall.

Seus comandos serão semelhantes a:

  1. sudo ufw allow 4000

Consulte Como Configurar um Firewall ufw para sua distribuição.

Nota:

  • Ubuntu 14.0.4: “Permitir Intervalos Específicos de Portas”
  • Ubuntu 16.0.4/18.0.4/20.0.4/22.0.4: “Permitindo Outras Conexões / Faixas de Portas Específicas”
  • Debian 9/10/11: “Permitindo Outras Conexões / Faixas de Portas Específicas”

Para CentOS e Sistemas Baseados em firewalld

Use firewall-cmd – o cliente de linha de comando para o daemon firewalld.

Seus comandos serão semelhantes a:

  1. firewall-cmd --add-port=4000/tcp

Consulte Como Configurar o firewalld para sua distribuição.

Observação:

  • CentOS 7/8: “Definindo Regras para suas Aplicações / Abrindo uma Porta para suas Zonas”
  • Rocky Linux 8/9: “Definindo Regras para suas Aplicações / Abrindo uma Porta para suas Zonas”

Para Outras Distribuições Linux

Use iptables para alterar as regras do filtro de pacotes IPv4 do sistema.

  1. iptables -A INPUT -p tcp --dport 4000 -j ACCEPT

Consulte Como Configurar um Firewall Usando iptables para sua distribuição.

Observação:

  • Ubuntu 12.04: “Um Firewall Básico”
  • Ubuntu 14.04: “Aceitar Outras Conexões Necessárias”

Testar a Porta Recém-Aberta para Conexões TCP

Agora que você abriu com sucesso uma nova porta TCP, é hora de testá-la.

Primeiro, inicie o netcat (nc) e escute (-l) na porta (-p) 4000, enquanto envia a saída do ls para qualquer cliente conectado:

  1. ls | nc -l -p 4000

Agora, depois que um cliente abrir uma conexão TCP na porta 4000, ele receberá a saída do ls. Deixe esta sessão sozinha por enquanto.

Abra outra sessão de terminal na mesma máquina.

Como você abriu uma porta TCP, use o telnet para verificar a Conectividade TCP. Se o comando não existir, instale-o usando seu gerenciador de pacotes.

Informe o IP do seu servidor e o número da porta (4000 neste exemplo) e execute este comando:

  1. telnet localhost 4000

Este comando tenta abrir uma conexão TCP em localhost na porta 4000.

Você receberá uma saída semelhante a esta, indicando que uma conexão foi estabelecida com o programa ouvinte (nc):

Output
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. while.sh

A saída do ls (while.sh, neste exemplo) também foi enviada ao cliente, indicando uma conexão TCP bem-sucedida.

Use nmap para verificar se a porta (-p) está aberta:

  1. nmap localhost -p 4000

Este comando verificará a porta aberta:

Output
Starting 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

A porta foi aberta. Você abriu com sucesso uma nova porta no seu sistema Linux.

Nota: nmap apenas lista portas abertas que têm uma aplicação atualmente ouvindo. Se você não estiver usando nenhuma aplicação ouvindo, como o netcat, isso exibirá a porta 4000 como fechada, já que não há nenhuma aplicação ouvindo nessa porta atualmente. Da mesma forma, telnet também não funcionará, já que ele também precisa de uma aplicação ouvindo para se vincular. Essa é a razão pela qual nc é uma ferramenta tão útil. Isso simula tais ambientes em um comando simples.

Mas isso é apenas temporário, já que as alterações serão redefinidas toda vez que você reiniciar o sistema.

Regras Persistindo

A abordagem apresentada neste artigo apenas atualizará temporariamente as regras do firewall até que o sistema seja desligado ou reiniciado. Portanto, etapas semelhantes devem ser repetidas para abrir a mesma porta novamente após uma reinicialização.

Para o Firewall ufw

ufw rules não são redefinidos durante a reinicialização. Isso ocorre porque está integrado ao processo de inicialização, e o kernel salva as regras do firewall usando ufw aplicando os arquivos de configuração apropriados.

Para firewalld

Você precisará aplicar a bandeira --permanent.

Consulte Como Configurar o firewalld para a sua distribuição.

Nota:

  • CentOS 7/8: “Configurando Regras para suas Aplicações”
  • Rocky Linux 8/9: “Configurando Regras para suas Aplicações”

Para iptables

Você precisará salvar as regras de configuração. Esses tutoriais recomendam o iptables-persistent.

Consulte Como Configurar um Firewall Usando iptables para a sua distribuição.

Nota:

  • Ubuntu 12.04: “Salvando Regras do Iptables”
  • Ubuntu 14.04: “Salvando sua Configuração do Iptables”

Conclusão

Neste tutorial, você aprendeu como abrir uma nova porta no Linux e configurá-la para conexões de entrada. Você também utilizou netstat, ss, telnet, nc e nmap.

Continue seu aprendizado com Como o Firewall Iptables Funciona, Uma Profundidade na Arquitetura do Iptables e Netfilter, Compreendendo Sockets e Como Usar Top, Netstat, Du e Outras Ferramentas para Monitorar Recursos do Servidor.

Source:
https://www.digitalocean.com/community/tutorials/opening-a-port-on-linux