Abra o firewall automaticamente para qualquer pessoa que tenha se conectado com êxito via SSH

6

Eu tenho um servidor que executa alguns serviços. No entanto, por motivos de segurança, configurei o servidor para que nada, exceto o SSH, seja acessível de fora.

O que eu gostaria de fazer, no entanto, é fazer com que o servidor permita o acesso a todos os seus serviços para qualquer um que tenha conseguido logar com sucesso via SSH (e uma vez que essa pessoa se desconecte, feche todas as portas novamente, exceto a porta SSH que deve permanecer aberta).

Existe uma maneira de fazer isso?

Estou usando o Arch Linux no servidor e ufw para gerenciar o firewall.

    
por houbysoft 24.01.2013 / 22:55

2 respostas

0

Eu escrevi uma solução para isso. Não é perfeito e melhorias são bem-vindas. Especialmente, acho que ~/.bash_logout não é chamado se a conexão morrer, mas eu quero que o firewall se feche também nesses casos.

Em qualquer caso, antes de tudo, configure o arquivo sudoers para que seu usuário possa executar o binário ufw sem digitar uma senha.

Então, em ~/.bashrc :

ip='echo $SSH_CONNECTION | cut -d " " -f 1'
echo "=> Opening the firewall for $ip..."
sudo ufw allow from $ip
echo "=> Done."

Em ~/.bash_logout :

ip='echo $SSH_CONNECTION | cut -d " " -f 1'
echo "=> Closing the firewall for $ip..."
sudo ufw delete allow from $ip
echo "=> Bye."

Mais uma vez, porém, isso só irá religar as portas se você encerrar sua sessão corretamente. Se alguém souber como fazê-lo fechar sempre que a conexão terminar / terminar / o que for, edite essa resposta com sua solução.

    
por 25.01.2013 / 20:25
1

Você pode colocar comandos em ~/.bashrc , qualquer coisa lá é executada toda vez que um usuário efetua login.

Para que seus comandos sejam executados somente ao efetuar login via ssh (e não ao efetuar login fisicamente), é possível testar a presença da variável de ambiente SSH_CONNECTION .

    
por 25.01.2013 / 13:44