日期:2012-02-08 20:15:00 来源:本站整理
Linux下PHP安全设置[Linux安全]
本文“Linux下PHP安全设置[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
PHP安全性设置提醒:
DocumentRoot: /var/www/
Default Web server: Apache
Default PHP configuration file: /etc/php.ini
Default PHP extensions config directory: /etc/php.d/
Our sample php security config file: /etc/php.d/security.ini (you need to create this file using a text editor)
Operating systems: Ubuntu (the instructions should work with any other Linux distributions such as RHEL / CentOS / Fedora or other Unix like operating systems such as OpenBSD/FreeBSD/HP-UX).
1. 削减PHP内置模块
为了加强性能和安全性,激烈倡议,削减PHP中的模块.来看看下面这个被履行号令安装的模块.
# php –m
你将会得到近似的后果:
[PHP Modules]
apc
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
json
libxml
mbstring
memcache
mysql
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
suhosin
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
xsl
zip
zlib
[Zend Modules]
Suhosin
删除一个模块,并履行此号令.比方:删除模块sqlite3
# rm /etc/php.d/sqlite3.ini
大概
# mv /etc/php.d/sqlite3.ini /etc/php.d/sqlite3.disableRestrict
2. 使PHP信息泄露最小化
HTTP示例:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.10
Content-type: text/html; charset=UTF-8
Vary: Accept-Encoding, Cookie
X-Vary-Options: Accept-Encoding;list-contains=gzip,Cookie;string-contains=wikiToken;
string-contains=wikiLoggedOut;string-contains=wiki_session
Last-Modified: Thu, 03 Nov 2011 22:32:55 GMT
...
因此,我们激烈倡议,禁止PHP信息泄露,想要要禁止它,我们要编辑/etc/php.d/secutity.ini,并设置以下指令:
expose_php=Off
3. 使PHP加载模块最小化
在默许情形下,RHEL加载的全部模块可以在/etc/php.d/目录中找到.要禁用或启用一个特定的模块,只需求在配置文件/etc /php.d/目录中中注释下模块名称.而为了优化PHP性能和安全性,当你的利用程序需求时,我们激烈倡议倡议启用扩大功效.举个例子:当禁用GD扩大 时,键入以下号令:
# cd /etc/php.d/
# mv gd.{ini,disable}
# /etc/init.d/apache2 restart
为了扩大PGP GD模块,然后键入以下号令:
# mv gd.{disable,ini}
# /sbin/service httpd restart
4. 记录PHP错误信息
为了提高系统和Web利用程序的安全,PHP错误信息不能被表暴露.要做到这一点,需求编辑/etc/php.d/security.ini 文件,并设置以下指令:
display_errors=Off
为了便于开辟者Bug修复,全部PHP的错误信息都应当记录在日记中.
log_errors=On
error_log=/var/log/httpd/php_scripts_error.log
5. 禁用远程履行代码
假如远程履行代码,答应PHP代码从远程检索数据功效,如FTP或Web通过PHP来履行构建功效.比方:file_get_contents().
很多程序员利用这些功效,从远程通过FTP或是HTTP协议而得到数据.但是,此法在基于PHP利用程序中会造成一个很大的漏洞.由于大部份程 序员在传送用户供应的数据时没有做到得当的过滤功效,翻开安全漏洞并且成立了代码时注入了漏洞.要办理此问题,需求禁用_url_fopen in /etc/php.d/security.ini,并设置以下号令:
allow_url_fopen=Off
除了这个,我还倡议禁用_url_include以提高系统的安全性.
allow_url_include=Off
6. 禁用PHP中的危险函数
PHP中有很多危险的内置功效,假如利用不当,它大概使你的系统崩溃.你可以成立一个PHP内置功效列表通过编辑/etc/php.d/security.ini来禁用它.
disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
7. 资源掌握
为了提高系统的安定性,激烈倡议设置每个脚本解析恳求数据所耗费的时间和脚本大概损耗的最大内存量.精确的配置这些参数可以避免PHP任何脚本损耗太多的资源或是内存,从而避免系统不安全或降低安全系数.
# set in seconds
max_execution_time = 30
max_input_time = 30
memory_limit = 40M
8. 限制PHP拜候文件系统
该open_basedir指令指定的目录是答应PHP拜候利用fopen()等功效.假如任何脚本试图拜候超越open_basdir定义的途径文件,PHP将回绝翻开.值得注意的是,你不能利用一个标记链接作为一种变通办法.
; Limits the PHP process from accessing files outside
; of specifically designated directories such as /var/www/html/
open_basedir="/var/www/html/"
; ------------------------------------
; Multiple dirs example
; open_basedir="/home/httpd/vhost/cyberciti.biz/html/:/home/httpd/vhost/nixcraft.com/html/:/home/httpd/vhost/theos.in/html/"
; ------------------------------------
9.限制文件/目录拜候
举行得当的安全设置:确保Apache作为非root用户运行,比方www-data或www.关于文件和目录在基于/var/www/下一样属于非root用户.想要更改全部者,履行以下号令:
# chown -R apache:apache /var/www/
10.编译保护Apache,PHP和MySQL的配置文件
利用charrt号令编译保护配置文件
# chattr +i /etc/php.ini
# chattr +i /etc/php.d/*
# chattr +i /etc/my.ini
# chattr +i /etc/httpd/conf/httpd.conf
# chattr +i /etc/
以上是“Linux下PHP安全设置[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论