Ruroco - "RUn RemOte Command" chamada remota de comandos via UDP
(github.com/beac0n)- 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
--deadlinesignifica 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.