É possível conseguir exatamente o que você está tentando!
Uma solução é executar duas instâncias sshd diferentes, uma para usuários externos e outra para usuários internos. Com algum uso inteligente do iptables
REDIRECT
target, você pode continuar permitindo que as pessoas se conectem ao sshd na porta 22, mas dependendo de onde elas estão vindo, elas obterão a instância apropriada. Algo como:
# Connect inside users to "inside" sshd.
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j REDIRECT --to-ports 2200
# Connect out*emphasized text*side users to "outside" sshd.
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j REDIRECT --to-ports 2201
Isto pressupõe que você tenha o sshd interno escutando na porta 2200 e o sshd externo escutando na porta 2201, e que cada um deles esteja usando um arquivo sshd_config
configurado apropriadamente. Note também que para isso funcionar você precisa:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 2200 -j ACCEPT
iptables -A INPUT -p tcp --dport 2201 -j ACCEPT
Fazemos exatamente isso para alguns de nossos hosts de login interativos e funciona bem.