易游网-易游模拟器

 找回密码
 立即注册
查看: 960|回复: 0

[网站建设] Nginx+Discuz+PHP安全加固

[复制链接]

1406

主题

1663

帖子

1万

积分

管理员

夏墨独周

Rank: 9Rank: 9Rank: 9

积分
10094

论坛元老技术达人

QQ
发表于 2021-9-30 16:10:45 | 显示全部楼层 |阅读模式
1、在nginx入口上对data|images|config|static|source|template 这几个可以上传的目录里的php文件禁止访问 。(更安全一点就是列出放行的,其他全部禁止。)
location ~* ^/(data|images|config|static|source|template)/.*.(php|php5)$   {   deny all;   }
2、通过dz后台管理中心的文件写入校验 ,找出那些需要改成777
[img=620,0]C:\Users\CTWLPC\AppData\Local\YNote\data\zhengliangsun@163.com\496de3d0b7e046e3a283a21583587691\clipboard.png[/img]
建议在机房部署的时候后端机器起码2台作容灾,运维侧nginx反向代理至后端处理,可以参考下如下的nginx相关配置供测试,Discuz的安全相关的东西以下提出了些,供参考:
Discuz安装前安全规范
1、须从Discuz官网下载最新版本的安装包;
2、Discuz论坛代码上传到服务器解压后,将全部文件和目录属主改为root或其他属主(必须与webserver属主不同),目的是为了防止黑客获得webserver的权限后,对程序文件进行恶意篡、放置后门等;
3、将Discuz论坛代码中的全部目录权限设置为755,将Discuz论坛代码中的全部文件权限设置为644;
4、确保数据库与discuz不在同一台机器上,做好DB分离,后端机器不能只有单台;
5、删除Discuz根目录下的crossdomain.xml文件,如需要此文件,必须限制到具体域名;
6、删除./static/p_w_picpath/common/mp3player.swf 文件;
7、Discuz根目录下./api/目录中不需要的外部接口需删除;
8、禁止论坛管理后台和UC管理后台外网访问;
9、禁止Discuz根目录下./data目录解析php,并且php、sql文件不能被下载;
10、禁止Discuz根目录下./uc_server/data ./uc_client/data/目录解析php,并且php文件不能被下载;
11、禁止Discuz根目录下的conf目录及目录中的文件被外网访问;禁止访问Discuz论坛目录下的.bak备份文件;
12、禁止Discuz根目录下./api/uc.php文件外网访问;
13、删除/uc_server/control/app.php;
14、安装好论坛后,需删除install目录;
安装好Discuz后,需对Discuz配置文件中的部分配置项进行修改,对论坛进行安全加固,加固点如下:config/config_global.php
1. 设置founder = '1'
2. 设置forcesecques = '1'
3. 设置checkip = 1
4. 设置runquery = '0'
5. 设置dbimport = 0
6. 设置urlxssdefend = 1
7. 设置attackevasive = '0'
PHP配置相关:
1. 配置open_basedir项为网站目录;
2. 禁用危险函数disable_functions disable_functions=
dl,eval,assert,exec,popen,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open
(部分Discuz!版本正常运行需要eval,assert两个函数,如果有问题,上述禁用函数可以去掉这两个) ;
3. 关闭全局变量register_globals;
4. 开启magic_quotes_gpc ;
5. 安全模式safe_mode ;
6. 关闭错误消息提示display_errors ;
7. 禁止访问远程文件allow_url_fopen,allow_url_include;

1、Discuz!X3.1、x3.2、X3.4 admin.php 防止直接恶意访问(安全加固)
网站做大一定规模后,很多站长就会发现很多恶意访问者在不断的试探自己的网站后台密码。
今天为大家提供一种解决办法。
实现效果:非管理员访问admin.php直接返回404,无法打开页面
打开admin.php文件,找到:
$discuz->init();
换行,在其下添加代码:
if(!$_G['uid'] || !getstatus($_G['member']['allowadmincp'], 1)) {
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
exit;
}
即可。

2、Discuz!X3.1-x3.2 admin.php 防止直接恶意访问(安全加固)
功能说明:admin.php是discuz默认的后台地址,正常情况下可以直接访问,为了防止某些恶意访问的情况,可以修改以下内容进行安全性能提升。
适用版本:Discuz!x1-x3.2
具体实施方案:


admin.php中找到:

  • $discuz->init();



换行后,添加如下代码,就可以了
  • if(!$_G['uid'] || !getstatus($_G['member']['allowadmincp'], 1)) {
  • header('Location: /');
  • }


如果用户非管理员全部返回网站根目录。

3、discuz目录加固
find source -maxdepth 4 -type d -exec chmod 555 {} \;find api -maxdepth 4 -type d -exec chmod 555 {} \;find static -maxdepth 4 -type d -exec chmod 555 {} \;find archiver -maxdepth 4 -type d -exec chmod 555 {} \;find config -maxdepth 4 -type d -exec chmod 555 {} \;find data -maxdepth 4 -type d -exec chmod 755 {} \;find template -maxdepth 4 -type d -exec chmod 555 {} \;find uc_client -maxdepth 4 -type d -exec chmod 555 {} \;

find . -type f -maxdepth -exec chmod 444 {} \; #设置论坛目录的文件只可读,然后设置那些需要写的文件,一般只有data下的文件是可以的。
find data -maxdepth 4 -type d -exec chmod 755 {} \;#设置data 文件为755

4、nginx 禁止某些目录执行php
location ~ /(template|attachment|upload)/.*\.(php|php5|PHP|PHP5) $ {
deny all;
}


来源:易游模拟器(QQ:207621422),转载请注明出处!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|易游网-易游模拟器 Copyright @2015-2021 ( 浙ICP备15028007号-1 )

GMT+8, 2024-4-20 03:37 , Processed in 0.026368 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表