分享
 
 
 

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

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本文全面细致的介绍了在Linux下加固apache+php+mysql的方法,通过仔细阅读本文,你可以快速掌握安全配置apache,php,和mysql的方方面面,还有chroot这个前沿而强悍的技术,依靠这些知识,完全可以让你的WWW服务器在层出不穷的SQL注射(SQL Injection)和CSS跨站脚本攻击(Cross Site Script)中屹立不倒

从动网的几个漏洞到独孤剑客的网站被黑,脚本攻击闹的沸沸扬扬,可见它在网络攻击中终于显现出他的重要性了。由于程序开发人员无意或有意的不小心,用Perl、PHP、ASP等编写的脚本就会出现这样或那样的错误,轻则导致泄露路径,重则导致整个服务器被攻陷甚至蔓延到整个网络。难道我们就非得把所用的脚本读N遍,认真的分析?我相信不是人人都有这等功力的,就算有这样的功力也不会枉费那么多的时间和精力。

你可能会问:“我既想用网上免费的程序,又不想因此受到重创。难道就没有一个两全的办法?”

针对windows主机,我们可以使用IISLockdown,SecureIIS之类的

针对*nix主机给大家提出两个方案,一个就是给apache装上mod-security模块,另外一个办法就是把LAMP放置在一个chroot jail环境中。当然,最强的还是把两个方案结合在一起咯:)

下面,让我们一起来分享这两个方案

前提:我们只需要有普通的linux操作经验,包括vi的使用等

首先,我们先弄清楚几个概念

什么是Debian:一个完全自由的Linux操作系统,他最令我心仪的就是他的apt包管理工具,让你安装或者升级软件无忧!如果你是CERNET用户的话,推荐你到电子科大http://debian.ustc.edu.cn或者我的网站http://secu.zzu.edu.cn升级,CHINANET用户可以在http://mirror.gennkbone.org升级

什么是LAMP:就是Linux Apache MySQL Php的缩写,几乎是最强的架站组合

什么是chroot:是change root的缩写,就是把一个进程守护程序限制在某个特定的root环境中执行,这个被chroot了的程序几乎接近无法访问任何超出了这个root的任何文件或空间,这个root目录(也就是下面我们说到的jail)包含了执行进程守护程序所需要的所有文件,在你正确配置之后,绝大多数的入侵者是不可能跳出jail而接触到外面的文件的。这样我们就可以最大限度的限制入侵者保护自己。

本文主要涉及到的软件

makejail

http://www.floc.net/makejail/

是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写,他有debian和openbsd的版本

Zend Performance Suit http://www.zend.com

Zend公司开发的一套给PHP加速的东西,包括一个代码优化器(optimizer)和一个加速器(accelerator),还有cache功能,很好使的,有了他,php程序跑起来就跟飞一样!可以申请30天试用版本的,如果你觉得好用的话就买下来吧:)mod-security http://www.modsecurity.org/他是apache的一个模块,他有请求过滤,日志审计等功能,可以防止SQL Injection,跨站脚本攻击,很不错的一个模块

我们假设我们手头上有一个装好的debian woody,并且已经正确设置了了apt源

二话不说,先升级到debian sarge,也就是testing版本,我觉得这个版本还是不错的,因为他的软件比较新,而且有security支持,最主要这个版本的软件列表包含makejail这个软件

首先su到root升级系统并安装apache,php,mysql,gd

更新apt源,我在教育网,所以使用中科大的apt源debian.ustc.edu.cn速度很快

[root@debian /]apt-get update (如图update.jpg)

再更新所有软件包

[root@debian /]apt-get dist-upgrade(如图upgrade.jpg)

[root@debian /]apt-get install apache php4 php4-gd2 php4-mysql mysql-server mysql-client

并且把extension=gd.so和extension=mysql.so加到php.ini中

你的系统就已经装上了apache-1.3.27,php-4.1.2,mysql-4.0.13

这样一个基本的LAMP就起来了,简单吧。

再加一个系统用户,这个用户是我们等会chroot要用的

[root@debian /]adduser --home /chroot/apache --shell /dev/null --no-create-home --system --group chrapax

接着我们编辑httpd.conf文件并做一些修改,删除多余的apache模块并激活php模块

[root@debian /]vi /etc/apache/httpd.conf

注释掉除了mod_access,mod_auth,mod_dir,mod_log_config,mod_mime,mod_alias之外的所有模块

去掉注释LoadModule php4_module /usr/lib/apache/1.3/libphp4.so以支持PHP (如图apache_mod.jpg )

设置ServerAdmin fatb@zzu.edu.cn

设置ServerName secu.zzu.edu.cn

下面的Options Indexes Includes FollowSymLinks MultiViews的Indexes去掉,这样避免被别人索引目录

把用户和组改成chrapax

User chrapax

Group chrapax

在下面加上index.php如下

DirectoryIndex index.php index.html index.htm index.shtml index.cgi

默认使用中文字符集

AddDefaultCharset gb2312

加出错重定向,这样当出现下面的错误的时候,用户就会被重顶向到到你指定的页面

ErrorDocument 404 http://secu.zzu.edu.cn/index.php

ErrorDocument 402 http://secu.zzu.edu.cn/index.php

ErrorDocument 403 http://secu.zzu.edu.cn/index.php

ErrorDocument 500 http://secu.zzu.edu.cn/index.php

把signature关掉

ServerSignature Off

如果signature打开的话,当有人访问到一个被禁止或者不存在的页面的话,会出现一些错误信息的

这样的信息,不好,去掉他 (如图403.jpg)

如果不需要cgi支持的话,删除

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

AllowOverride None

Options ExecCGI -MultiViews

Order allow,deny

Allow from all

这行的注释去掉,因为我们需要PHP支持

把AddType application/x-httpd-php .php

最后把多余的Alias,Directory,Location都去掉,保存退出

OK,apache算是配置完毕,我比较喜欢干净的配置文件,下面的命令可以去掉httpd.conf里#打头的行

[root@debian /]mv httpd.conf httpd.conf.bak

[root@debian /]grep -v '#' httpd.conf.bak httpd.conf

到此为止,apache配置文件编辑完毕

接着我们开始加固php,我们打开php.ini

[root@debian /]vi /etc/php4/apache/php.ini

首先打开安全模式,打开他的好处就是PHP文件只能访问所有者和PHP文件所有着一样的文件,即使在chroot环境下也无法访问jail中属主不一样的文件,类似于php shell这样的后门就没用武之地了哦,phpshell是很流行的php后门,他可以执行系统命令,就象他的名字一样,和shell很接近(如图phpshell.jpg)safe_mode = On

如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的

举个例子吧,我们有一个这样的PHP文件片段叫做test.php

// 前面的代码

if ($authorised) {

// 执行一些受保护的动作

}

// 其余的代码

}

?

如果register_globle是打开的话,入侵者可以通过提交这样一个请求来绕过验证

http://www.test.com/test.php?authorised=1

当然,如果你非得使用register_globle的话,我们在后面同样可以使用mod-security来限制一下的

open_basedir =/var/www/

上面的设置就限制了fopen(), file()等函数可以操作的目录范围,避免了入侵者非法读取文件,一定要在/var/www后面加"/",否则/var/wwww下的文件也能被访问

禁止使用phpinfo和get_cfg_var函数,这样可以避免泄露服务信息

disable_functions = phpinfo,get_cfg_var

如果我们使用了被禁止使用的phpinfo函数的话,我们可以看到这样的错误

Warning: phpinfo() has been disabled for security reasons in /var/www/info.php on line 1

设置php程序错误日志,这样我们可以很清楚的知道程序问题所在

error_reporting

=

E_ALL

log_errors = On

error_log = /var/log/php_err.log

默认display_error是打开的,我们在jail没弄好之前还是打开他,或许出错信息可以给我们一点提示的,但是在完工之后记得关闭这个选项啊,因为他显示出的一些出错信息有可能会暴露你的物理路径的。

在这个过程中,最需要注意的就是不能使用root做为php程序的属主,否则php程序就可以随意访问他的属主,也就是root所有的文件了,这样就完全失去了safe_mode的意义了

禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个

allow_url_fopen = Off

OK,保存退出

到此为止,针对php的安全优化基本上完毕,下面我们开始给mysql"做手脚"吧

Debian下用apt装的mysql默认已经禁止从网络连接mysql了的,我们可以从他的配置文件my.cnf里看出来,但是得注意一下,RedHat的RPM,FreeBSD的ports安装,skip-networking是注释掉了的,也就是监听3306端口了,要是mysql出了什么问题,别人就可以有机会利用了

[root@debian /]grep net /etc/mysql/my.cnf

# The skip-networkin optio

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有