首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
Google
首页 入门 Linux编程 系统管理 网络管理 Linux认证 Unix/BSD Linux数据库 Linux集群 Linux手册 Linux下载 Ubuntu 论坛 专题 RSS
您现在的位置: 中国IT实验室 >> Linux >> 网络管理 >> Linux服务器 >> 正文

实例:保障Ubuntu Apache Web服务器安全

      在一个Linux发行版本上设置一个Web服务器是一个很快的过程,不过要让这种设置成为一种安全的过程可能就需要花点儿工夫。本文将向你展示如何有效地使用访问控制和身份验证策略,使你的Apache Web服务器安全。下面所有的例子都假定你用的是Ubuntu7.10,并对Apache进行了基本的配置。不过,这些例子将帮助任何一位运行Apache服务器的用户获得更大的安全性,因为其要领仍然适用于其它Linux系统。本文中所涉及到的方法应当首先在一台测试服务器上进行试验,在成功之后才能迁移到一个实际使用的Web服务器上。

  一、文件许可和访问控制

  1. 用户和组

  首先要保障的是Apache不要以root身份运行,因为如果Apache被攻破的话,那么攻击者就可以控制root账户。下面让我们看一下Apache正以何种用户和组的身份运行:

  运行下面的命令:

      # ps auwwfx | grep apache www-data 25675 0.0 0.0 10348 508 ? S Jan21 0:00 \_ /usr/sbin/apache2 -k start
  www-data 25686 0.0 0.2 231816 2208 ? Sl Jan21 0:00 \_ /usr/sbin/apache2 -k start
  www-data 25688 0.0 0.2 231816 2200 ? Sl Jan21 0:00 \_ /usr/sbin/apache2 -k start

  可以看出,www-data是运行Apache的用户。不过,我们需要编辑Apache的配置并创建一个新用户和组:

      # groupadd www-data
  # useradd -g www-data www-data
  # vi /etc/apache2/apache2.conf

  将User root Group root改为:

      User www-data Group www-data

  然后重新加载以使改变生效:

      # /etc/init.d/apache2 reload

  2. 服务文件准许

  一个最易被忽视的安全问题是如何正确地使用chmod命令。例如,我们在Apache 的html root目录中创建了一个index.cgi文件,不过在浏览器中打开这个文件时却被告知拒绝访问。为了让我们的index.cgi文件正常工作,我们执行一个chomod 777 index.cgi。在我们如此试验时,每一个Apache管理员都在考虑这样安全吗?答案是否定的。不过,如何使这种许可足够安全并能允许index.cgi脚本正常运行呢?

  Apache需要得到准许来访问index.cgi文件。不过,我们不希望人人都能读写index.cgi。这个文件的所有者应当拥有读写这个文件的许可。为此我们需要下面的命令:

      # chmod 755 index.cgi

  将下面的一行加入到你的Apache.conf文件中是很重要的:

       Options FollowSymLinks AllowOverride None

  注意:

  1、上面的命令行防止Apache访问root之外的文件。

  2、有一些Linux发行版本比其它版本拥有更好的安全性。EnGarde Secure Linux就是一个很好的例子,因为它默认情况下就在其Apache配置文件中包含了上面的代码行。

  我们并不想让用户在文件系统上的任何地方运行CGI脚本,不过我们确实需要它们在root中运行。对这个问题的解决办法是“Options ExecCGI”指令。

  例如,将下面的行添加到/etc/apache2/apache2.conf文件中:

      AllowOverride None Options ExecCGI Order allow,deny Allow from all

  重新加载Apache:

      # /etc/init.d/apache2 reload

  那么,如果你拥有只应当被某个网络或IP地址访问的资源怎么办?对这个问题的解决办法是使用我们的Apache配置来为你增强安全性:

  先说一个只允许访问192.168.0.0网络的例子,需要改变/etc/apache2/apache2.conf文件中以下的一行:

      AllowOverride None Options ExecCGI Order allow,deny Allow from all

    将其改为:

      AllowOverride None Options ExecCGI Order Deny,Allow Deny from all Allow from 192.168.0.0/16

  然后重新加载以使更改生效:

      # /etc/init.d/apache2 reload

  现在只有你内部网络上的用户能够在/home/username/public_html/cgi-bin中运行CGI脚本。

[1] [2] 下一页

【责编:Zenghui】
中国IT教育
相关产品和培训
文章评论
 友情推荐链接
 专题推荐

 ·防范Linux病毒 打造没有病毒的乐土…
 ·Linux Shell编程实用指南…
 ·Linux日志分析与管理
 ·揭密Linux内存管理
 ·邮件服务Sendmail应用配置
 ·Linux 安全管理…
 ·Linux 下DNS服务器架设攻略…
 ·Linux 下的路由的配置与应用…
 ·专题:Apache实用手册
 ·全面剖析Linux文件系统
 今日更新
 认证培训
 频道精选
 Windows频道导航