Para administrar um servidor, normalmente temos que abrir portas de comunicação no firewall de rede para permitir acesso administrativo por SSh ou Terminal Service.
De acordo com as boas práticas de segurança, devemos fechar o máximo de portas possível, deixando apenas as portas que são estritamente necessárias.
As portas administrativas são muito visadas por atacantes externos e até mesmo por atacantes internos. Se você verificar as tentativas de ataques nestas portas, poderá ficar surpreso como são frequentes estas tentativas.
Para aumentar a segurança do ambiente, segue a sugestão de manter as portas TCP/22 (SSH) e TCP/3389 (Terminal Services) fechadas e abrir somente quando for conectar no servidor.
Para viabilizar este procedimento, foi criado um script que abre a porta SSH no firewall, conecta no servidor via SSH e depois fecha a conexão do firewall.
Este script foi criado para executar este procedimento no Amazon Web Services (AWS):
#!/usr/local/bin/python3.3 import os, sys import json print("Getting your public IP... ") f = os.popen('curl -s http://www.servidor.com.br/myIp.php') #Pega o IP que irá se conectar no servidor IP = f.read().strip() print(IP) f.close() print("Clear previous SSH rules in AWS... ") f = os.popen('aws ec2 describe-security-groups') securityGroups = json.load(f) f.close() for sg in securityGroups["SecurityGroups"]: if sg["GroupId"] == "sg-00000000": #Id do security group for permission in sg["IpPermissions"]: if permission["ToPort"] == 22: for ip in permission["IpRanges"]: cmd = "aws ec2 revoke-security-group-ingress --group-name " + sg["GroupName"] cmd = cmd + " --protocol " + permission["IpProtocol"] + " --port 22 --cidr " + ip["CidrIp"] os.system(cmd) print("Allow your IP in AWS... ") os.system("aws ec2 authorize-security-group-ingress --group-name nomeSecurityGroup --protocol tcp --port 22 --cidr " + IP + "/24") print("Starting ssh session...") os.system("ssh servidor.com.br") print("Remove your IP in AWS... ") os.system("aws ec2 revoke-security-group-ingress --group-name nomeSecurityGroup --protocol tcp --port 22 --cidr " + IP + "/24")
Esse script está em Python e usa API do AWS. Ele executa os seguintes passos:
- Obtem o IP que deverá ser liberado no firewall (Security Group no AWS)
- Apaga qualquer regra que permita conexão de SSH para o servidor
- Cria um regra permitindo o IP que vai acessar o servidor
- Abre uma sessão SSH
- Apaga a regra criada no firewall (Security Group)
Desta forma, diminuimos o risco de incidentes provocados por ataques de dicionários, força bruta e outros tipos de ataques na port SSH.