LAMP站点的设置点滴!

针对Apache,PHP和MySQL在Linux下的设置估计可以写上好些本书也未必讲的完,但是,有一些简单的做法对管理员平时配置却很有用,这是总结了一些文章的讨论后写下的!

关于http.conf
注释掉除了
mod_access
mod_auth
mod_dir
mod_log_config
mod_mime

mod_alias之外的所有模块;


打开PHP模块:LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
在RedHat系统中是include php.conf


去掉Options Indexes Includes FollowSymLinks MultiViews中的Indexes,如果确实需要列出目录,那么在该用的地方用,不要在全局设置里使用。

出错重定向:ErrorDocument 404/402/403/500;

关闭ServerSignature Off选项;

关闭CGI(如果不需要),相关的选项是
ScriptAlias,AllowOverride和Options里的ExecCGI命令;


Mod_security的使用,LoadModule security_module /usr/lib/apache/1.3/mod_security.so
mod_security主要可以用来过滤很多对Web服务器的攻击(secfilter);

# 打开或者关闭过滤引擎
SecFilterEngine On
#
设置缺省的动作
SecFilterDefaultAction "deny,log,status:404"
#
把设置传递给字目录

SecFilterInheritance Off
#
检测URL编码是否正确
SecFilterCheckURLEncoding On
#
检测内容长度以避免堆溢出攻击
SecFilterForceByteRange 32 126
#
日志文件的位置和名字
SecAuditLog logs/audit_log
# debug
设置
SecFilterDebugLog logs/modsec_debug_log
SecFilterDebugLevel 0
#
检测POST数据
SecFilterScanPOST On
#
当匹配sh的时候,重新定向到一个特殊的页面,让攻击者知难而退
SecFilter sh redirect:
# Only check the body of the POST request
#
过滤一些敏感的东西,我们使用*是为了攻击者使用/etc/./passwd来绕开检测
SecFilter /etc/*passwd
SecFilter /bin/*sh
#
防止double dot攻击,也就是类似http://www.test.com/openfile.php?path=/../../..,虽然这个漏洞看似弱智,但是很多网站都有的,比如CERNET某大学某图片站
SecFilter "../"
#
防止跨站脚本(CSS)攻击

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


PHP的主要设置文件是php.ini
safe_mode=On # 打开安全模式
或者在httpd.conf中加入这样的配置,
<Directory /var/www>
Options FollowSymLinks
php_admin_value safe_mode 1 #设置该目录使用Safe_mode
</Directory>

register_globals=Off #关闭该选项,阻止变量乱用
open_basedir= #你的php操作文件基准目录
disable_functions= #禁止一些PHP函数
error_reporting=E_ALL # List All Error Messages
log_errors=On
error_log=errorlog
allow_url_fopen=Off # 可以关闭远程执行include的漏洞 safe_mode_exec_dir = /usr/local/php/exec # 指定只能执行php程序的目录

MySQL的设置;删除test数据库;
注意删除password的命令记录:.bash_history, .mysql_history

Comments

Popular posts from this blog

Freeware Software Top 300 from winAddons.Com!

What is DevOPS?

RPM Build Tips!