Como permitir um DNS reverso de nome de host em hosts.deny

Como permitir um DNS reverso de nome de host em hosts.deny

Desejo BLOQUEAR todas sshdas conexões, MAS um IP dinâmico atribuído a um, <subdomain>.ddns.netentão coloquei isso /etc/hosts.deny:

sshd: ALL EXCEPT <subdomain>.ddns.net

Isso não me permite conectar ao SSH.
Em vez disso, se eu colocar o IP resolvido (a dig <subdomain>.ddns.netconfirma) por esse nome de host, funciona:

sshd: ALL EXCEPT <ipv4.resolved.by.hostname>

Também tentei com UseDNS yesou noin sshd_config, mas não muda nada.

Firewall (UFW) está aberto pela regraufw limit ssh

Meu real /etc/ssh/sshd_configaqui abaixo:

Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
KexAlgorithms [email protected]
Ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
MACs [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
PermitRootLogin no
AllowUsers remotessh
IgnoreRhosts yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
PubkeyAuthentication yes
AllowTcpForwarding no
AllowStreamLocalForwarding no
GatewayPorts no
PermitTunnel no
UseDNS no

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem       sftp    /usr/lib/openssh/sftp-server

Responder1

O problema provavelmente se deve ao fato de que o endereço IP do qual você está se conectando é reverso para xxx.yourisp.com, não para subdomínio.ddns.net.

Quando você tenta se conectar ao sshd a partir do seu endereço IP (dinâmico), o tcpwrappers faz uma pesquisa reversa de DNS no seu endereço IP. Se isso resolver para xxx.yourisp.com, então ele não encontrará a correspondência em hosts.allow ou (hosts.deny como pode) e, portanto, não permitirá a conexão com sshd do seu ip.

Como solução alternativa, você pode considerar adicionar subdomain.ddns.net ao seu arquivo /etc/hosts e criar um cron job que seja executado a cada poucos minutos e atualize essa entrada com seu endereço IP dinâmico sempre que ele for alterado. Não é uma solução muito elegante, mas é a melhor que consegui encontrar quando recentemente enfrentei esse problema. Se alguém souber de uma solução mais limpa, comente.

Responder2

Você usará ambos /etc/hosts.allowe /etc/hosts.denypara conseguir isso. Em /etc/hosts.allow, coloque o seguinte:

sshd: blablabla.ddns.net

Em /etc/hosts.deny, insira o seguinte conteúdo:

sshd: ALL

Funcionará porque /etc/hosts.allowse sobrepõe /etc/hosts.deny. Mas há um problema: se o seu servidor estiver atrás de um NAT hairpin (alguns também chamam isso de reflexão NAT), algumas conexões aparecerão com o endereço IP interno do seu gateway para o seu servidor, por isso pode ser difícil bloqueá-lo.

Outra opção é usar iptables, assim:

iptables -t filter -A INPUT -s blablabla.ddns.net -p tcp --dport 22 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport -j DROP

Esteja ciente de que o iptables leva em consideração a ordem de suas regras.

Boa sorte.

Responder3

Estou usando um script para criar uma lista de domínios em uma lista de IP e incluí-la em hosts.allow

A descrição está aqui:

https://serverfault.com/a/1105670/974219

informação relacionada