找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
网推大家坛 新闻 网站推广 网站技术 查看内容

Discuz论坛网站安全防护系统解决方案

2017-8-7 21:47| 发布者: hkrhtkh| 查看: 163| 评论: 0

简介:Discuz是康盛公司推出的一套通用社区论坛软件系统,用户可以在不需要任何编程基础上,通过简单的设置和安装,在互联网上搭建起具有完善功能、高负载、高定制的论坛。Discuz是一个经过完善设计,适用于各种服务器环境 ...

    Discuz是康盛公司推出的一套通用社区论坛软件系统,用户可以在不需要任何编程基础上,通过简单的设置和安装,在互联网上搭建起具有完善功能、高负载、高定制的论坛。Discuz是一个经过完善设计,适用于各种服务器环境的高效论坛系统解决方案。
 
    由于Discuz的安装和管理极其方便,许多企业管理员并未对他的安全风险有相应的了解;Discuz作为开源软件,历史上被发现若干安全漏洞,极容易导致服务器被入侵。
 
    出于工作需要,笔者经常会接触到公司的各类Discuz论坛,对Discuz的安全问题十分关注,这里给大家分享一些关于discuz论坛防护的方案,希望能给广大企业用户提供帮助。

    Discuz论坛管理大致分为服务器安全加固、网站安全加固、日常管理三个方面的内容,以下是详细的实施方案可供参考。
 
服务器安全加固
 
确保网站安全首先要保证服务器各项组件的安全,如discuz服务器的一般组件有Apache、php、mysql等,确保这些第三方软件安全有如下一些原则:
 
1、权限最小化

a) Webserver及数据库服务均以非root权限启动;
 
b) 文件属主与webserver进程属主不同(一般设置文件的属主为root)
 
c) 确保discuz网站的目录和文件权限最小化。

目录权限除必须为777的目录外,其他目录权限须设置为755
文件权限除必须为777的文件外,其他文件权限须设置为644

d) 数据库与webserver不在同一台机器上
 
e) 可写的目录没有执行脚本权限,可执行脚本权限的目录不可写。

常见可写目录为:./config、./data、./uc_client/data/、./uc_server/data/
 
常见不可解析php的目录为:./data/、diy、template、attachment、./install/images、
./uc_server/data、forumdata、images
 
在apache中配置不允许执行php权限如下:
<directory "="" discuz="" data="">
    php_flag engine off
    
        Order allow,deny
        Deny from all
    
 

f) 控制脚本仅允许访问网站文件

在php.ini中配置open_basedir项为网站目录
 

 
2、默认选项需要加固
 
a) 删除默认webserver页面

如apache需要删除icons和manual两个目录

b) 禁用php危险函数

在php.ini配置:
disable_functions=exec,popen,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open

 
3、敏感信息不显示
a) 关闭webserver的目录浏览功能
 

Apache配置文件中的目录配置项的“Indexes”删除或者改为“-Indexes”

b) 关闭php的错误消息显示

Php配置:display_errors = Off

 
4、开启日志记录
a) 开启webserver的日志记录功能

CustomLog /www/logs/access_log common


 b) 开启php的错误日志记录功能

log_errors = On
error_log = D:/usr/local/apache2/logs/php_error.log
注意:该文件必须允许apache用户的和组具有写的权限

 
5、实施ip策略
 
a) 数据库仅开放在内网
 
b) 不允许任意ip连接数据库
 
c) Iptables禁止所有的非法连接
 
d) 管理目录仅允许内网访问
 
 网站安全加固
   
    服务器足够安全只是网站安全的前提,确保网站安全大致有如下措施:
 
1、账户安全
 
a) 用户密码需要加密存储
b) 用户密码需要采用密文的形式在网络上传输
 
2、后台管理
 
a) 后台管理界面需要使用双因子确保管理员的合法性。常见的因子如(ip策略、token、用户密码)等。
 
3、业务配置
 
a) 针对discuz业务特性,在安装的时候会删除不必要的插件

api目录(外部接口)里的以下功能如果不使用可以删除
Db目录 ---> UCenter数据库备份接口google---google引擎使用
Javascript目录 ---> 数据和广告的js调用
Trade目录 ---> 在线支付接口
Manyou目录 ---> 漫游和云平台使用

b) 关闭论坛的个人空间,防止恶意钓鱼,欺诈。

Discuz! X1.5关闭个人空间方式:
修改文件 source/module/home/home_space.php,搜索如下代码:
$do=(!empty($_GET['do'])&&in_array($_GET['do'], $dos))?$_GET['do']:'index';
下面添加如下代码: 
if(in_array($do, array('home', 'doing', 'blog', 'album', 'share', 'wall'))) {
showmessage('抱歉,家园功能尚未开启', 'forum.php');
}
Discuz! X2关闭个人空间方式:
后台->全局->站点功能->功能模块(是否开启家园功能,点否即可关闭)

c) 检查crossdomain.xml文件,限制到特定的域名或者将此文件删除。
 
d) 遵循Discuz常见安全配置

1、forumfounders= '1'
论坛创始人UID,建议只有一个创始人。
2、论坛防御级别配置attackevasive = 0 (由于会影响用户,这里默认是0,如果遭到 攻击,可以自行尝试1,2,4,8的配置)
论坛防御级别,可防止大量的非正常请求造成的拒绝服务攻击。
3、urlxssdefend = 1
论坛访问页面防御开关。
4、admincp['forcesecques'] = 1
管理人员必须设置安全提问才能进入系统设置,0=否,1=是【安全】。
5、admincp['checkip'] = 1
后台管理操作是否验证管理员的 IP,1=是【安全】,0=否。
6、admincp['tpledit'] = 0 (这项针对discuz! 7.2的安全配置)
是否允许在线编辑论坛模板 1=是 0=否【安全】。
7、admincp['runquery'] = 0
是否允许后台运行SQL语句1=是,0=否【安全】。
8、admincp['dbimport'] = 0
是否允许后台恢复论坛数据 1=是 0=否【安全】。

  
日常管理

 
1、 所有的第三方软件均需要使用最新版本,确保安全。
 
2、 关注所用到的第三方软件的安全信息,及时更新补丁或升级。如dz论坛容易出现nginx的解析漏洞

PHP的配置文件php.ini中配置cgi.fix_pathinfo = 0,防止nginx文件解析漏洞

3、 关注官方发布的安全信息。
 
4、 dz论坛统一管理。统一化的管理可以高效的对discuz论坛进行更新、维护,避免出现各个管理员对安全信息掌握不一致的问题。
 
5、 增加dz的网站风险检测系统,24扫描dz站点,及时掌握dz的安全状况
 
6、 增加漏洞收集渠道,更好的掌握自身产品的安全漏洞。
 
     作为普通网站的管理人员,通常需要遵循服务器安全加固中的1,2,3,4四点、网站安全加固的1,2两点、及日常管理的1,2,3三点用于确保网站的安全性。
 
    中小型企业若使用到discuz论坛可以参考网站安全加固的业务配置选项,更好的防御discuz论坛。

本篇主要从nginx 安全加固、discuz 文件目录、mysql 用户权限等方面来阐述discuz论坛安全加固,希望给大家一点灵感。

1.Nginx安全加固

作为web的前端,在上面加强安全防护,效率比php要高多了。针对discuz! X2.0论坛nginx安全加固如下:

location ~* ^/(data|images|config|static|source)/.*\.(php|php5)$     {     deny all;     }

意思是data images config static source等目录及其所有的php不能从web访问,这样避免黑客在上传上面的目录上传的木马无法运行,返回403错误。当然最直接的方法就是先将所有的文件禁止运行,然后加入需要放开的php和目录,这样做起最直接,而且最彻底。

例如:(只是举个例子而已,千万不要直接拿到自己的生产环境去!否则,你会哭的。)

location ~ (index|forumn|api|home|).*\.(php)?$      {                  allow all;                  fastcgi_pass  127.0.0.1:9000;                  fastcgi_index index.php;                  include fcgi.conf;  }

2.discuz目录加固

不要听信网上所有将目录设置为777,这样的话,任何用户都已对目录可写可执行。正确的做法如下:

1)运行 nginx 和php 的用户应该这样来设置 useradd -g www -d /data0/htdocs -s /sbin/nologin  www 意思:创建一个www用户根目录在/data0/htdocs 使用shell 是/sbin/nologin(不允许登录)

2)针对discuz!X2.0目录权限可以设置:

进入论坛根目录

find source -type d -maxdepth 4 -exec chmod 555 \ {};  find api -type d -maxdepth 4 -exec chmod 555 \ {};  find static -type d -maxdepth 4 -exec chmod 555 \ {};  find archive -type d -maxdepth 4 -exec chmod 555 \ {};  find config-type d -maxdepth 4 -exec chmod 555 \ {};  find data- type d -maxdepth 4 -exec chmod 755 \ {}; #data需要写缓存所以权限为755  find template - type d -maxdepth 4 -exec chmod 555 \ {};  find uc_client - type d -maxdepth 4 -exec chmod 555 \ {};

3)    针对discuz!X2.0文件权限可以设置:

进入论坛根目录

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

3.mysql权限设置:

1)mysql 用户权限:用户的权限应严格限制,不应该有的权限全部去掉。比如该用户只需执行select 语句,且只能操作某个库,那么只赋予select 权限和限制在某个库即可,千万不要画蛇添脚,添加delete update权限等。例如下图所示

MySQL用户权限

2)限制来源ip:这一点是最容易让人遗忘,可能测试放开了来源ip,但是上线的时候却忘记了。但是带来的后果确实不堪设想。设置用户的来源ip比如只允许来源ip 192.168.1.2可以连接。例如下图所示

限制来源ip

以上我对discuz!论坛安全加固的一点点总结,因为是抽出很少时间来整理,所以难免有错误发生,希望大家不啬赐教。有一句话送给大家 “安全是相对,没有绝对的”,在以后说不定又有新的问题接踵而来,这就需要大家对新的问题详细分析,对症下药。

收藏 分享 邀请
鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

看过本文的人还看过

已有 0 人参与

会员评论

推荐阅读

    返回顶部