5.9. TCP_WRAPPERS

默认情况下,Red Hat Linux 允许所有服务请求。使用 TCP_WRAPPERS 可以比您预期的更简单和轻松地保护您的服务器免受外部入侵。 通过添加以下内容来拒绝所有主机:ALL: ALL@ALL, PARANOID/etc/hosts.deny文件中,并在/etc/hosts.allow文件中显式列出允许访问您机器的受信任主机。 这是最安全和最佳的配置。 TCP_WRAPPERS 由两个文件控制,搜索在第一个匹配项处停止。

/etc/hosts.allow
/etc/hosts.deny

当守护进程、客户端对与/etc/hosts.allow文件中的条目匹配时,将授予访问权限。 否则,当守护进程、客户端对与/etc/hosts.deny文件中的条目匹配时,将拒绝访问。 否则,将授予访问权限。

  1. 编辑hosts.deny文件 vi/etc/hosts.deny并添加以下行: 默认拒绝访问
                 # Deny access to everyone.
                 ALL: ALL@ALL, PARANOID # Matches any host whose name does not match its address, see below.
                 
    这意味着所有服务、所有位置,因此任何未明确允许的服务都将被阻止,除非允许文件中的条目允许它们访问。

    Note: 使用 PARANOID 参数; 如果您打算在服务器上运行 telnet 或 ftp 服务,请不要忘记在服务器上的 /etc/hosts 文件中添加客户端的机器名和 IP 地址,否则您可能需要等待几分钟 DNS 查找超时,然后才能看到 login: 提示符。

  2. 编辑hosts.allow文件 vi/etc/hosts.allow并添加例如,以下行: 显式授权的主机在 allow 文件中列出。 例如sshd 208.164.186.1 gate.openna.com, 对于您的客户端机器208.164.186.1IP 地址,gate.openna.com是您允许使用 sshd 的客户端之一的主机名。

  3. tcpdchk 程序是tcpd wrapper配置检查器。 它检查您的tcp wrapper配置并报告它可以找到的所有潜在和实际问题。 配置完成后,运行 tcpdchk 程序。
                 [root@deep] /# tcpdchk
                 

Note: 错误消息可能如下所示

             warning: /etc/hosts.allow, 
             line 6: can't verify hostname: gethostbyname(win.openna.com) failed.              
             
             
如果您收到此类错误消息,请检查您的 DNS 配置文件中是否存在此主机名。

5.9.1. 不要显示系统问题文件

如果您不希望在人们远程登录时显示系统问题文件,您可以更改您的/etc/inetd.conf文件中的 telnet 选项,使其看起来像
               telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd -h
               
添加-h标志将导致守护进程不显示任何系统信息,而只是向用户显示 login: 提示符。 仅当您在服务器上使用 telnet 守护进程时,此技巧才是必要的,我建议您使用 SSH。