Apache服务之Chroot环境设置

现在要安装Chroot环境了,为什么要安装Chroot环境呢?因为它安全,chroot可以把进程的根目录变成不是“/”目录的其他目录。这就意味着该进程被锁定到一个">虚拟文件系统的根中。如果你再适当地配置你的chroot jail,Apache和它的子进程(比如CGI脚本)将除于chroot jail环境之外不能访问其他任何东西。同时,非根进程也不能离开chroot jail环境的。(注意:从上面描述我们不难看出把设备文件,被suid的二进制文件以及硬链接放入jail是十分不明智的。原因?因为它们可以破坏 chroot jail环境)

使用chroot环境有两种方式:一则是常规方式,在该方式下你必须要十分小心地建立一个“虚拟根”,并将程序可能需要的文件给包含进来。一般说来有:

C 语言库
其他的库 (如libssl、libm及libmysqlclient等)
解析配置文件(如/etc/nsswitch.conf、/etc/resolv.conf等)
用户相关文件 (/etc/passwd, /etc/group)
为 log 文件指定目录
程序所需的附加模块(如mod_php 和 其他模块)
 
然后,你得运行程序,读错误信息,拷贝错失的文件,拆腾一通之后,得以运行正常。但还没完,想一下升级时的情形吧,你将不得不保持你当前的“虚拟根”,如果在libssl中有一个Bug,那么你就必须要将新版本放在两个地方。是不是有点吓着了?所幸还有另一种mod_chroot方式。 mod_chroot允许你在一个chroot jail环境里运行Apache2,而无需附加任何文件。chroot()系统会在程序开始引导时是最后被调用,因为Apache2在开始引导期间需要访问整个文件系统 - 那时所有的库文件已被引导并且日志文件也已经被打开。运行chroot jail环境中的Apache(和CGI/Perl/PHP)是很需要些技巧的。我们下面开始构造我们的chroot环境。首先安装mod-chroot

$sudo apt-get install libapache2-mod-chroot

该包会在/etc/apache2/mod-available/目录中生成一个mod_chroot.load,然后我们制作mod_chroot.conf文件:

ChrootDir /var/www

为使该模块能被引导,可以做该模块的软链接,如果想快点的话,可以用

$sudo a2enmod mod_chroot

然后为了使所有配置都得到改变,运行

$sudo /etc/init.d/apache2 force-reload

但如果这样的话,就存在一个问题,我们的DocumentRoot是/var/www的,现在虚拟根已经指向了/var/www,这样我们就必须将`DocumentRoot`修改成“/”才算正确!所以要修改/etc/apache2/sites-enabled/000-default文件

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost

#   DocumentRoot /var/www/
#   <Directory />
#      Options FollowSymLinks
#      AllowOverride None
#   </Directory>
#   <Directory /var/www/>
#      Options Indexes FollowSymLinks MultiViews
#      AllowOverride None
#      Order allow,deny
#      allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
#   </Directory>

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /htdocs>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

#   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
#   <Directory "/usr/lib/cgi-bin">
#      AllowOverride None
#      Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
#      Order allow,deny
#      Allow from all
#   </Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

#    Alias /doc/ "/usr/share/doc/"
#    <Directory "/usr/share/doc/">
#        Options Indexes MultiViews FollowSymLinks
#        AllowOverride None
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.0/255.0.0.0 ::1/128
#    </Directory>

</VirtualHost>

时间: 2024-10-22 10:45:27

Apache服务之Chroot环境设置的相关文章

linux下apache+mysql+php开发环境纯源代码编译搭建

apache|mysql|编译|源代码 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过程 通常安装一台服务器当然使用rpm是最方便的,不需要考虑太多配置的问题,就可以轻松获得需要的环境了.不过rpm包互相关联的问题也不是这么容易解决. apache,mysql,php这三个应用从源代码编译安装还是比较简单的,配置参数不算复杂,而且没有太多的依赖关系,从源码编译出来的系统也比较稳定一些,方便未来打补丁和升级工作. 编译安装的前提是,系统

Apache+Servlet+Jsp环境设置(中)

apache|js|servlet (二)Apache Server 1.双击apache_1_3_12_win32.exe文件进行安装,使用缺省配置进行安装,缺省安装目录为: C:Program FilesApache GroupApache,我用$APACHE_ROOT来代替安装目的地: 2.修改$APACHE_ROOTconfhttpd.conf: 1)PORT 设置Apache Web Server运行时使用的端口号,由于我这里的IIS也在运行,IIS使 用了80端口号,于是我把它改成P

C语言CGI和Apache服务器的开发环境

今天中午在研究c语言gui时看到了cgi.之前花了些时间找c语言的gui框架,也找到了几个暂时比较满意的,但是看到了cgi后觉得也可以尝试一下.在web开发方面有点经验,或许会简单一些.Google了一下,现在讨论cgi,尤其是c语言cgi的话题已经很少了,花了些精力,总算搭建好了一个可用的开发环境,也运行出了程序.下面简单分享一下,我的实验过程.其实是很简单的事情. 首先,需要用到的这些工具和代码: C语言编译器,我用了IDE(Vsiual C++ 2008 Express Edition,下

apache服务出现Forbidden 403问题的解决方法总结_Linux

在配置Linux的 Apache服务时,经常会遇到http403错误,我今天配置测试时也出现了,最后解决了,总结了一下.http 403错误是拒绝访问的意思,有很多原因的.还有,这些问题在win平台的Apache里一样会发生!我按照经验总结的主要有以下4种原因! 本人测试的环境 是:Scientific Linux 5.3(与RHEL和CentOS百分百兼容!),其它版本的Linux应该通用,没测试. 1. 访问的文档权限不够.要755以上权限.解决方法:用命令chmod 755 /var/ww

win+apache+php+mysql+phpmyadmin环境配置方法_服务器

win+apache+php+mysql环境配置2007-03-09 23:38由于要把学生在线的博客从asp转到php,需要以上的环境配置,在网上找了一些资料,但是都是比较老的,所以决定自己总结一下.         我用的版本也不是最新的,但是是比较稳定的,discuz的官方网上有一些好的说明,以及一些好的软件的下载地址.http://www.discuz.com/index.php?category=4,大家可以看一下. 我用的软件如下: apache:    apache_2.2.3-w

windows下apache搭建php开发环境_php实例

本文详细介绍了在Windows2003下使用Apache2.2.21/PHP5.3.5/Mysql5.5.19/phpMyAdmin3.4.9搭建php开发环境. 第一步:下载安装的文件 1. Apache 版本 httpd-2.2.21-win32-x86-no_ssl.msi 2. MySQL 版本 mysql-5.5.19-win32.msi 3. PHP 版本 php-5.3.5-Win32-VC6-x86.zip 4. phpMyadmin 版本 phpMyAdmin-3.4.9-al

Fedora 21中配置LAMP(Apache+Mysql+Php)环境

安装了一个fedora linux,桌面ui还算是过得去,然后就开始配置环境. 首先打算配置一个LNMP环境的,因为阿里云上面就是LNMP环境,Nginx的反向代理功能还是挺不错的,但是本机,就打算配置Apache的了,下面是配置LAMP环境的实测流程: 一.安装apache服务器 1.1使用yum进行安装: # yum install httpd 1.2配置Apache能够随系统启动而启动 #chkconfig --levels 235 httpd on 1.3启动/关闭Apache服务: #

Windows下Apache应用环境塔建安全设置(目录权限设置)_win服务器

环境配置情况:apache安装目录:d:\www-s\apachephp目录:d:\www-s\php5mysql目录:d:\www-s\mysql网站根目录:d:\www\htdocs 专门为运行Apache运行所使用的用户:apache-u(可不隶属于任何用户组) PS:这里只说Windows下Apache应用环境相关的目录权限设置,至于其他基本的服务器目录权限设置就不提啦! Windows下Apache应用环境塔建目录安全设置操作步骤: 配置目录权限 Apache所在的根目录(也就是D盘)

阿里云ECS服务器CentOS7上安装Apache服务

阿里云ECS服务器CentOS7上安装Apache服务 ---------------------------------------------- 使用root登录 1.确保服务器系统处于最新状态 [root@localhost ~]# yum -y update 如果显示以下内容说明已经更新完成 Replaced:   grub2.x86_64 1:2.02-0.64.el7.centos   grub2-tools.x86_64 1:2.02-0.64.el7.centos