本文详细介绍通过Chroot机制让服务器安全到底
其中ulimit、lynx和awk是辅助性的程序。另外需要注意的是,程序使用不同的参数时,可能会使用不同的库文件,因此为了让Apache完整运行,使用下面的命令来跟踪所有可能的文件:
#/usr/local/bin/addjailsw /var/chroot -P httpd "-k start -DSSL"
用上述的参数替换引号中的参数,完成全部的工作。
最后,让成功jail的Apache运行起来:
#su - httpd &
打开浏览器进行测试,访问Web服务器时记住加上8080端口号。
jail高级应用
在前面的介绍中,使用了jail软件包中的三个Perl脚本。这里详细介绍这三个脚本的使用,以便高级用户使用。
mkjailenv
用法:mkjailenv chrootdir
作用:创建chroot“监牢”目录,并且从真实文件系统中拷贝基本的软件环境。
参数:
chrootdir指定chroot“监牢”的路径。
addjailsw
用法:addjailsw chrootdir [-D] [-P program args]
作用:从真实文件系统中拷贝指定的文件及其相关文件。
参数:
chrootdir指定chroot“监牢”的路径。
-D显示详细信息。
-P program args指定要添加到“监牢”中的软件。program可以是个文件名,也可以是文件的完整路径;args是参数。比如可以这样执行addjailsw:
#addjailsw /var/chroot -P vi "-c q"
addjailuser
用法:addjailuser chrootdir userdir usershell username
作用:创建新的chroot“监牢”用户。
参数:
chrootdir指定chroot“监牢”的路径。
userdir指定新添加用户的主目录(相对于chroot“监牢”目录)。
usershell指定新用户使用的Shell的完整路径(比如/bin/bash)。
username为新添加的用户名。
比如:
#addjailuser /var/chroot /home/ftp /bin/csh ftp
这个脚本会自动修改“监牢”中的/etc/passwd、/etc/group和/etc/shadow文件。
从上文看,如果仅使Apache一个软件运行在“监牢”中,mkjailenv似乎过于“热心”了,因此可以不运行mkjailenv /var/chroot命令,而只运行addjailsw /var/chroot -P httpd或在调试完chroot“监牢”后删除多余的文件,并修改/etc/passwd中多余的用户信息。由此想到,现在大多数流行的Web站点都采用Apache+PHP+MySQL+SSL的搭配(可能还会有FTP、Mail、Perl等组件),因此完全可以建立一个综合的Web“监牢”。系统管理员可以为这个“监牢”设置软件环境,当然这个环境只包括维护Apache+PHP+MySQL+SSL这些组件的必备工具,如使用Bash、SSH、编译软件或上传等。这可能是一个浩大的工程,但是却非常有意义。参考上面的方法,大家可以尝试jail出完美的服务器来。
责编:豆豆技术应用