如何在 hosts.deny 中允许主机名反向 DNS

如何在 hosts.deny 中允许主机名反向 DNS

我希望阻止所有sshd连接,但分配一个动态IP,<subdomain>.ddns.net因此我将其输入/etc/hosts.deny

sshd: ALL EXCEPT <subdomain>.ddns.net

这不允许我连接到 SSH。
相反,如果我放置由该主机名解析的 IP(dig <subdomain>.ddns.net确认这一点),它就可以工作:

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

我也尝试过使用UseDNS yes或,但没有任何变化。nosshd_config

防火墙(UFW)按规则打开ufw limit ssh

/etc/ssh/sshd_config以下是我的实际情况:

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

答案1

该问题很可能是由于您连接的 IP 地址反转为 xxx.yourisp.com,而不是 subdomain.ddns.net。

当您尝试从您的(动态)IP 地址连接到 sshd 时,tcpwrappers 会对您的 IP 地址进行反向 DNS 查找。如果该地址解析为 xxx.yourisp.com,则它将无法在 hosts.allow 或(也可能是 hosts.deny)中找到匹配项,因此它不会允许从您的 IP 连接到 sshd。

作为一种解决方法,您可能需要考虑将 subdomain.ddns.net 添加到您的 /etc/hosts 文件中,并创建一个 cron 作业,每隔几分钟运行一次,并在您的动态 IP 地址发生变化时用它更新此条目。这不是一个非常优雅的解决方案,但这是我最近自己遇到这个问题时能想到的最好的办法。如果有人知道更简洁的解决方案,请发表评论。

答案2

您将使用和/etc/hosts.allow/etc/hosts.deny实现这一点。在 处/etc/hosts.allow输入以下内容:

sshd: blablabla.ddns.net

在 /etc/hosts.deny 中插入以下内容:

sshd: ALL

它会起作用,因为/etc/hosts.allow重叠/etc/hosts.deny。但有一个问题:如果您的服务器位于发夹 NAT(有些人也称之为 NAT 反射)后面,则某些连接将使用网关的内部 IP 地址显示到您的服务器,因此可能很难阻止。

另一个选择是使用 iptables,如下所示:

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

请注意,iptables 会考虑其规则的顺序。

祝你好运。

答案3

我正在使用脚本将域名列表制作成 IP 列表,并将其包含在 hosts.allow 中

描述如下:

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

相关内容