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.

Geralmente, 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, os padrões podem ser utilizados.

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 usados. Isso inclui SSH (porta 22), HTTP (porta 80), HTTPS (porta 443).

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 usam as portas bem conhecidas.

Implante suas aplicações do GitHub usando Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean focar na escalabilidade do seu aplicativo.

Pré-requisitos

Para concluir este tutorial, você precisará de:

Listar Todas as Portas Abertas

Antes de abrir uma porta no Linux, é necessário verificar a lista de todas as portas abertas e escolher uma porta efêmera que não esteja nessa 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

Isso imprimirá:

  • todos os soquetes ouvindo (-l)
  • a 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

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

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

  1. ss -lntu

Isso 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:*

Isso 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-a escutar por conexões TCP.

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

Assegure-se de que a porta 4000 não esteja 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 em branco, verificando assim que 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 ufw – o cliente de linha de comando para o Firewall Descomplicado.

Seus comandos se parecerão com:

  1. sudo ufw allow 4000

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

Nota:

  • Ubuntu 14.0.4: “Permitir Intervalos de Portas Específicas”
  • Ubuntu 16.04/18.04/20.04/22.04: “Permitindo Outras Conexões / Intervalos de Portas Específicos”
  • Debian 9/10/11: “Permitindo Outras Conexões / Intervalos de Portas Específicos”

Para sistemas baseados no CentOS e no firewalld

Utilize o 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 a sua distribuição.

Observação:

  • No 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

Utilize o 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 a sua distribuição.

Observação:

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

Testar a Nova Porta 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 ouça (-l) na porta (-p) 4000, enquanto envia a saída do comando 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 comando ls. Deixe esta sessão sozinha por enquanto.

Abra outra sessão do 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.

Insira 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 de escuta (nc):

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

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

Use o 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 em 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 de escuta, como o netcat, isso exibirá a porta 4000 como fechada, já que atualmente não há nenhuma aplicação ouvindo nessa porta. Da mesma forma, o telnet também não funcionará, já que também precisa de uma aplicação de escuta para se vincular. Esta é a razão pela qual o nc é uma ferramenta tão útil. Isso simula tais ambientes em um comando simples.

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

Regras Persistentes

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 Firewall ufw

Regras do ufw não são redefinidas ao reiniciar. Isso ocorre porque está integrado ao processo de inicialização, e o kernel salva as regras do firewall usando o ufw aplicando arquivos de configuração apropriados.

Para firewalld

Você precisará aplicar a flag --permanent.

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

Nota:

  • CentOS 7/8: “Definindo Regras para suas Aplicações”
  • Rocky Linux 8/9: “Definindo 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 sua distribuição.

Nota:

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

Conclusão

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

Continue aprendendo com Como funciona o Firewall do Iptables, Uma Profundidade na Arquitetura do Iptables e do Netfilter, Compreensão de 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