ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:19.33KB ,
资源ID:8934922      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8934922.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(打造Linux下超级安全的LAMP服务器.docx)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

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

1、打造Linux下超级安全的LAMP服务器 编前:本文全面细致的介绍了在Linux下加固apache+php+mysql的方法,通过仔细阅读本文,你可以快速掌握安全配置apache,php,和mysql的方方面面,还有chroot这个前沿而强悍的技术,依靠这些知识,完全可以让你的WWW服务器在层出不穷的SQL注射(SQL Injection)和CSS跨站脚本攻击(Cross Site Script)中屹立不倒 从动网的几个漏洞到独孤剑客的网站被黑,脚本攻击闹的沸沸扬扬,可见它在网络攻击中终于显现出他的重要性了。由于程序开发人员无意或有意的不小心,用Perl、PHP、ASP等编写

2、的脚本就会出现这样或那样的错误,轻则导致泄露路径,重则导致整个服务器被攻陷甚至蔓延到整个网络。难道我们就非得把所用的脚本读N遍,认真的分析?我相信不是人人都有这等功力的,就算有这样的功力也不会枉费那么多的时间和精力。 你可能会问:“我既想用网上免费的程序,又不想因此受到重创。难道就没有一个两全的办法?” 针对windows主机,我们可以使用IISLockdown,SecureIIS之类的 针对*nix主机给大家提出两个方案,一个就是给apache装上mod-security模块,另外一个办法就是把LAMP放置在一个chroot jail环境中。当然,

3、最强的还是把两个方案结合在一起咯:) 下面,让我们一起来分享这两个方案 前提:我们只需要有普通的linux操作经验,包括vi的使用等 首先,我们先弄清楚几个概念 什么是Debian:一个完全自由的Linux操作系统,他最令我心仪的就是他的apt包管理工具,让你安装或者升级软件无忧!如果你是CERNET用户的话,推荐你到电子科大或者我的网站升级,CHINANET用户可以在http://mirror.gennkbone.org升级 什么是LAMP:就是Linux Apache MySQL Php的缩写,几乎是最强的架站组合 什么是chroot:是change ro

4、ot的缩写,就是把一个进程守护程序限制在某个特定的root环境中执行,这个被chroot了的程序几乎接近无法访问任何超出了这个root的任何文件或空间,这个root目录(也就是下面我们说到的jail)包含了执行进程守护程序所需要的所有文件,在你正确配置之后,绝大多数的入侵者是不可能跳出jail而接触到外面的文件的。这样我们就可以最大限度的限制入侵者保护自己。 本文主要涉及到的软件 makejail 是一个自动把建立jail所需要的程序放到jail内的软件,使用python编写,他有debian和openbsd的版本 Zend Performance Sui

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

6、不说,先升级到debian sarge,也就是testing版本,我觉得这个版本还是不错的,因为他的软件比较新,而且有security支持,最主要这个版本的软件列表包含makejail这个软件 首先su到root升级系统并安装apache,php,mysql,gd 更新apt源,我在教育网,所以使用中科大的apt源速度很快 [root@debian /]apt-get update (如图update.jpg) 再更新所有软件包 [root@debian /]apt-get dist-upgrade(如图upgrade.jpg) [root@debian /]apt-g

7、et 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 --

8、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

9、fatb@ 设置ServerName 把 下面的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 加出错重定向,这样当出现下面的错误的时候

10、用户就会被重顶向到到你指定的页面 ErrorDocument 404 ErrorDocument 402 ErrorDocument 403 ErrorDocument 500 把signature关掉 ServerSignature Off 如果signature打开的话,当有人访问到一个被禁止或者不存在的页面的话,会出现一些错误信息的 这样的信息,不好,去掉他 (如图403.jpg) 如果不需要cgi支持的话,删除 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None O

11、ptions 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 '#'

12、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

13、 = On 如果php程序没有指明需要register_globals的话,最好把register_globals设置为Off,这样可以避免很多安全问题的 举个例子吧,我们有一个这样的PHP文件片段叫做test.php // 前面的代码 if ($authorised) { // 执行一些受保护的动作 } // 其余的代码 } ?> 如果register_globle是打开的话,入侵者可以通过提交这样一个请求来绕过验证 当然,如果你非得使用register_globle的话,我们在后面同样可以使用mod-security来限制一下的 open_based

14、ir =/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/i

15、nfo.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所有

16、的文件了,这样就完全失去了safe_mode的意义了 禁止打开远程地址,记得最近出的php include的那个漏洞吗?就是在一个php程序中include了变量,那么入侵者就可以利用这个控制服务器在本地执行远程的一个php程序,例如phpshell,所以我们关闭这个 allow_url_fopen = Off OK,保存退出 到此为止,针对php的安全优化基本上完毕,下面我们开始给mysql"做手脚"吧 Debian下用apt装的mysql默认已经禁止从网络连接mysql了的,我们可以从他的配置文件f里看出来,但是得注意一下,RedHat的RPM,FreeBSD的p

17、orts安装,skip-networking是注释掉了的,也就是监听3306端口了,要是mysql出了什么问题,别人就可以有机会利用了 [root@debian /]grep net /etc/mysql/f # The skip-networkin option will no longer be set via debconf menu. # You have to manually change it if you want networking i.e. the server skip-networking 在这个方面Debian做的不错,但是Debian和Freebsd下系

18、统装的mysqld是动态链接的,而RedHat的RPM安装的就是静态的,我们可以通过下面的命令来查看 [root@debian ~]file `which mysqld` /usr/sbin/mysqld: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped 我们可以看到"dynamically linked"字样,这样在chroot mysql的时候就比较麻烦了,因为要复制很多的共享库,

19、不过在debian下我们有makejail:)等会我们就可以看到他的威力了 接着我们修改mysql数据库里的东西,不过不管怎么样,我们首先得给mysql设置一个密码并修改管理员用户名(默认是root),但一定得记得,无论怎么样修改密码,都会有记录的,如果通过mysqladmin修改,shell的历史记录会有的,如果登陆了mysql之后再修改,在~/.mysql_history会记录的,所以我们一定得处理这两个历史记录文件,我们把他们删了,再从/dev/null做个软连接过来就可以解决问题了 [root@debian /]cd ~ [root@debian ~]ll total 13

20、K -rw------- 1 root root 1.8K Sep 28 21:05 .bash_history -rw------- 1 root root 14 Sep 29 09:29 .mysql_history 我们可以看到这两个文件里面都记录了东西的,下面我们处理他们 [root@debian ~]rm .bash_history [root@debian ~]rm .mysql_history [root@debian ~]ln -s /dev/null .bash_history [root@debi

21、an ~]ln -s /dev/null .mysql_history 我们再看看 [root@debian ~][root@debian ~]ll total 10K lrwxrwxrwx 1 root root 9 Sep 29 09:29 .bash_history -> /dev/null lrwxrwxrwx 1 root root 9 Sep 29 09:29 .mysql_history -> /dev/null 现在可以放心的设置密码了 [root@debian ~]mysqladmin -u

22、 root password mypasswd 这样我们以后root就得通过"mypasswd"这个密码来访问mysql数据库了 然后我们删除多余的数据库并去掉匿名帐号 [root@debian ~]mysql -u root -p Enter password:XXXXXX mysql> drop database test; mysql> use mysql; mysql> delete from db; mysql> delete from user where not (host="localhost" and user="root"); mysql> flu

23、sh privileges; 然后修改默认的管理员帐号root为你喜欢的,我这里改成fatb mysql> update user set user="fatb" where user="root"; mysql> flush privileges; 以后我们就得通过fatb帐号访问mysql数据库了 [root@debian ~]mysql -u root -p Enter password: ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES) [root@debian

24、~]mysql -u fatb -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 14 to server version: 4.0.13-log 到这里,mysql的安全设置基本上完毕了 现在我们安装mod-security,debian下同样很简单,并且自动把模块加到httpd.conf里 [root@debian /]apt-get install libapache-mod-security 默认这个模块是没激活

25、的,编辑一下httpd.conf文件并去掉下面这行的注释 LoadModule security_module /usr/lib/apache/1.3/mod_security.so 接着在httpd.conf的末尾加上 # 打开或者关闭过滤引擎 SecFilterEngine On # 设置缺省的动作 SecFilterDefaultAction "deny,log,status:404" # 把设置传递给字目录 SecFilterInheritance Off # 检测URL编码是否正确 Sec

26、FilterCheckURLEncoding On # 检测内容长度以避免堆溢出攻击 SecFilterForceByteRange 32 126 # 日志文件的位置和名字 SecAuditLog logs/audit_log # debug设置 SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLevel 0 # 检测POST数据 SecFilterScanPOST On # 当匹配sh的时候,重新定向到一个特殊的页面,让攻击者知难而退

27、 SecFilter sh redirect: # Only check the body of the POST request #过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测 SecFilter /etc/*passwd SecFilter /bin/*sh # 防止double dot攻击,也就是类似 SecFilter "../" # 防止跨站脚本(CSS)攻击 SecFilter "<( | )*script" SecFilter "<(.| )+

28、>" # 防止SQL插入(SQL Injection)攻击 SecFilter "delete(空格| )+from" SecFilter "insert(空格| )+into" SecFilter "select(空格| )+from" SecFilter "union(空格| )+from" # 下面是限制了upload.php文件只能用来上传jpeg.bmp和gif的图片 SecFilterInheritance Off SecFilterSelective POST_PAYLOA

29、D "!image/(jpeg|bmp|gif)" 用好了mod-security,可以使你的网站的安全性大大的提高的,在他带的manual里你可以找到更多的设置的,在光盘中附带了更加详细的规则 (mod-security.rule.txt) 然后我们装Zend Performance Suit,在安装的时候,他问你使用的用户的时候,记得写chrapax而不是www-data order allow,deny allow from 211.43.125.63(你的IP) deny from all Options All 下面重头戏到

30、了,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"]

31、 然后执行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 > /apa

32、che/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/mak

33、ejail]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_clo

34、se($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.s

35、ock明显在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服务器就安全的

36、多了,就算万一php程序编写的不安全或者apache,php出了什么漏洞,想入侵进来并且跳出root jail还是非常困难的 参考: security apache step by step security php step by step security mysql step by step (不知道为什么在家里上网搜索不到这三个文章了,在的,有兴趣的可以去看看) mod-security manual san的php安全配置 版本信息 v1@2003.11 初始版 v2@2004.1 解决chroot后php程序连接mysql的时候apache耗用大量资源的问题 修正为电子科大而不是中科大:) v3@2004.9 增加allow_url_fopen = Off 增加mod-security对sql injection的过滤

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服