I just didn't want to leave SSH exposed to the Internet especially if I had a nice and secure VPN solution in place. any other thoughts on that by chance?
Duas opções - mude para onde o ssh escuta, ou firewall:
Alterar como o sshd escuta
Sim. Definir ssh para não escutar no endereço público, mas apenas no endereço da VPN.
Se você executar sudo editor /etc/ssh/sshd_config
, verá duas linhas definindo isso:
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Eles são comentados e o padrão é ouvir todas as interfaces. Para restringir, basta adicionar uma linha como esta:
ListenAddress 10.1.2.3
O IP deve ser o IP definido para sua interface VPN. Reinicie o sshd com sudo systemctl restart sshd
Firewall
Adicione uma regra de firewall que derrube o ssh em sua interface pública:
sudo ufw deny in on eno0 to any port 22 proto tcp
Isso derrubará o ssh na interface eno0
Em ambos os casos, você não poderá mais usar o ssh no IP público, mas terá que usar o definido para a interface VPN.
O motivo pelo qual você vê esse comportamento é que os clientes VPN precisam falar com o servidor VPN. Portanto, ele adiciona uma rota a esse host único por meio do gateway da rede, antes de substituir a rota. O SSH, obviamente, usará a mesma rota.
Note que eu não faria isso. Se a VPN parar de funcionar, você será bloqueado do acesso ssh. Além disso, o ssh é feito para ser seguro. Ele deveria ser usado na internet pública. Se você configurá-lo com autenticação baseada em chave e não permitir autenticação de senha, é basicamente uma boa autenticação como uma solução de VPN.