apache的安全增强配置(使用mod_chroot,mod_security)

作者:windydays      2010/8/17

LAMP环境的一般入侵,大致经过sql注入,上传webshell,本地提权至root,安装rootkit等步骤。采用如下的配置,mod_chroot和单独分区挂载可以让本地提权变得极为困难,而mod-security可以封堵一般的sql注入等应用层攻击。

以下内容是在ubuntu10.04上实践以后总结出来的,直接上命令,就不做过多解释了,水平有限,错误在所难免,欢迎指正。

首先确保apache,php,mysql已经正常工作,出现问题的话,查看/var/log/apache2, /var/log/syslog,/var/log/mysql/error.log尤其是apparmor导致的权限错误,不易发现。

1.mod_chroot的安装,配置

目标是chroot到/var/www。

(1) 安装:

sudo service apache2 stop

sudo apt-get libapache2-mod-chroot

sudo vi /etc/apache2/mod-available/mod_chroot.conf

内容为

<IfModulemod_chroot.c>

LoadFile /lib/libgcc_s.so.1

ChrootDir /var/www

</IfModule>

sudo a2enmodmod_chroot

/etc/apache2/site-enabled/000-default中DocumentRoot改为 /

sudo ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid

并把

ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid

加到/etc/rc.local中

sudo mkdir /var/www/tmp #放session

sudo chmod 1777tmp

sudo mkdir -p /var/www/var/run/mysqld

sudo ln -s / /var/www/var/www

安装好apache,静态页面和php正常后,弄mysql

1),sudo service mysql stop.

2).改/etc/apparmor.d/usr.sbin.mysqld,

把"/var/run/mysqld.sock w,"那一行复制并改为

"/var/www/var/run/mysqld.sock w,"

3),改/etc/mysql/my.cnf

在[client],[mysqld_safe],[mysqld]每一节里socket路径改为

"socket = /var/www/var/run/mysqld/mysqld.sock"

4),sudo servicemysql start.

一些其他问题

date()不正常,解决办法:

sudomkdir -p /var/www/usr/share /var/www/etc

sudo cp -rp /usr/share/zoneinfo /var/www/usr/share/

sudo cp /etc/localtime/var/www/etc/

DNS可能出问题(没试过)

sudo cp /etc/resolv.conf/var/www/etc/resolv.conf

找不到错误页面

sudo cp -rp /usr/share/apache2//var/www/usr/share/

2.mod_security的安装,配置

安装

sudo aptitude install libapache2-mod-security2

sudo cp/usr/share/doc/mod-security-common/examples/rules/modsecurity_crs_10_config.conf  /etc/apache2/mods-enabled/mod-security.conf

sudo a2enmod mod-security

sudo apache2ctl stop

修改/etc/apache2/mods-available/mod-security.conf中的debug_log和audit_log路径到合适的位置,并添加如下两行

Include/usr/share/doc/mod-security-common/examples/rules/modsecurity_crs_10_global_config.conf

Include/usr/share/doc/mod-security-common/examples/rules/base_rules/*.conf

sudo apache2ctlstart

#/usr/share/doc/mod-security-common/examples/rules/目录下还有一些规则可用

参照gentoo的ebuild中的如下内容(http://gentoo-portage.com/www-apache/mod_security/ChangeLog)

  1. if ! use vanilla; then
  2. mv "${D}"${APACHE_MODULES_CONFDIR}/mod_security/modsecurity_*{41_phpids,50_outbound}*/
  3. "${D}"${APACHE_MODULES_CONFDIR}/mod_security/optional_rules || die
  4. fi

modsecurity_*{41_phpids,50_outbound}*的这几个规则还是不要用比较好。

另外,http://www.gotroot.com/tiki-index.php?page=mod_security+rules提供一些规则

3.另外,可以把/var/www/放在一个单独的分区上,用noexec,nosuid,nodev参数挂载,打开mysql的apparmor,可以极大增强安全性。

参考资料:

/usr/share/doc/mod-chroot-common/

http://core.segfault.pl/~hobbit/mod_chroot/index.html

http://server.it168.com/a2010/0714/1077/000001077357.shtml

http://www.howtoforge.com/chrooting-apache2-mod-chroot-debian-etch

/usr/share/doc/mod-security-common

后期补充一些:

chroot的关键是确保/var/www/ ,/var/www/var/www都存在,并且/var/www/var/www 是指向/的符号连接

对apache chroot的过程,我的理解(如有不对,欢迎指正)是
1,先初始化其他模块
2,chroot到/var/www
3,   改变当前目录到/var/www(此时实际上是改变到/var/www/var/www目录下)
4,当http请求到来时,比如http://127.0.0.1/index.php,根据vhost的配置(如果documentroot是/,网页实际放在/var/www/下的话),apache寻找/index.php(实际上是/var/www/index.php)

另外,还有个诊断方法是查看/proc/<apache pid>/root和/proc/<apache pid>/cwd,一个是apache的root路径,一个是apache的当前目录(<apache pid>是apache的pid ),再看看apache的访问日志

apache的安全增强配置(使用mod_chroot,mod_security)的更多相关文章

  1. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  2. centos7 apache httpd安装和配置django项目

    一.安装httpd服务 apache在centos7中是Apache HTTP server.如下对httpd的解释就是Apache HTTP Server.所以想安装apache其实是要安装http ...

  3. Linux下apache+phppgadmin+postgresql安装配置

    Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...

  4. apache 虚拟主机详细配置:http.conf配置详解

    apache 虚拟主机详细配置:http.conf配置详解 Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd. ...

  5. Apache下开启SSI配置使html支持include包含

    写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到 ...

  6. php7+apache的环境安装配置

    因为刚开始接触php,所以要对php的开发环境进行搭建. 1.首先到Apache的官网下载最新版: http://httpd.apache.org/download.cgi: 参照该网址配置Apach ...

  7. windows 7 64bit 下apache php mysql 环境配置

    在64位环境下安装apache,php和配置过程 准备好安装包.(64位版本) Apache 下载地址:http://www.apachelounge.com/download/ Php 下载地址:h ...

  8. Apache + Tomcat集群配置详解 (1)

    一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...

  9. (转)Apache+Tomcat集群配置

    本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是ht ...

随机推荐

  1. cf834D(dp+线段树区间最值,区间更新)

    题目链接: http://codeforces.com/contest/834/problem/D 题意: 每个数字代表一种颜色, 一个区间的美丽度为其中颜色的种数, 给出一个有 n 个元素的数组, ...

  2. WebAPI学习及Swagger使用

    本文用来保存自己学习WebAPI和Swagger使用过程中参考的文章,以及对WebAPI的初步了解. 1.RESTful风格 WebAPI只支持Http协议: 1.1.WebAPI与MVC的区别 Va ...

  3. Java实现发送邮箱验证码/注册验证链接

    本文以163邮箱为例 1.准备(邮箱账号,邮箱必须设置POP3/SMTP/IMAP,设置步骤如下:) >>步骤:1 开启授权码服务 >>步骤:2 手机获取验证码 >> ...

  4. Spring是一个分层的Java

    Spring简介 Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架.Spring核心是IOC和AOP. Spring优点 -方便解耦,简化开发,通过Spring提供的IoC容器, ...

  5. SpringMVC 思想介绍

    MVC 思想简介 博客园好像不支持发布markdown的时序图, 如果你会markdown并且不太熟悉Springmvc执行流程, 照着图在Markdown上面敲一遍执行流程,这是我经历过的最快的记忆 ...

  6. thinkphp实现登录后返回原界面

    主要思路还是用session记录原地址,在登录后再跳转回原界面 先保存请求login方法界面的url public function savelogin(){ session('returnUrl', ...

  7. 设计模式UML模型图

    1.抽象工厂(Abstract Factory)模式 意图:为特定的客户(或情况)提供特定系列的对象. 2.类的适配器(Adapter)模式 意图:将一个类的接口转换成客户希望的另外一个接口. 3.对 ...

  8. 7、python数据类型之集合set

    数据类型之集合setset 不允许重复的无序集合,不能通过下标取值,因为无序1.创建   创建空集合   s ={} 默认类型为字典,所以不是空集合,空集合如下   s = set()   s = { ...

  9. unique key 唯一约束

    #添加唯一约束mysql> alter table tb2    -> add unique key(name)   ->;#删除唯一约束mysql> alter table ...

  10. 使用URLRewriter实现URL重写

    优点 1)隐藏真实URL,提高安全性 2)更加友好的URL,好记(看博客园就行知道啦) 3)便于搜素引擎收录 ......... 可能的缺点 使用URL重写可能导致: 1)图片路径的问题 2)CSS路 ...