我正在运行一个小型服务器,我想使用以下方法阻止一些特殊 IP/etc/hosts.deny如果我输入如下内容
ALL: <IP>
仅 ssh 服务将被阻止知识产权. 所有其他服务(如 ftp、http 等)仍可通过知识产权. 难道不是主机拒绝文件定义全局规则?
答案1
/etc/hosts.deny 和 /etc/hosts.allow 是 TCP-Wrapper 的一部分,TCP-Wrapper 是 Wietse Venema 在九十年代开发的一个用于拒绝黑客访问的程序。
TCP 包装器控制从 /etc/inetd.conf 运行的进程的 TCP 访问。大多数现代 Linux 发行版(所有基于 Debian、Arch Linux 等)都没有inetd不再。
一些应用程序仍受 TCPwrapper 控制,因为它们是使用 libwrap 库编译的,因此即使它们不是从 /etc/inetd.conf 运行,它们也可以识别 tcpwrapper。据我所知,这些应用程序包括 telnet、ssh、sendmail、pop3 和 stunnel。
你可以通过以下方式检查你的应用程序是否支持 tcp-wrapper:字符串命令:
# strings /usr/sbin/sshd|grep hosts_access
hosts_access
或通过LDD:
# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f7059e7a000)
如今,阻止入侵者访问系统的正确方法是使用iptables:
iptables -A INPUT -s 11.22.33.44 -j DROP
答案2
从内存来看,hosts.allow / hosts.deny 仅由 sshd 读取。您需要设置防火墙来限制其他服务。
答案3
只有使用 tcpd 包装器或 sshd 本身的服务才会关注 hosts.deny 和 hosts.allow。大多数服务都会使用自己的 TCP 包装器或 x?inetd 包装器。
来源:http://its.virginia.edu/unixsys/sec/hosts.html
PS,前段时间我看到一条注释说 xinitd 可以编译为支持 libwrap(或有影响的东西),它使用 hosts.deny/allow。