利用tcp_wrappers 保护服务安全

    网络并不比大多数操做系统更安全。虽然没有任何系统能保证100%安全,但一些安全措施能够加强系统的安全性,网络也是如此。当设计安全措施时,你须要从影响安全的两个方面考虑:用户的意外操做和入侵。 linux

    意外事件的产生主要是用户缺少培训或不想遵照程序流程。若是安全策略过于繁琐,工做将变成一种折磨,你的用户就会回避的你的策略。密码规则过于严格,用户也许会把密码写到他们的办公桌上。
当入侵者侵入你的系统后,他(她)会寻找所感兴趣的信息,如信用卡。有些人或许只想让你的系统垮掉。你能够采起一些措施来保证你的网络安全。监控最近产生的 Red Hat 错误表。使用 yum,保证 Red Hat 系统包升级到最新。
在工做中:
Red Hat 已经将up2date用yum替换掉, RHEL5 依然保留了 Red Hat Network 注册和管理工具如:rhn_register 和 rhn_check。若是你使用Fedora Core 6 或 CentOS,Red Hat Network 是不可用的。幸运的是,Red Hat 考试不会考到与 Red Hat Network 有关的知识。
在这章稍后部分,你能够经过 /etc/hosts.allow 和 /etc/hosts.deny 文件来管理你的系统对特定请求的响应。你可使用基于iptables 或 ipchains 的防火墙实施内核级的安全策略。保证安全的一个简单方法是尽可能删除不使用的服务。
基于用户和主机的安全
防止入侵者利用某个服务侵入的最好方法是将这个服务从Linux 系统上完全删除。可是,你可能要保留某些服务,以保证未来的须要。
在/etc/xinetd.d 和 /etc/init.d 目录下,你能够移除或撤销不使用的服务。对于你须要的服务,你可使用 /etc 目录下的hosts.allow 和 hosts.deny 文件来控制接入服务的用户、计算机甚至某个网络。这个系统被称为 tcp_wrappers,默认是开启的,主要保护 xinetd 服务,在第13章有描述。
当系统收到某个服务的网络请求,它将请求转到 tcp_wrappers。系统记录这个请求并检查进入规则。若是没有特定主机和IP地址的限制,tcp_wrappers 将控制权交给服务。
关键的文件是 hosts.allow 和 hosts.deny。原理很简单:hosts.allow 中的用户和客户端是被容许接入的;而hosts.deny 中的用户和客户端会被拒绝链接。若是用户或客户端同时出如今两个文件中,则 tcp_wrappers 系统遵循以下步骤:
一、查询 /etc/hosts.allow 文件,若是匹配,容许进入,再也不作其余操做;
二、查询 /etc/hosts.deny 文件,若是匹配,拒绝进入,再也不作其余操做;
三、若是两个文件都没有匹配项,则默认容许接入。
/etc/hosts.allow 与 /etc/hosts.deny 文件中的语法是相同的。基本的格式与命令以下:
daemon_list : client_list
最简单的版本是:
ALL : ALL
这将应用规则到全部服务和全部用户或主机、IP地址。若是在 /etc/hosts.deny 定义以上规则,则全部的链接都是被禁止的。 固然,你能够创建更好的过滤条件。如:在 /etc/hosts.allow 加入下列内容,将容许从 192.168.1.5 链接到 Telnet 服务:
telnetd : 192.168.1.5
一样的内容放入 /etc/hosts.deny 中将禁止这个IP地址链接到你系统的 Telnet 服务。你能够指定一个客户端经过不一样的方法,以下所示:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
客户端                    描述
.example.com                域名。以“.”开始,表示这个域名下全部客户端。也能够定义具体的,如:user.example.com
172.16.                    IP 地址。以“.”结束,表示网段下全部客户端。具体的描述为:a.b.c.e
172.16.72.0/255.255.254.0    用子网掩码标识的 IP 子网。不支持CIDR(172.16.72.0/23)。
ALL                        全部客户端,或全部服务
user@linux1.example.com    某个计算机的具体用户
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如上所示,这里有两种不一样的通配符。“ALL”用了匹配全部客户端或服务。“.”匹配全部主机或 IP 网络地址。
你可使用逗号“,”来设定多个服务和地址。例外状况但是使用 EXCEPT 进行操做。请看下列 /etc/hosts.allow 文件中的示例:
#hosts.allow
ALL : .example.com
telnetd : 192.168.25.0/255.255.255.0 EXCEPT 192.168.25.73
sshd, in.tftpd : 192.168.1.10.25.73
文件中第1行以“#”开始的是注释。第2行使用“ALL”将全部服务对 example.com 域开放。第3行将 Telnet 服务对除 IP 地址 192.168.25.73 外的 192.168.25.0/255.255.255.0 网段开放。第4行对IP 地址 192.168.1.10 开放了 SSH 和 TFTP服务。
下列代码展现了利用 hosts.deny 对访问进行控制:
#hosts.deny
ALL EXCEPT in.tftpd : .example.org
telnetd : ALL EXCEPT 192.168.1.10
ALL:ALL
hosts.deny文件中的第1行是注释。第2行定义了对域 .example.org 开放除 TFTP 外的全部服务。第3行将 Telnet 开放给全部用户,IP 地址 192.168.1.10 除外。最后,第4行禁止了全部客户端对    tcp_wrappers 控制的全部服务的访问。
你也能够在 /etc/hosts.allow 或 /etc/hosts.deny 使用 twist 或 spawn 命令来控制 shell 命令;它们主要用于发送消息、跟踪接入和记录问题。例如,如下 /etc/hosts.deny 中的内容:
telnetd : .crack.org : twist /bin/echo Sorry %c, access denied
这条命令将对试图链接 Telnet 的 crack.org 域的用户发送错误消息。 不一样的运算符如:%c 有以下描述:(这些运算符将帮助你跟踪入侵者)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
运算符    描述
%a        客户端地址
%A        主机地址
%c        客户端信息
%d        进程名称
%h        客户端主机名
%H        服务器名称
%p        进程ID
%s        服务器信息
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在这个练习中,你将利用 tcp_wrappers 来控制对网络资源的访问。 tcp_wrappers 默认是开启的,你不须要作任何修改或安装的工做。
一、肯定你能够利用本地地址 telnet 到系统中。首先你要些事情:
    1)从 krb5-workstation RPM 包安装 Kerberos Telnet 服务;
    2)使用 chkconfig krb5-telnet on 激活服务;
    3)容许服务经过防火墙和 SELinux 服务(若是你对防火墙和SELinux不熟的话,建议先把它们关掉);
    4)在 /etc/hosts 定义你的主机名(好比说 rhel5l1)。
    127.0.0.1 rhel5l1 localhost.localdomain localhost
    5)要知道,RHEL5默认是不容许 root 经过 telnet 登陆。
二、编辑 /etc/hosts.deny 文件,加入以下内容(不要忘记保存哦):
    ALL : ALL
三、当你登陆到本地的 telnet 服务时发生了什么?
四、编辑 /etc/hosts.allow 文件,加入下列内容:
    telnetd : 127.0.0.1
五、如今登陆看看??
六、若是你可使用其余的系统,你可使用 tcp_wrappers 对它们进行限制。也不要忘了那些有趣的运算符(%a,%c)。
七、实验完成后,记得将改动内容改回去。
                
shell

相关文章
相关标签/搜索