您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Ubuntu Apache Web服务器安全维护实例解析

添加时间:2015-7-29 16:21:38  添加: 思海网络 

在一个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脚本。

二、身份验证

  我们怎样才能仅允许那些拥有正确口令和用户名的用户访问部分web root呢?下面的步骤将向你展示如何安全地做到这一点:

  1. 基本验证

  允许.htaccess:

# vi /etc/apache2/apache2.conf

  将AllowOveride None改为AllowOveride AuthConfig

  重新加载以使改变生效:

# sudo /etc/init.d/apache2 reload

  创建一个口令文件:

# mkdir /var/www/misc
  # chmod a+rx /var/www/misc
  # cd /var/www/misc
  # htpasswd -bc private.passwords username password Adding password for user username

  创建.htaccess

# cd /home/username/public_html/cgi-bin # vi .htaccess

  在.htaccess中增加下面的命令:

AuthName My Private Area" AuthType Basic AuthUserFile /var/www/misc/private.passwords AuthGroupFile /dev/null require valid-user

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

  改变为:AllowOverride .htaccess Options ExecCGI Order Deny,Allow Deny from all Allow from 192.168.0.0/16

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

# /etc/init.d/apache2 reload

  2、摘要验证(Digest authentication)

  另外一种验证方法称之为摘要验证。如果采用摘要验证,你的口令将不是以明文通过网络传送,因为它们总是作为用户口令的一个MD5摘要传送的。如果采用这种方法,那么通过嗅探网络通信的方法就不能决定用户的口令了。

  下面创建口令文件:

# mkdir /var/www/misc
  # chmod a+rx /var/www/misc
  # cd /var/www/misc

 # htdigest -c private.passwords realm username Adding password for username in realm realm. New password:

  创建 .htaccess :

# cd /home/username/public_html/cgi-bin # vi .htaccess

  在.htaccess中增加下面的内容:

AuthName "My Private Area" AuthType Digest AuthUserFile /var/www/misc/private.passwords AuthGroupFile /dev/null require valid-user

  注意:

  1、一些老的浏览器并不支持摘要验证(Digest authentication)

  2、要完全地保护你的.htaccess就要使用SSL

  三、总结

  使Apache更安全的下一步措施是使用Apache的模块来帮助实现更好的安全性,例如mod_security 和 mod_chroot。此外,要保护我们的验证我们还需要配置SSL。 

关键字:Ubuntu、Apache、Web、服务器

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站