服务器 频道

打造Linux下超级安全的LAMP服务器(下)

  然后我们装Zend Performance Suit,在安装的时候,他问你使用的用户的时候,记得写chrapax而不是www-data

  order allow,deny

  allow from 211.43.125.63(你的IP)

  deny from all

  Options All

  下面重头戏到了,chroot,非常重要的一步,但可能还是比较简单的一步,先把几个python写的配置文件复制到/etc/makejail下

  [root@debian /etc/makejail]cp /usr/share/doc/makejail/examples/apache.py ./

  然后编辑apache.py文件添加修改相应的信息

  users=["chrapax"]

  groups=["chrapax"]

  packages=["apache","apache-common","php4","php4-gd","mysql-common","libapache-mod-security"]

  然后执行makejail命令

  [root@debian /etc/makejail]makejail apache.py

  完成之后,我们得先做个软连接并把chrapax从passwd和group文件分离出来

  [root@debian /etc/makejail]ln -s /var/chroot/apache /apache

  [root@debian /etc/makejail]grep chrapax /etc/passwd > /apache/etc/passwd

  [root@debian /etc/makejail]grep chrapax /etc/group > /apache/etc/group

  [root@debian /etc/makejail]cp /etc/mime.types /apache/etc/

  然后在/etc/init.d里建一个叫chrapax的文件并让他可执行,内容详见光盘中的chrapax

  [root@debian /etc/makejail]cat > /etc/init.d/chrapax

  [root@debian /etc/makejail]chmod +x /etc/init.d/chrapax

  接着使用rcconf命令让他在系统启动的时候启动(如图rcconf.bmp)

  [root@debian /etc/makejail]rcconf

  启动chroot的apache

  [root@debian /etc/makejail]/etc/init.d/chrapax start

  先测试一下php和mysql连接是否有问题

  [root@debian /etc/makejail]cat > /apache/var/www/mysql.php

      $conn = mysql_connect("localhost", "fatb", "urpassword")

        or die;

      print "php can work with mysql now";

      mysql_close($conn);

      phpinfo();

  结果浏览器返回

  Warning: Can''t connect to local MySQL server through socket ''/var/run/mysqld/mysqld.sock'' (2) in /var/www/mysql.php on line 2

  但是我们可以看到在/var/run/mysqld/下的确有mysqld.sock文件,其实就是因为我们已经chroot apache了,他只能访问apache root jail里的东西,也就是/var/chroot/apache下面的东西,而mysqld.sock明显在jail外面,所以连接不上当然是很正常的了,解决这个问题的方法也很简单,做个硬连接就是了

  [root@debian /apache/var/run/mysqld]ln /var/run/mysqld/mysqld.sock mysqld.sock

  再访问一下mysql.php看看,果然OK了吧(如图ok.bmp)

  做硬连接很麻烦,而且在访问mysqld的时候导致apache用资源好厉害,解决的办法就是在mysqld的配置文件里加上bind-address 127.0.0.1这样就通过tcp连接而不是通过socket连接了

  经过我们这样一弄,整个LAMP服务器就安全的多了,就算万一php程序编写的不安全或者apache,php出了什么漏洞,想入侵进来并且跳出root jail还是非常困难的  

  参考:

  security apache step by step

  security php step by step

  security mysql step by step

  (不知道为什么在家里上网搜索不到这三个文章了,在www.securityfosuc.com的,有兴趣的可以去看看)

  mod-security manual

  san的php安全配置

  http://www.xfocus.net/articles/200111/304.html

  版本信息

  v1@2003.11 初始版

  v2@2004.1  解决chroot后php程序连接mysql的时候apache耗用大量资源的问题

      修正ustc.edu.cn为电子科大而不是中科大:)

  v3@2004.9  增加allow_url_fopen = Off

      增加mod-security对sql injection的过滤

0
相关文章