Como abrir temporariamente uma porta no ufw para um endereço IP específico?

2

Eu uso o ufw (Uncomplicated Firewall) no meu servidor web. Agora eu tenho configurado para permitir SSH para o mundo e fail2ban para impedir tentativas de entrada em massa. O servidor web tem portas 80 e 443 abertas.

O que eu gostaria de fazer é fechar o acesso SSH até que eu precise dele e só disponibilizá-lo para o meu endereço IP público atual que muda periodicamente. Estou pensando em um script PHP sobre HTTPS que verifica meu acesso e, em seguida, coloca a solicitação em um banco de dados. Em seguida, um cron job executa um script que lê o banco de dados e executa o ufw para abrir a porta SSH apenas para o meu endereço IP. Após 30 minutos, a regra seria removida e o SSH ficaria inacessível novamente. Eu também quero permitir que vários IPs tenham acesso temporário também e, eventualmente, quero expandir para outras portas além do SSH.

Quais comandos do ufw meus scripts automatizados acima mencionados devem executar para adicionar e remover temporariamente o acesso à porta SSH para endereços IP individuais?

    
por user16578951 08.05.2015 / 20:23

1 resposta

3

Na minha opinião, uma solução melhor seria usar porta batendo, basicamente você teria "bater" uma série de portas aleatórias que, em seguida, acionaria uma ação no servidor, a ação seria permitir o seu endereço IP para SSH em Você pode até mesmo configurar um tempo limite para que depois de um tempo a porta seja fechada.

Para batidas de portas, você pode usar o knockd. Você precisa de um cliente da batida também do outro lado, é claro. Uma configuração do knockd ficaria assim:

[options]
   logfile = /var/log/knockd.log

[SSH]
  sequence    = 7000,8000,9000
  seq_timeout = 5
  start_command = ufw allow from %IP% to any port 22
  tcpflags    = syn
  cmd_timeout   = 10
  stop_command  = ufw delete allow from %IP% to any port 22
    
por 09.05.2015 / 02:31

Tags