Como desabilitar o limite de taxa em conexões SSH no UFW?

1

Eu tenho um servidor de desenvolvimento para o qual eu constantemente sincronizo meu código usando o rsync. Para proteger o servidor dev um pouco mais agora eu ativo o UFW, que parece funcionar bem. O problema é que funciona muito bem, porque agora eu geralmente recebo um erro ao tentar sincronizar, sendo:

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [sender=2.6.9]

De acordo com este post do blog , o problema é que o UFW define um "limite de taxa" em conexões SSH; Se você fizer uma tentativa de conexão SSH mais de X vezes em 30 segundos, ele irá desligá-lo por um tempo. Isso é ótimo para bloquear pessoas indesejadas, mas eu quero

  • desativar isso para endereços IP específicos,
  • ou desativá-lo para tentativas de conexão bem-sucedidas (ou seja, apenas permita que esse limite de taxa funcione para tentativas malsucedidas).

O post do blog que eu linkar acima não oferece uma solução para o UFW, mas simplesmente substitui o UFW por ip-tables. Como eu preciso gastar meu tempo fazendo alguma programação, eu realmente não quero gastar meu tempo aprendendo ip-tables. Então eu queria saber se alguém aqui sabe como fazer isso funcionar com o UFW? Todas as dicas são bem vindas!

    
por kramer65 17.02.2015 / 19:50

1 resposta

2

Não é uma solução UFW, mas você pode usar o ssh multiplexing para reduzir o número de conexões SSH que você está fazendo. O protocolo SSH permite que vários fluxos independentes executem a mesma conexão TCP, e o programa OpenSSH ssh permite que um processo use multiplexação para ligar em uma conexão aberta por outro processo.

A vantagem usual disso é que a conexão só precisa ser autenticada uma vez, para que os fluxos posteriores possam pular essa etapa. No seu caso, o UFW deve vê-lo como um único fluxo já conectado, em vez de várias conexões que ele pode querer limitar a taxa.

Esta página tem uma boa descrição de como configurar multiplexação e como gerenciar conexões. Basicamente, você adicionaria algo assim ao seu arquivo ~/.ssh/config :

Host name-of-rsync-server
    ControlPath ~/.ssh/controlmasters/%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

Quando você executar uma cópia de ssh - ou, no seu caso, executar rsync , que executa ssh para você, ele procurará um soquete no ControlPath , que pode ser usado para falar para uma instância ssh (o "mestre de controle") existente que possui uma conexão aberta para o servidor rsync. Se isso funcionar, os dois processos funcionarão juntos para executar a nova sessão ssh através da conexão TCP existente. Caso contrário, a instância do ssh abrirá uma nova conexão TCP com o servidor rsync e se tornará um mestre de controle para outras instâncias ssh.

    
por 18.02.2015 / 23:33