php防止挂马执行exec,防患于未然:如何防止论坛被挂马

# ee /usr/local/Zend/etc/php.ini

ctrl+y查找:disable_functions

找到后在=后面添加

exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink,symlink,link,leak,fsockopen,

proc_open,popepassthru,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,popen

上面内容请放到一行。因为保持帖子的整体效果作了换行

这里都是禁止在php里面执行的函数

查找:display_errors

如果是On的话改成Off

查找:magic_quotes_gpc

如果是Off的话改成On

查找:register_globals

如果是On的话改成Off

查找:open_basedir

后面增加

/www/:/tmp/

这里是限制php可以访问的目录,后面一定要加上/,否则如果有/wwwabcd这个目录也会被访问得到

多个目录用英文:分隔。如果不添加/tmp/的话Discuz!的上传功能就无法使用

注意:以上内容在php.ini的开头会有相关设置的提示,请按ctrl+x查找下一个,不要直接在上面修改

OK,保存退出

(ee的搜索是向后,如果发现某个词语搜索不到可以使用快捷键ctrl+t回到文档起始)

2)MySQL的安全设置

打开/etc/my.cnf。如果没有的话可以到/usr/local/share/mysql下面cp一个

#cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

编辑my.cnf

#ee /etc/my.cnf

找到

[mysqld]

myisam_sort_buffer_size = 8M

后面添加

set-variable=local-infile=0

set-variable=max_connections=9000        #这个功能是设置最大的同时连接数,与安全无关,优化而已

可选设置

把mysql的root改名

# mysql -uroot -p

按提示输入密码

mysql>use mysql;

mysql>update user set user="newroot" where user="root";

mysql>flush privileges;

mysql>exit

这样就把mysql的root改成newroot了

3)改一下httpd.conf

#ee /usr/local/etc/apache2/httpd.conf

去掉不需要的mod。其他的不说了,关键几个如下:

#LoadModule cgi_module libexec/apache2/mod_cgi.so

#LoadModule userdir_module libexec/apache2/mod_userdir.so

在前面添加#禁止加载

把从

ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"

AllowOverride None

Options None

Order allow,deny

Allow from all

全部在前面加上#注释掉

在文件的最后对应的VirtualHost中增加

RewriteEngine on

RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)

RewriteRule .* - [F]

php_admin_value open_basedir "/www/discuz/:/var/tmp/"

前面三行是对Trace和Track请求的处理,最后一句是对php打开的目录作限制

4)Discuz!目录安全设置

首先建立一个密码文件

# touch /www/.discuzpass

建立用户dzadmin

# htpasswd /www/.discuzpass dzadmin

按照提示输入两遍密码

完成用户创建后,在discuz!的目录里面建立一个.htaccess文件,里面的内容如下:

AuthUserFile /www/.discuzpass        #密码文件存放位置

AuthName "Login pls"

AuthType Basic

require user dzadmin        #需要验证用户为dzadmin

AuthUserFile /www/.discuzpass

AuthName "Login pls"

AuthType Basic

require user dzadmin

设置后从Web访问admincp.php和config.php必须要输入正确的账号和密码

进入attachments、customavatars目录,建立.htaccess,里面的内容为:

php_flag engine off

设置后在附件和用户自定义头像目录就无法执行php文件了。就算discuz!有上传文件的漏洞,被传了webshell,在打开的时候也只是提示下载文件,而不是直接运行。

在其他的敏感目录,比如admin、forumdata、templates等目录,我们可以完全禁止用户的访问。同理,建立一个.htaccess,内容如下:

Options -Indexes

Options +FollowSymLinks

Options -ExecCGI

order deny,allow

deny from all

最后,对templates目录里面的模板全部chmod 644,只有所有者能写,其他用户为只读

通过以上的设置,你的Discuz!已经相对安全了,偷笑一下吧。

经过我的测试,基本市面上的webshell都无效,包括最新的phpspy 2006,也只能在授权目录下面访问。

以上设置针对FreeBSD环境、Apache服务器。

其他*nix和Win环境可以参考修改。

以上内容如有任何错误,欢迎大家的指出。

http://www.im286.com/viewthread.php?tid=1074563

总结: 把可写目录全部设置拒绝PHP执行,拒绝挂马.

针对DA:

关掉phpmyadmin,由于webshell可能可读config文件,防止从phpmyadmin操作数据库.

posted on 2009-08-20 07:04 Prog 阅读(70) 评论(0)  编辑 收藏 引用 网摘 所属分类: Linux 、Apache 、PHP 、LAMP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值