三种方法。
1。如果是新站,根据官方建议做安全即可。
另外,如果不是必须,像 member,install, special, 全删掉。
plus 则留下几个 list.php show.php view.php diy.php count.php 就这几个就差不多了。
后台替换功能,把admin换掉,密码换掉。
基本上就OK。
是新站,但是下载的整站,程序版本太老?
后台更新到最新的版,再执行上面。
2。安装网站安全狗。还是比较管用。特别是注入类都可以容易的拦截掉。
3。安装配置mod_security模块(以下是转载,原文: https://javascript.net.cn/article?id=442 )
===================================================================
一,在不改动现有系统任何代码的前提下,防止SQL注入
比如下面这个场景:服务器中难免有些安全性比较差的程序,比如使用了老版本的dedecms。或者某个程序引用的第三方插件,在SQL处理上,没有使用参数查询,而是直接拼接字符串,还没有类型检查。 这时可以考虑使用WAF (Web Application Firewall)。
二,如何选择
市面上的WAF有三种形态,硬件Web防火墙、Web防护软件和云Waf。 最为灵活的方案是选择Web防护软件。
三,安装配置
服务器环境Windows server 2008, Apache是PHP官方推荐的Windows二进制版 http://www.apachelounge.com/ 。
首先安装好Apache 2.4,下载对应版本的mod_security http://www.apachelounge.com/download/ 。
我下载的是 mod_security-2.9.2-win64-VC15.zip 解压后,里面有两个文件夹,mod_security和mlogc中readme.txt,有安装过程。
### mod_security中Readme.txt的大致内容:
安装mod_security-2.9.2
拷贝 mod_security2.so 到你的 apache/modules 文件夹
拷贝 yajl.dll and libcurl.dll 到你的 apache/bin 文件夹
配置文件 httpd.conf:
取消注释,
LoadModule security2_module modules/mod_security2.so
LoadModule unique_id_module modules/mod_unique_id.so
# 快速开始:
SecRuleEngine On
SecDefaultAction "deny,phase:2,status:403"
## -- 规则--
SecRule ARGS "\.\./" "t:normalizePathWin,id:50904,severity:4,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,msg:'Drive Access'"
重启apache,在浏览器打开如下地址,会提示403拒绝访问
http://www.xxxx.com/?abc=../../
四,安全防护
添加规则要参考,http://www.modsecurity.org/rules.html ,官网推荐 https://github.com/SpiderLabs/owasp-modsecurity-crs
下载规则,解压到 |apache\conf\modsecurity-crs下。
设置配置文件httpd.conf
LoadModule security2_module modules/mod_security2.so
# Rules and documentation : http://www.modsecurity.org/
SecRuleEngine On
SecDefaultAction "deny,phase:2,status:403"
## -- rule --
SecRule ARGS "\.\./" "t:normalizePathWin,id:50904,severity:4,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:lowercase,msg:'Drive Access'" <IfModule security2_module> Include conf/modsecurity-crs/crs-setup.conf
Include conf/modsecurity-crs/rules/*.conf </IfModule>
五,安全防护日志
mlogc可以记录所有被规则拦截的日志。配置如下:
<IfModule security2_module> Include conf/modsecurity-crs/crs-setup.conf
Include conf/modsecurity-crs/rules/*.conf
# mlogc.exe 配置文件
SecDataDir logs
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus "^(?:5|4\d[^4])"
SecAuditLogType Concurrent
SecAuditLogParts ABCDEFGHZ
SecAuditLogStorageDir logs/mod_security/
SecAuditLog "${SRVROOT}/bin/mlogc.exe" </IfModule>
六,测试
下面是安全狗的防护日志,可以用来测试一下mod_security和OWASP
/?ac=digg&ac2=&id=1&tab=vod union select null,md5(1231412414) 拦截原因:防止SQL联合查询,可疑内容:Union
/?ss=x and 1=1,拦截原因:防止简单的and or 方式注入
/?ss=information_schema。。。,拦截原因:非法访问information_schema数据库
/?typeArr[1' or `@\'`=1 and (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(substring((Select pwd from dede_admin limit 1,1),1,62)))a from information_schema.tables group by a)b) and ']=11&&kwtype=0&q=1111&searchtype=title,拦截原因:防止对数据库进行数据查询操作,可疑内容:Select pwd from dede_admin limit
/?typeArr[1' or `@\'`=1 and (SELECT 1 FROM (select count(*),concat(floor(rand(0)*2),(substring((Select uname from dede_admin limit 1,1),1,62)))a from information_schema.tables group by a)b) and ']=11&&kwtype=0&q=1111&searchtype=title,拦截原因:防止对数据库进行数据查询操作,可疑内容:Select uname from dede_admin limit
/?aid=1&_FILES[type][name]&_FILES[type][size]&_FILES[type][type]&_FILES[type][tmp_name]=aa\'and char(@`'`) Union*/ SeLect*/ 1,2,3,group_concat(userid,0x23,pwd),5,6,7,8,9 from `#@__admin`#,拦截原因:防止SQL联合查询,可疑内容:Union SeLect 1,2,3,group_concat(userid,0x23,pwd),5,6,7,8,9 from `#@__admin`#
都可以被拦截到,现在apache/logs/mod_security下面生成的防护日志如下:
--4d070000-A--
[28/Apr/2018:16:24:53 +0800] WuQv1aUHpaQ0n2CMGvixFAAAAJE 171.14.39.141 56190 122.114.245.230 443
--4d070000-B--
GET /?ss=information_schema HTTP/1.1
Host: javascript.net.cn
...
--4d070000-F--
HTTP/1.1 403 Forbidden
Content-Length: 209
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
--4d070000-E--
--4d070000-H--
Message: Warning. Pattern match "(?i:\\b(?:m(?:s(?:ysaccessobjects|ysaces|ysobjects|ysqueries|ysrelationships|ysaccessstorage|ysaccessxml|ysmodules|ysmodules2|db)|aster\\.\\.sysdatabases|ysql\\.db)\\b|s(?:ys(?:\\.database_name|aux)\\b|chema(?:\\W*\\(|_name\\b)|qlite(_temp)?_master\\b) ..." at ARGS:ss. [file "D:/ap/apache/conf/modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [line "100"] [id "942140"] [rev "3"] [msg "SQL Injection Attack: Common DB Names Detected"] [data "Matched
...
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.9.2 (http://www.modsecurity.org/); OWASP_CRS/3.0.2.
Server: Apache/2.4.33 (Win64) OpenSSL/1.1.0h PHP/7.2.4 mod_evasive2/1.10.2
Engine-Mode: "ENABLED"
--4d070000-Z--
发表评论