欢迎来到云服务器

网络技术

LNMP PHP情况下的安详加固配置履历

以往的lamp网站向着lnmp成长, 笔者事情情况利用lnmp多年, 在这里很兴奋和各人分享一下多年的lnmp网站的php安详设置,至于lamp安详后续与各人分享,其实内容上八成沟通,这边着重讲php安详设置,看内容.

1. 利用open_basedir限制虚拟主机跨目次会见
[HOST=www.server110.com]
open_basedir=/data/site/www.server110.com/:/tmp/

[HOST=test.server110.com]
open_basedir=/data/site/test.server110.com/:/tmp/

如上设置的意思是www.server110.com下的php措施被限制在open_basedir设置的两个目次下, 不行以会见到其他目次。假如没有做以上的设置,那么test.server110.com与www.server110.com的措施可以相互会见.
假如个中一个站点有裂痕被黑客植入了webshell,那么他可以通过这个站点拿下同一台处事器的其他站点,最后挂木马.

[warning]留意:目次最后必然要加上/. 好比你写/tmp,你的站点同时存在/tmp123等等以/tmp开头的目次,那么黑客也可以会见到这些目次,别的, php5.3以上支持这个写法,5.2不支持。[/warning]

2. 禁用不安详PHP函数
disable_functions = show_source,system,shell_exec,passthru,exec,popen,proc_open,proc_get_status,phpinfo

克制php执行以上php函数,以上php措施可以执行linux呼吁, 好比可以执行ping、netstat、mysql等等.假如你的系统有提权bug,效果你分明.

3. 存眷软件安详资讯

努力存眷linux内核、php安详等信息并实时采纳错误

4. php用户只读

这个要领是我最推崇的要领,可是执行之前必然要和php工程师磋商. 为什么?譬喻站点www.server110.com根目任命户与组为nobody,而运行php的用户和组为phpuser。目次权限为755,文件权限为644. 如此,php为只读,无法写入任何文件到站点目次下。也就是说用户不能上传文件,纵然有裂痕, 黑客也传不了后门, 更不行能挂木马.  这么干之前奉告措施员将文件缓存改为nosql内存缓存(譬喻memcached、redis等),上传的文件通过接口传到其他处事器(静态处事器)。

[warning]备注:措施生成当地缓存是个很是糟糕的习惯,利用文件缓存速度迟钝、挥霍磁盘空间、最重要一点是一般环境下处事器无法横向扩展.[/warning]

5. 封锁php错误日志
display_errors = On
改为
display_errors = Off

措施一旦呈现错误,具体错误信息便立即展示到用户面前,,个中包括路径、有的甚至是数据库账号暗码. 注入渗透暗码根基上都是通过这个报错来猜取。出产情况上强烈封锁它

6. php上传疏散

将文件上传到长途处事器,譬喻nfs等。虽然也可以挪用你们写好的php接口. 纵然有上传裂痕,那么文件也被传到了静态处事器上。木马等文件基础无法执行.

举个例子:
php站点www.server110.com,目次/data/site/www.server110.com
静态文件站点static.server110.com,目次/data/site/static.server110.com

文件直接被传到了/data/site/static.server110.com,上传的文件无法通过www.server110.com来会见,只能利用static.server110.com会见,可是static.server110.com不支持php.

7. 封锁php信息
expose_php = On
改为
expose_php = Off

不等闲透露本身php版本信息,防备黑客针对这个版本的php动员进攻.

8. 克制动态加载链接库
disable_dl = On;
改为
enable_dl = Off;

9. 禁用打开长途url
allow_url_fopen = On
改为
allow_url_fopen = Off

其实这点算不上真正的安详, 并不会导致web被入侵等问题,可是这个很是影响机能, 笔者认为它属于狭义的安详问题.

以下要领将无法获取长途url内容


$data = file_get_contents("http://www.baidu.com/");

以下要领可以获取当地文件内容


$data = file_get_contents("1.txt");

假如你的站点会见量不大、数据库也运行精采,可是web处事器负载出奇的高,请你直接查抄下是否有这个要领。笔者碰着过太多这个问题,今朝出产情况已全线禁用,假如php工程师需要获取长途web的内容,发起他们利用curl.

php curl如何利用请查察我之前的文章《PHP利用curl替代file_get_contents》,以及php下curl与file_get_contents机能比拟.

10.竣事

本日lnmp站点的php安详临时讲到这里,有问题后续将继承增补.

 

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号