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.