Isso é esperado para o sshd porque está vinculado diretamente à libwrap, portanto, o sshd é, na verdade, o que realiza a verificação do host. Se você quiser bloquear a conexão antes que o sshd seja invocado, você precisará colocar algo na frente dele para lidar com a tentativa de conexão antes de passá-la para o sshd. Algumas opções seriam:
-
Execute sshd em inetd (ou xinetd). Isso permitirá que você invoque o sshd como um argumento para o tcpd, e o tcpd é o que acaba executando a verificação real do host.
-
Execute sshd sob xinetd, que possui
only_from
eno_access
opções de serviço que fornecem funcionalidade semelhante a /etc/hosts.allow e /etc/hosts.deny.
A página de manual do sshd desencoraja essas abordagens, embora:
-i Specifies that sshd is being run from inetd(8). sshd is normally
not run from inetd because it needs to generate the server key
before it can respond to the client, and this may take tens of
seconds. Clients would have to wait too long if the key was
regenerated every time. However, with small key sizes (e.g. 512)
using sshd from inetd may be feasible.
Usar o iptables ou colocar um firewall na frente do seu servidor pode parecer uma boa alternativa, mas a maioria não executa nenhuma resolução de nome, então você está limitado a controlar o acesso por endereço IP. Isso não é necessariamente uma coisa ruim, mas não ajuda com o que você está tentando realizar.