内核安全

内核安全性
上一页 第 11 章 GNU/Linux 安全性 下一页

内核安全性

以下将阐述有关内核配置中各选项的安全性问题,并解释其作用以及如何使用。

因为内核控制着您计算机的网络,保证其安全性及不被攻破极其重要。要避免某些最新的网络攻击,您应该保持您的内核处于最新版本。您可在 kernel dot org 或通过 Mandrake 更新提供的软件更新包中找到内核的最新版本。

也有一个国际团体对主流 GNU/Linux 内核提供一个统一的加密补丁。这一补丁支持一系列加密子系统以及由于出口限制而不能包含在主流内核中的东西。详情请浏览 GNU/Linux 加密 API 网站。

内核编译选项

在本文撰写时,2.2 内核占据主流。直到今日,大部分的防火墙依然运行于 2.2 之上。然而,2.4 内核带来了许多改变。本章中的大多数编译选项仍然可用,但是伪装(Masquerading)和端口转发(port forwarding)被 iptable 取代了。有关 iptable 详情请参见 Linux 大师网站

对于 2.2.x 内核系列,以下选项均可使用。您应该可以在内核配置过程中看到这些选项。以下许多注释源自 /usr/src/linux/Documentation/Configure.help。在编译内核的 make config 阶段,其帮助系统也使用该文件。有关编译一个全新的内核,请参阅参考手册中编译并安装新内核一章。

  • 网络防火墙 (CONFIG_FIREWALL)

    如果您期望在您的 GNU/Linux 计算机使用防火墙或伪装的话,请开启该选项。如果只是一个普通的客户端计算机的话,不用它也挺安全。

  • IP:转发/网关 (CONFIG_IP_FORWARD)

    如果您启用了 IP 转发,您的 GNU/Linux 主机就基本上变为一台路由器了。如果您的计算机连入网络,您就能够将来自一个网络的数据转发到另一个,并可能绕开为防止此事发生而设置的防火墙。普通的拨号用户可能需要禁用它,而其他用户应该对其安全问题加以关注。作为防火墙的计算机可能需要启用它,并与防火墙软件共同使用。

    您可以使用以下命令动态地启用 IP 转发:

    root#  echo 1 > /proc/sys/net/ipv4/ip_forward
    

    并使用以下命令禁用:

    root#  echo 0 > /proc/sys/net/ipv4/ip_forward
    
  • IP: syn cookies (CONFIG_SYN_COOKIES)

    SYN 攻击”是拒绝服务(DoS)攻击,它将耗尽您计算机上所有资源,迫使您重启。我们想像不出为什么您不能正常启用它。在 2.1 系列内核中,该配置选项仅允许接受 syn cookies,但是并不启用它们。要启用它们,您必需:

    root# echo 1 > /proc/sys/net/ipv4/tcp_syncookies <P>
    

     

  • IP:防火墙 (CONFIG_IP_FIREWALL)

    如果您要把您的计算机配置为防火墙,或是伪装,或是希望保护您的拨号工作站以免某人从 PPP 拨号接口进入,该选项是必需的。

  • IP:防火墙数据包日志 (CONFIG_IP_FIREWALL_VERBOSE)

    该选项将会让您了解您的防火墙收到的数据包的信息,比如发送者、接收者、端口等。

  • IP:丢弃源路由帧 (CONFIG_IP_NOSR)

    应该启用该选项。源路由帧在数据包中包含到达目的地的整个路径。这意味着该数据包所通过的路由器无需检查它就可以转发。这会导致存在潜在安全威胁的数据进入您的系统。

  • IP:伪装 (CONFIG_IP_MASQUERADE)

    如果您的 GNU/Linux 主机作为防火墙所处的局域网中的某个计算机想要向外发送数据,您的主机能够“伪装”为那台主机,即它将数据转发到期望的目的地,并让其看起来像是来自防火墙主机本身。详情请参见 Indyramp 网站第 2 章 配置伪装客户端

  • IP:ICMP 伪装 (CONFIG_IP_MASQUERADE_ICMP)

    前一选项只对 TCPUDP 流量提供伪装,而本选项将添加对 ICMP 的伪装。

  • IP:透明代理支持 (CONFIG_IP_TRANSPARENT_PROXY)

    这允许您的 GNU/Linux 防火墙透明地将来自局域网发往远程主机的任何流量重定向到称为“透明代理服务器”的本地服务器。这让本地计算机以为它们正在同远端通讯,而实际上却是连接到本地代理。详情请参见 IP 伪装 HOWTO

  • IP:总是整理碎片 (CONFIG_IP_ALWAYS_DEFRAG)

    一般,该选项会被禁用。但是,如果您在建立防火墙或是伪装主机,您可能需要启用它。当数据由一个主机发送到另一个,它并不总是作为一个单独的数据包发送,而其实是切分成几个碎片。问题是,端口号只储存于首个碎片中。这意味着其他人可以将原本不存在的信息插入其余的数据包。它也可以防止对没有打补丁的内部主机进行泪滴攻击。

  • 数据包签名 (CONFIG_NCPFS_PACKET_SIGNING)

    这一选项将签署 NCP 数据包以提供更强的安全性。一般,您可以不管它。但是它随时听候吩咐。

  • IP:防火墙数据包 netlink 设备 (CONFIG_IP_FIREWALL_NETLINK)

    这是一个很好的选项。它让您能够在用户区程序中对数据包前 128 字节进行分析,并根据其合法性来决定是否接受或拒绝该数据包。

  • 套接字过滤 (CONFIG_FILTER)

    对许多人来说,不用该选项比较安全。这一选项允许您将任何用户区过滤器连到任何套接字上,以决定是否接受或拒绝数据包。除非您有特别的需求,并且能够编写这样的过滤器,否则请不要使用。也请注意,在本文撰写时,所有协议均被支持,然而 TCP 是个例外。

  • 端口转发

    端口转发是对 IP 伪装的补充,它使得其他人能够在指定的端口上将数据包从防火墙外转发到其内部。这十分有用,例如您想要在防火墙后或是伪装的主机上运行网页服务器,并且需要被外部世界访问。外部客户端向防火墙的 80 号端口发送请求,该防火墙将其转发到网页服务器,网页服务器处理该请求并将结果通过防火墙发送回原来的客户端。客户端会认为防火墙计算机本身在运行网页服务器。这也可以用于负载均衡,比如您在防火墙后有一组相同的网页服务器。有关该功能,请浏览 monmouth

  • 套接字过滤 (CONFIG_FILTER)

    通过使用这一选项,用户区程序能够对任何套接字附加过滤器,并依此命令内核应该允许或是拒绝某种类型的数据通过该套接字。现在,GNU/Linux 套接字过滤对除了 TCP 之外的所有套接字类型均有效。详情请参见 /usr/src/linux/Documentation/networking/filter.txt 这一文本文件。

  • IP:伪装

    2.2 内核的伪装已被改善。它提供额外的对特殊端口伪装等功能。详情请参见 IP 链表(IP Chains) HOWTO

 

内核级设备

GNU/Linux 上也有一些块设备和字符设备对于安全性有帮助。

内核提供两个随时提供随机数的设备:/dev/random/dev/urandom

/dev/random/dev/urandom 都能够生成足够安全的随机数以用于 PGP 密码、ssh 盘问、以及其他需要安全的随机数的程序。从中,攻击者应该不能够通过给出一个数字序列而预测出下一个将会出现的数字。人们努力确保从中得出的数字在任何情况下都是随机的。

这两个设备唯一的区别在于 /dev/random 会用完随机字节,并需要您等待其积累。请注意,在某些系统上,它会阻塞很长一段时间来等待新的用户生成熵进入系统。因此,请谨慎使用 /dev/random。(可能最好的做法是当生成敏感密码信息时才使用它,并告诉您的用户在键盘上乱敲,直到屏幕上出现 OK 为止。)

/dev/random 通过度量中断之间的时间等来生成高质量熵。它将阻塞到获得足够多的随机数据。

/dev/urandom 也一样,但是当存储的熵将要用完,它将返回剩余那些的加密强散列值。这并不同样安全,但对大多数应用来说足够了。

您可以如下读取上述设备:

root# head -c 6 /dev/urandom | mimencode

这将在终端上打印六个可以作为密码的随机字符。

有关该算法的描述,请参见 /usr/src/linux/drivers/char/random.c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值