Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

让 Linux 更安全(三)

来源:IBM DW中国 作者:Mario Eberlein  时间:2007-04-22 点击: [收藏] [投稿]
  • 始终拥有可用的近期系统备份。

  • 对于业务中每一个关键的系统,您都应该有一个与产品环境的硬件和软件相同的独立测试环境。首先在测试环境中获得关于更新的经验,以防止在管理产品系统时出现意外。

  • 理想情况下,您应该已经准备好一套回归测试,在更新包括系统在内的所有程序之前和之后对适当的功能和性能进行对比。至少,要确保拥有可重复的而且文档化的质量控制检查,以保证在修改产品环境之前测试环境中的主要功能和服务不会受到影响。

  • 对于小型网络来说,手工安装更新或许可行,但规模较大时很快就难以处理了。这经常会导致更新不能被安装。使用商业的或者开放源代码的系统管理或者软件分发工作来简化更新的部署。

  • 我们是不是提醒过您最好在手边准备一个备份?我们还要再提醒一次。

  • 制定一个安装更新的计划,并考虑:
    • 更新系统的次序
    • 对您的业务来说关键的系统
    • 系统怎么样互相依赖
    • 哪个系统包含机密数据

  • 当使用完整性检查工具时(强烈建议至少对服务器使用),为了能识别出意外的更改,要记得更新系统在已知安全状态下占用内存的基线。

  • 在安装任何修订之前,要使用密码检验和工具检查软件的完全性和真实性(尤其是从 Web 站点或者 ftp 服务器上下载时)。在 Linux 领域中,通常使用 MD5 和/或 SHA-1 检验和。如果软件以 RPM 包的形式提供,那么提供商应该已经提供了一个 GnuPG 签名。您可以运行 $ rpm -v --checksig <name>.rpm 命令来检查它。成功的响应应该是 "<name>.rpm: md5 gpg OK";不成功的会是 "<name>.rpm: md5 GPG NOT OK"

    您可以使用 $ md5sum <name>.rpm$ sha1sum <name>.rpm 来确认 MD5 或 SHA-1 检验和。如果您下载的某个文件中包含的检验和可用于多个文件(大部分情况下称为 md5sum.asc 或 <name>.md5),那么您可以使用 $ md5sum -c md5sum.asc

  • 最后,但不是最不重要的是,要备份您的系统。(我们是不是已经说过了?)
  • 将您的安全计划付诸实行

    如本系列 第 2 部分 中所讨论的,现在来将文档化的安全计划应用到已经安装的系统。弄清楚哪些进程正在您的系统中实际地运行,并禁用不需要的那些。要定期地检查不正常的行为;未知的进程可能会提供不必要的服务,预示着系统的受损。

    本节向您介绍怎么样找出并禁用那些不必要的(潜在危险)进程,以及怎么样为系统准备定期审计。

    找出并禁用不必要的进程

    理想情况下,您应该明白在您的系统中运行的每一个进程。要获得所有进程的列表,可以执行命令 ps -ef(POSIX 风格)或 ps ax(BSD 风格)。进程名有方括号的是内核级的进程,执行辅助功能(比如将缓存写入到磁盘);所有其他进程都是使用者进程。您会注意到,就算是在您新安装的(最小化的)系统中,也会有很多进程在运行。熟悉它们,并把它们记录到文档中。

    网络监控工具

    这些工具可以帮助进行网络监控:

    • Nmap(Network Mapper)是一个免费的开源工具,可用于网络探察和安全审计。完成安装和设置后使用它来检查您的系统。
    • IPTraf 是一个用于 Linux 的基于控制台的网络统计工具。它收集各种数据,比如 TCP 连接数据包和字节计数、接口统计和活动指示器、TCP/UDP 传输衰减、局域网工作台数据包和字节计数。
    • Multi Router Traffic Grapher(MRTG)是一个用于监控网络链路上传输负载的工具。MRTG 会生成包含图形的 HTML 页面,为此传输提供生动的可视化描述。参见 MRTG 索引页 上的示例。

    现在让我们来看那些开放网络连接的进程;它们受到攻击的潜在可能最大。要获得所有 TCP 或 UDP 连接的列表,执行命令 netstat -atu(附带名字解析,易读)或者 netstat -atun (没有名字解析,更快)。在这个列表中,特别要注意状态为 LISTEN 的 TCP 连接和所有的 UDP 连接,因为服务器通过这些连接来接收到来的连接。

    如果服务器侦听 127.0.0.1/localhost,那么它只能由系统本身(环回接口)访问到。因此它的暴露程度要远低于侦听外部可达接口甚至 0.0.0.0(= *,如果打开名字解析)的服务器,后者可以由任意网络接口所访问。

    如果您使用过 netstat -atun,那么您需要自己翻译端口号。可以在 /etc/services 中去查找它们。使用附加的参数 -p 来显示相应的进程,如 清单 5 所示。

    在这个示例中,您可以推断出 portmapper 和 graphical user interface(X)是特定的服务器所不需要的。portmapper 为 NFS 等各种基于 RPC 的服务提供标准端点(endpoint);系统并不提供 NFS 共享。当系统用作工作站时 X 窗口是有用的,但在服务器上的使用受限。

    确定这些进程是怎么样被启动的(通过 /etc/inittab,通过引导脚本,等等)并如前所述的那样禁用它们。如果程序是由另一个程序启动的,那么这项任务可能会更具挑战性:X 服务器很有可能是由显示管理器启动的,比如 xdm、kdm 或 gdm,其本身并不会出现在 inittab 或引导脚本目录中。

    netstat 所列出的连接并不是自动都可以由网络上的所有计算机来使用。在任何数据包到达开放的连接之前,基于 Linux 内置功能的防火墙可以进一步控制访问。

    审计准备

    安装了基本的系统并安全地配置后,您的最终目标是保持系统的安全。为了识别出对系统的不必要修改,使用审计工具来记录处于希望是已知且安全的状态的系统的内存占用,并检测对它的修改。

     如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



    上一篇: Linux 更安全(二)   下一篇:基于LINUX蜜网的防御系统

    文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
    更多相关文章
    Power by linux-cn.com 粤ICP备05006655号