当前位置:Linux教程 - Linux - 设计安全的Linux网络

设计安全的Linux网络



        
    网络作为一个系统,其安全性在计划网络拓扑时就应该仔细考虑,制订安全性策略。此后在网络实施和维护的每一个举措都应该严格执行安全策略。在企业的网络中,Linux现在较多地扮演防火墙/路由器或服务器等重要角色,Linux系统的安全决定了整个网络的安全与否。因此,了解相关的技术,并对Linux系统进行安全设置是至关重要的。

    使用保留IP地址

    ---- 维护网络安全性最简单的方法是保证网络中的主机不同外界接触。最基本的方法是与公共网络隔离。然而,这种通过隔离达到的安全性策略在许多情况下是不能接受的。这时,使用保留IP地址是一种简单可行的方法,它可以让用户访问Internet同时保证一定的安全性。

    ---- RFC 1918规定了能够用于本地 TCP/IP网络使用的IP地址范围,这些IP地址不会在Internet上路由,因此不必注册这些地址。通过在该范围分配IP地址,可以有效地将网络流量限制在本地网络内。这是一种拒绝外部计算机访问而允许内部计算机互联的快速有效的方法。

    ---- 保留IP地址范围如下所示。

    ---- 10.0.0.0 - 10.255.255.255
    ---- 172.16.0.0 - 172.31.255.255
    ---- 192.168.0.0 - 192.168.255.555

    ---- 来自保留IP地址的网络交通不会经过Internet路由器,因此被赋予保留IP地址的任何计算机不能从外部网络访问。但是,这种方法同时也不允许用户访问外部网络。IP伪装可以解决这一问题。

    IP地址伪装

    ---- 保留IP地址不能在Internet上路由,因此使用保留IP地址的系统无法到达Internet。但通过建立一个IP伪装服务器(一台Linux服务器)可解决这一问题。具有IP伪装功能时,当数据包离开用户计算机时,包含有它自身的IP地址作为“源地址”,在数据包经过Linux服务器发送到外部世界时,会经过一个转换。数据包的源地址改变成服务器的IP地址,而经过转换的数据包可以在Internet中完整路由。服务器同时记录哪个源地址的数据包发送到Internet上的哪个目标IP地址。当数据包发送到Internet上之后,它能够到达其目标地址并获得其响应。

    ---- 这种设置有一个问题。因为数据包的源地址被设置为服务器的IP,而不是服务器后面用户计算机的IP地址,所以来自外部计算机的响应将发送到服务器。因此,为了完成数据包传输,服务器必须搜索一个表,以便确定该数据包属于哪个计算机。然后将数据包的源地址设置为内部网用户计算机的地址,并发送到该地址。这样,使用保留IP地址的系统的数据包现在能够在Internet上传输了。IP伪装也称作网络地址转换(Network Address Translation,NAT)。

    ---- 从用户角度看,他有一个能够完整路由的Internet连接。安全性由转换表来保证,服务器保存有哪个用户计算机与哪个外部Internet主机通讯的记录。如果某个黑客希望获得对用户计算机的访问,几乎是不可能的。外部世界看到的惟一的IP地址是服务器的地址,其后所有的地址都被隐藏。即使有黑客向服务器发送数据包,服务器也无法知道应该将这个数据包发送到哪个用户计算机。

    ---- 默认情况下,Linux 内核内置有IP伪装功能。但是,使用一个没有内置IP伪装功能的内核,则需要重新编译,装载一些模块,然后设置数据包过滤规则以便允许转换的进行。为了让IP伪装能够工作,需要打开服务器的IP转发功能。在RedHat 6.x系统中,用户可以通过将 /etc/sysconfig/network文件中的FORWARD_IPV4设置为yes而启用IP转发。这里的讨论假定用户正在使用的内核内置有IP伪装和转发支持,并且安装有IPchains。

    ---- 为了将内部网络连接到外部世界,需要在IP伪装服务器上有两个网络接口。一个接口用于连接到内部网络,而另一个接口用来将服务器(并通过IP伪装将内部网络)连接到外部世界。因为这种服务器具有多个接口,所以经常被称为“多宿主”服务器。可以为连接到内部网络的网卡赋予一个保留IP地址。例如:

    ---- #/sbin/ifconfig eth1 inet 192.168.1.1 netmask 255.255.255.0

    ---- 这里,假定连接内部网络的网络接口为eth1,并且内部网络中 的用户计算机数小于253。如果需要超过253个用户计算机,则可以增加网络掩码位数,还可建立第二台IP伪装计算机,并将内部网络划分为两个子网。

    ---- 将用户计算机的IP地址配置为192.168.1.2到192.168.1.254,并将所有用户计算机的网关设置为192.168.1.1、网络掩码为255.255.255.0,就可以从每台用户计算机上ping内部网关了(192.168.1.1)。

    ---- 这时,所有的用户计算机能够互相通信,并能够与IP转换服务器通信,但目前还不能从客户计算机上到达外部世界,这需要在IP转换服务器上定义一个过滤规则。键入如下命令即可。

    ---- /sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0

    ---- /sbin/ipchains -P forward DENY

    ---- 第一条命令对其目标地址不是 192.168.1.0 网络的IP数据包打开了IP伪装服务。它将转发最初来自192.168.1.0网络的、经过伪装的IP数据包,并转发到另一个网络接口所连接的网络的默认路由器。第二条命令将默认的转发策略设置为拒绝所有非内部网络的数据包。这时,用户就可以从内部网计算机上浏览并与Internet通讯,就像直接连接到Internet一样可将上述命令放在/etc/rc.d/rc.local文件中,这样,在服务器开机时,就能自动启动IP伪装功能。

    什么是防火墙

    ---- 有时,用户不希望使用保留IP地址实现的“要么全有要么全无”的方法。用户可能希望能够对开放其 Web 服务,但不允许其他类型的访问。或者,对于公司的服务器,可能具有一项行政限制,雇员只能使用Internet发送E-mail。这两种情况可以用防火墙来解决问题。

    ---- “防火墙”是一台计算机,它能够强制执行某个策略,用来限制公共网络和私有网络之间所传递的网络交通类型。大部分情况下,防火墙位于Intranet和Internet之间,可允许满足特定条件的网络交通通过,而拒绝其他的网络交通。防火墙可以非常开放,几乎允许所有的交通通过,或者非常封闭,只允许有限用户的使用有限的服务。防火墙管理员可通过规则集的配置而控制这一切。

    ---- 专门购买一台防火墙计算机是很明智的选择。如果依赖防火墙控制着对内部网络的访问,则需要确保防火墙足够安全。作为防火墙的计算机不仅仅是安全检查站,而且是内部网络到达外部世界的网关。黑客知道如果他们能够控制防火墙,他们就能够访问内部网络。正因为如此,需要紧闭门户。防火墙安全性的一些基本方针如下(具体请参考检查自己的系统一节):

    关闭所有不必要的服务。首先应考虑关闭sendmail、finger、netsat、systat、bootp和FTP。
    限制对防火墙具有shell访问能力的用户数目。如果只具有一两个用户账号,则黑客能发现这些用户账号的可能性会非常小。
    不要在防火墙上使用与其他地方一样的口令。有时,人们经常在许多不同的计算机上使用同样的口令。殊不知,这样可能会导致多米诺骨牌效应。
    考虑防火墙的物理安全性。尽管可以将桌面计算机放在开放的办公室或小卧室,但必须考虑对防火墙计算机实施严密的物理保护,比如放在上锁的机柜中。
    ---- 防火墙有多种形式。某些是软件应用程序,也有一些则是硬件。许多价格往往在几万元,而也有很多是免费的。防火墙可划分为两种类型:数据包过滤防火墙和应用层防火墙。
    数据包过滤器

    ---- 数据包过滤防火墙不过是针对每个数据包,根据一组规则进行测试,然后允许或者拒绝该数据包到达其他网络。数据包过滤器存在于网络层,无法考虑数据包中包含的数据。

    ---- 典型而言,一个数据包过滤器能够检查数据包的源IP地址、目标IP地址、源端口号、目标端口号以及协议类型。它还能够区别计算机上的两个独立的网络接口。这样,如果某人从外部世界伪装您的IP地址,则伪装的数据包将被阻拦。表1所示是数据包过滤器的优点和缺点。

    ---- 另外,因为数据包过滤器单独考察每个数据包,仅得一斑,难窥全豹。例如,数据包过滤器无法看到正在浏览的Web页,也无法确定是否正在向竞争者邮寄公司机密。

    使用基本的数据包过滤防火墙:IPchains

    ---- Linux 2.2.x内核带有一个软件包IPchains,利用这个软件包可建立一个数据包过滤防火墙。

    ---- 举一个利用IPchains控制对内部网络的访问的实例。假定用户的ISP提供了从 206.170.189.1 到 206.170.189.254 的IP地址。用户已经配置了一台Linux服务器作为防火墙,该服务器有两个以太网接口卡,eth0和eht1。用户给定外部以太网接口,即 eth0 的IP地址为 206.170.189.1,而给定内部以太网接口,即eth1的IP地址为206.170.189.2。内部网络中的每台计算机从 206.170.189.3 到 206.170.189.254 这一范围内分配IP地址。每台内部计算机的网关设置为防火墙计算机,其IP地址为 206.170.189.2。

    ---- 首先,用户需要建立一条默认的过滤策略,拒绝所有来自或发送到防火墙系统的网络交通。这应该是最后一条规则,并用来强制实现安全性策略: “没有经过防火墙特殊许可的所有网络交通均被拒绝”。通过下面三条命令可以实现这一规则。

    ---- #/sbin/ipchains -P input DENY
    ---- #/sbin/ipchains -P output DENY
    ---- #/sbin/ipchains -P forward DENY

    ---- 按照顺序,上述命令为传入的数据包、传出的数据包以及数据包转发定义了默认策略,即拒绝尚未由IPchains过滤器规则允许的任何数据包。

    ---- 注意: 应始终从防火墙的控制台上管理过滤器规则,而不能远程管理。进行远程管理时,很容易使用一条拒绝规则将自己排除在外。在您按了Enter键之后,这些规则会立即生效。同时,如果使用-F命令冲掉自己的IPchains过滤器规则,则会发现仍然存在的惟一规则是拒绝来自或发送到防火墙的所有网络交通。

    ---- 接下来,需要设置如下规则。

    ---- #/sbin/ipchains -A input -j DENY -i eth0 -s 206.179.189.0/24

    ---- 这一规则拒绝所有的特殊数据包,即声明来自内部网络但却发送自防火墙之外的计算机的数据包。在通常的情况下,这应该不会发生,但是黑客会在数据包头上放入假的IP地址,从而绕过防火墙。这种绕过防火墙的方法称为“数据包欺骗”(packet spoofing)。

    ---- 再添加如下两条规则。

    ---- #/sbin/ipchains -A input -j ACCEPT -i eth1
    ---- #/sbin/ipchains -A output -j ACCEPT -i eth1

    ---- 这两条规则允许所有本地网络和防火墙之间的交通,并允许自己的任何计算机能够互相通信。它们不应该从防火墙上弹回,添加上述规则并没有任何损害。

    ---- 再使用如下规则进行ICMP访问限制。

    ---- #/sbin/ipchains -A input -j DENY -p icmp

    ---- 这一规则可能会导致用户之间的争论。通过设置这一规则,会拒绝所有使用ICMP协议的数据包,该协议是ping以及traceroute等程序使用的协议。拒绝这种交通,可以限制一种流行的拒绝服务攻击,称为“ping 洪水”。这种攻击中,黑客使用ping程序发送超大数据包。ping洪水不会破坏任何数据,但可利用ping数据包消耗所有的带宽,而阻碍合法的交通。但是,禁止ICMP交通同时也会限制在本地网络中使用ping、traceroute等工具检查防火墙之外的计算机状态。用户必须在这一点上权衡。

    ---- 有时,我们需要Internet访问内部特定机器的特定端口,例如:

    ---- #/sbin/ipchains -A input -j ACCEPT -p tcp -d 206.170.189.3 smtp

    ---- 这一规则是允许所有使用TCP协议,且目标为206.170.189.3的SMTP端口的数据。在我们的例子中,206.170.189.3是邮件服务器,而我们需要允许外部世界的任何邮件发送到邮件服务器。当然,也可以使用如下命令。

    ---- #/sbin/ipchains -A input -j ACCEPT -p tcp -d 206.170.189.5 www
    ---- #/sbin/ipchains -A input -j ACCEPT -p tcp -d 206.170.189.9 domain

    ---- 允许访问Web服务器(206.170.189.5)和DNS服务器(206.170.189.9)。可继续使用类似的形式为所有类似的主机和服务设置规则。

    使用应用层防火墙

    ---- 许多情况下管理员需要在应用层控制网络,而不是在网络层。您可能需要限制用户向特定地址发送电子邮件,监视用户点击的Web站点,或者获得用户通过防火墙发送的文件平均大小等等。如果您希望这种类型的信息以及控制,则需要应用层的防火墙。

    ---- 应用层防火墙,有时也称作“应用程序代理”或“代理服务器”,它的工作方式与包过滤防火墙不同。应用层防火墙不需要本地和远程计算机之间的直接连接就可以工作。这种防火墙不允许内部网络到外部网络的连接,而是本地计算机向防火墙请求它所需要的信息。然后,防火墙检查请求,建立与外部网络之间的连接,检索信息,然后将信息发送回客户。外部网络所知的仅仅是,所有的信息请求均来自应用层防火墙。利用应用层防火墙时,用户不必担心非法访问进入自己的网络。

    ---- 因为应用层的防火墙特定于所传递协议的类型,所以,每个协议需要一个单独的防火墙,比如FTP、Telnet和Web等。如果不希望自己的用户访问Web页,则只需忽略防火墙程序组中的Web代理程序。用户可以建立某个本地IP地址访问某个外部IP地址的规则,也可以根据用户所使用的协议建立规则。应用层防火墙有时也可以和包过滤防火墙共用。多数商业防火墙产品都提供了应用层的功能。
    发布人:netbull 来自:网建专家