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. 再回首HTML

    前言 本阶段视频自己前后看了两遍,感觉效果还是不错的,鉴于昨天上午整理了一些笔记,对HTML的理解深刻了一些.所以在这篇博文中就不再解释关于HTML一些定义的东西,这篇博文主要记录一些常用标记,为以后 ...

  2. OC 中的 weak 属性是怎么实现的?

    OC 中的 weak 属性是怎么实现的,为什么在对象释放后会自动变成 nil?本文对这个问题进行了一点探讨.环境 mac OS Sierra 10.12.4 objc709参考答案 搜索后发现runt ...

  3. Kubernetes基本概念之Name和NameSpace

    在Kubernetes中,所有对象都会被指定一个唯一的Name和UID. 用户还可以指定一些不要求唯一性的数据附加到对象上,例如Label和Annotation. 1. Name Name是创建一个K ...

  4. Git练习1

  5. 手写的select 下拉菜单

    我们在进行表单设计时,可能要用到select下拉选项控件,遗憾的是,IE浏览器默认的select控件外观非常丑陋,而且不能用样式来控制,不能在选项中添加图片等信息.今天我将通过实例来讲解如何用CSS和 ...

  6. sysbench压力测试总结

    sysbench压力测试工具简介sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Orac ...

  7. servlet获取并存储web.xml中context-param参数

    在web.xml中定义了context-param,一般不会随意改动,所以在监听器中做一次处理,容器启动时读取并存储在Properties中,方便以后取值. SysProperties 类用于存储 c ...

  8. mysql 帮助手册 以及 warning: World-writable config file 以及 ERROR 1840 (HY000) at line 24:

    1. mysql --help 2.报错 报错Warning: World-writable config file http://www.jb51.net/article/99027.htm 最近在 ...

  9. Unity www动态加载网上图片

    一. 1.新建一个UGUI的Button,删掉它的Image组件,添加一个Raw Image组件.如图: 由于删除了Image组件,所以画圈的位置是空的,运行后会自动把Raw Image添加到那里. ...

  10. [知乎作答]·关于在Keras中多标签分类器训练准确率问题

    [知乎作答]·关于在Keras中多标签分类器训练准确率问题 本文来自知乎问题 关于在CNN中文本预测sigmoid分类器训练准确率的问题?中笔者的作答,来作为Keras中多标签分类器的使用解析教程. ...