Um servidor na internet recebe milhares de tentativas de entrada por dia. Não são hackers a olhar para si: são programas automáticos que percorrem todos os endereços da internet a experimentar portas. Se encontram uma aberta, experimentam palavras-passe; se encontram um programa antigo, experimentam falhas conhecidas. Cada porta aberta de que não precisa é mais uma entrada para esses programas, e fechá-la não custa nada.
A maioria das máquinas que o Simplio vê tem a porta 22 (a de administração) aberta a toda a gente desde o dia em que foram criadas, porque é assim que vem por defeito. É como deixar a porta da sala dos contadores aberta para a rua. Este guia ensina a ver que portas a sua máquina tem abertas, a fechar as que sobram e a abrir a de administração só a partir do seu escritório e só enquanto a usa.
Antes de começar: o que significa cada coisa
- Porta
- Uma das "portas" numeradas (de 1 a 65535) pelas quais um servidor atende pedidos. Cada serviço escuta numa: a web na 80 e na 443, a administração na 22. Uma porta aberta na firewall é uma porta à qual qualquer pessoa pode bater.
- Firewall
- O filtro que decide que portas estão abertas e a partir de que endereços. No Lightsail chama-se firewall; no EC2, grupo de segurança. O que não está na lista está fechado.
- Grupo de segurança
- A firewall do EC2. Uma lista de regras que se pode aplicar a várias máquinas ao mesmo tempo. Cada máquina tem pelo menos um.
- Endereço IP
- O número que identifica a sua ligação na internet, por exemplo 83.45.120.7. O seu escritório tem um (ou vários); a partir de casa terá outro. É o que a firewall usa para dizer "este sim, os outros não".
- 0.0.0.0/0
- É assim que a AWS escreve "toda a internet". Uma regra com origem 0.0.0.0/0 está aberta ao mundo. Para IPv6 é ::/0.
- SSH (porta 22)
- A forma de administrar uma máquina Linux a partir de um terminal. Com palavra-passe ou com chave. É o que os robôs atacam sem descanso.
- RDP (porta 3389)
- O ambiente de trabalho remoto do Windows. O equivalente à 22 em máquinas Windows, igualmente atacado.
- Session Manager
- Uma forma de abrir um terminal numa máquina EC2 a partir da consola da AWS sem ter nenhuma porta aberta. A máquina sai em direção à AWS em vez de esperar que você entre.
Passo a passo
Decida que portas a sua máquina precisa realmente
Para um site, a lista é curta: 80 (HTTP, para redirecionar para HTTPS) e 443 (HTTPS). Mais nada. Tudo o que não for isso é para administrar, e quem administra é você, não o mundo.
Portas que não deviam estar nunca abertas a toda a internet:
- 22 (SSH) e 3389 (ambiente de trabalho remoto do Windows): administração. Só ao seu IP, e de preferência só quando a usa.
- 3306 (MySQL/MariaDB) e 5432 (PostgreSQL): a base de dados. Se o site está na mesma máquina, não precisa de ter a porta aberta para fora de todo. Se há outra máquina que se liga, abra-a só ao IP dessa máquina.
- 21 (FTP): envia ficheiros sem cifrar. Se precisa de enviar coisas, use SFTP, que vai pela 22.
- 10000 (Webmin), 8080 e 8443 (painéis e ambientes de teste), 9090, 5000: painéis de administração que muitas vezes têm palavras-passe fracas ou versões velhas.
- 25 (correio de saída): a AWS limita-a por defeito e quase nenhum site precisa dela aberta para dentro.
Se na sua firewall há uma porta que não sabe para que serve, a resposta certa é fechá-la e ver se alguma coisa deixa de funcionar. Normalmente, nada.
Reveja a firewall de uma máquina Lightsail
Entre no Lightsail, clique no nome da máquina e abra o separador Rede. Em Firewall IPv4 está a lista de regras, cada uma com aplicação, protocolo, porta e a coluna Restrito a. Se essa coluna diz "Qualquer endereço IPv4", essa porta está aberta ao mundo.
O que deve ficar:
- HTTP, TCP, 80, qualquer endereço.
- HTTPS, TCP, 443, qualquer endereço.
- SSH, TCP, 22, restrito ao seu IP (passo 4), ou simplesmente sem regra quando não a usa.
Para apagar uma regra, clique no ícone do caixote do lixo à direita. Para a editar, no lápis. As alterações aplicam-se no momento, sem reiniciar. Se tem o IPv6 ativado, repita no bloco Firewall IPv6: é uma lista à parte e esquece-se muitas vezes.
Faça isto em cada máquina: a firewall do Lightsail é por instância e não se partilha.
Reveja os grupos de segurança de uma máquina EC2
Entre no EC2, Instâncias, clique na máquina e abra o separador Segurança. Verá os grupos de segurança que tem atribuídos (pode haver vários; as regras somam-se) e, por baixo, as Regras de entrada combinadas. Repare na coluna Origem:
0.0.0.0/0ou::/0significa aberto ao mundo.Para alterar algo, clique no nome do grupo, separador Regras de entrada, botão Editar regras de entrada. Apague as que sobram com Eliminar e clique em Guardar regras. As regras de saída deixe-as como estão: por defeito permitem tudo para fora e isso é o normal.
Duas coisas que acontecem muito no EC2:
- Um grupo chamado
launch-wizard-3ou parecido, criado à pressa ao lançar a máquina, com a 22 aberta a todos. É o que há que corrigir. - O mesmo grupo atribuído ao site e à base de dados. Então a base de dados tem a 80 aberta e o site a 3306. Faça um grupo por função:
webcom 80 e 443,bbddcom 3306 só a partir do grupoweb(em Origem pode escrever o identificador de outro grupo em vez de um IP).
Veja também Grupos de segurança no menu da esquerda: muitas vezes há grupos antigos sem nenhuma máquina atribuída. Apague-os para não se confundir.
- Um grupo chamado
Abra a 22 só ao seu IP, e só enquanto a usa
Descubra o seu IP público procurando "qual é o meu IP" no navegador, a partir da rede em que vai trabalhar. No Lightsail, separador Rede, na regra SSH clique no lápis, marque Restringir a endereço IP e escreva o seu. No EC2, ao editar a regra da 22, em Origem escolha O meu IP e a AWS preenche-o sozinha.
Se trabalha a partir de vários sítios (escritório e casa), adicione uma regra por sítio, não uma aberta a todos. E se a sua ligação muda de IP com frequência (é habitual na fibra doméstica e sempre com dados móveis), conte que terá de a atualizar de vez em quando: é um minuto.
O hábito realmente bom: apague a regra da 22 quando terminar. Entra na máquina poucas vezes por mês; o resto do tempo essa porta pode não existir. Quando precisar dela, adiciona-a com o seu IP, trabalha e retira-a. Sem porta 22 não há ataques de palavra-passe por SSH, nem mais programas para vigiar.
Confirme a partir de fora que não fica nada aberto
Confie, mas confirme. A partir de um terminal do seu computador (no Windows, PowerShell), execute contra o IP da sua máquina:
Test-NetConnection 83.45.120.7 -Port 3306No Mac ou Linux,
nc -zv 83.45.120.7 3306. Se responder que ligou, a porta está aberta para fora e há que rever o passo anterior. Faça o teste com 22, 3306, 3389, 10000 e 8080. Também há páginas que o verificam por si (procure "verificar portas abertas"); procure fazê-lo a partir de uma rede diferente da que tem a 22 permitida, por exemplo com o telemóvel.Mesmo que uma porta esteja aberta na firewall, o programa lá dentro pode não responder (o MySQL costuma escutar só em local). Não conte com isso: feche-a na firewall na mesma.
Alternativas para nunca ter a 22 aberta
Se entrar na máquina é algo frequente para si, há formas de o fazer sem nenhuma porta aberta:
- Terminal no navegador do Lightsail: botão Ligar através de SSH na página da máquina. O Lightsail liga-se por conta própria mesmo que tenha apagado a regra da 22 da firewall; fá-lo por uma via interna da AWS. Para tarefas pontuais, chega.
- Session Manager no EC2: na máquina, botão Ligar, separador Session Manager. Exige que a máquina tenha o agente do SSM (vem nas imagens de Amazon Linux e Ubuntu da AWS) e uma função com a política AmazonSSMManagedInstanceCore. Em troca, zero portas abertas, e cada sessão fica registada no CloudTrail com quem entrou.
- EC2 Instance Connect: o separador Cliente EC2 Instance Connect no mesmo botão Ligar. Continua a precisar da 22 aberta, mas só à gama de IPs da AWS que esta publica para a sua região, não a toda a internet.
Com qualquer uma delas, a 22 aberta ao mundo deixa de ter desculpa.
O que pode correr mal
Fechei a 22 e agora não consigo entrar
É o esperado: fechou-a. Volte a adicionar a regra com o seu IP atual (pode ter mudado desde a última vez) e entre. No Lightsail, o botão Ligar através de SSH funciona mesmo sem regra. No EC2, se nem sequer tem Session Manager, adicione a regra da 22 com O meu IP no grupo de segurança; a alteração é imediata.
O site não carrega depois de fechar portas
Confirme que a 80 e a 443 continuam na lista com origem "qualquer endereço". Se só falha o HTTPS, falta a 443. Se falha a partir do telemóvel mas não a partir do escritório, provavelmente deixou a 80 ou a 443 restritas ao seu IP por engano. E se o site usa uma porta diferente (por exemplo um painel na 8443 de que realmente precisa público), abra-a, mas então ponha uma palavra-passe forte e mantenha-o atualizado: agora é mais uma porta.
Uma aplicação de outra máquina deixou de se ligar à base de dados
Fechou a 3306 (ou a 5432) e essa aplicação entrava por aí. Não a volte a abrir a todos: abra-a só à origem correta. No EC2, escreva em Origem o identificador do grupo de segurança da máquina que se liga. No Lightsail, o IP dessa máquina. Se ambas estão no Lightsail na mesma região, use os IPs privados (172.26.x.x), que não saem para a internet.
O meu IP muda de poucos em poucos dias e farto-me de o atualizar
Três saídas. Uma, peça ao seu operador um IP fixo para o escritório (costuma custar pouco). Duas, deixe de usar a 22 e passe ao terminal do navegador ou ao Session Manager, que não dependem do seu IP. Três, habitue-se à rotina "abrir com o meu IP, trabalhar, fechar": como cria a regra de cada vez, nunca está desatualizada.
No Simplio
No Simplio, a firewall de cada máquina (Lightsail ou EC2) vê-se numa lista em que as portas abertas a toda a internet aparecem assinaladas. Fechar uma porta é um clique, e para a 22 há um botão adicionar o meu IP que cria a regra com o endereço a partir do qual está ligado, sem o ir procurar. Quando acaba, outro clique retira-a. Quem pode mexer na firewall de que máquina decide-se utilizador a utilizador.
E para quase nunca ter de abrir a 22, o Simplio tem um terminal no navegador: abre a máquina, escreve, fecha. Cada acesso à firewall e ao terminal fica no registo de atividade com quem, quando e de onde, e, se quiser, recebe um aviso por e-mail quando alguém abre uma porta a toda a internet.
O mesmo, na AWS e no Simplio
| Na consola da AWS | No Simplio | |
|---|---|---|
| Ver que portas cada máquina tem abertas | Entrar máquina a máquina no Lightsail e em cada grupo de segurança do EC2 | Lista de todas as máquinas com as portas abertas ao mundo assinaladas |
| Abrir a 22 ao seu IP | Procurar o seu IP, editar a regra, escrevê-lo à mão | Botão "adicionar o meu IP" |
| Fechar uma porta | Editar regras, eliminar, guardar | Um clique |
| Entrar na máquina sem abrir portas | Ligar através de SSH (Lightsail) ou Session Manager com função e agente (EC2) | Terminal no navegador, com o acesso registado |