10 pontos por xguru 2024-08-27 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Ferramenta que executa comandos enviando pacotes UDP para o servidor
  • Os comandos são configurados no lado do servidor, então o cliente não define o que será executado, apenas escolhe entre comandos já existentes
  • Composta por 3 binários
    • client: executado no computador e envia pacotes UDP
    • server: recebe os pacotes UDP e verifica se são válidos
    • commander: executa o comando codificado nos dados do pacote UDP, se ele for válido
  • Segurança
    • Como é enviado por UDP, o servidor não responde absolutamente nada: varredura de portas impossível
    • Os dados enviados do cliente para o servidor são criptografados com RSA
    • O cliente define apenas qual comando executar, e os comandos ficam armazenados no servidor -> o cliente pode escolher comandos, mas não pode defini-los
    • Execute o software do servidor com o mínimo possível de privilégios do sistema operacional
    • O servidor adiciona todos os pacotes recebidos a uma lista de bloqueio para proteção contra replay
    • (WIP) Proteção contra DoS

Exemplo de uso: single packet authorization (SPA)

Para aumentar a segurança do servidor, em vez de deixar o SSH completamente aberto, é possível adotar uma abordagem de abrir a porta SSH por um curto período e depois fechá-la novamente

address = "0.0.0.0:8080"  # Endereço em que o servidor Ruroco ficará escutando (caso não use systemd/ruroco.socket)  
config_dir = "/etc/ruroco/"  # Caminho onde os arquivos de configuração são armazenados  
  
[commands]  
# Abrir SSH (somente para o endereço IP que fez a requisição)  
open_ssh = "ufw allow from $RUROCO_IP proto tcp to any port 22"   
# Fechar SSH (somente para o endereço IP que fez a requisição)  
close_ssh = "ufw delete allow from $RUROCO_IP proto tcp to any port 22"  
  • Configure o Ruroco assim no servidor e, no lado do cliente, execute o seguinte comando
    ruroco-client send --address host.domain:8080 --private-pem-path /path/to/ruroco_private.pem --command open_ssh --deadline 5
  • O servidor usa RSA para verificar se o cliente tem permissão para executar esse comando e então executa o comando definido em "open_ssh"
  • O argumento --deadline significa que o servidor deve iniciar o comando em até 5 segundos após sua execução
  • Permite acesso à porta SSH apenas para o IP a partir do qual o pacote UDP foi enviado
  • Claro, assim como quando a porta SSH fica exposta à internet, também é preciso aplicar todas as demais medidas de reforço de segurança
  • Você pode definir quantos comandos quiser adicionando mais comandos ao arquivo de configuração

Ainda não há comentários.

Ainda não há comentários.