【技术分享】网站权限的安全配置
作者:admin | 时间:2017-10-15 10:32:08 | 分类:黑客技术 隐藏侧边栏展开侧边栏
0x01 前言
日防夜防,但指不定哪天又有0day出来,或是有其它漏洞,网站被日,我们的服务器又要出现中毒、被留后门等等现象。而如何做好了权限配置,即使网站沦陷,但是攻击者能获得的权限很低的话,就做不了进一步的操作了,所以本文章主要讲讲网站如何在权限上做好安全配置,让日站少年无从下手。
0x02 网站部署架构
这是一个比较简单的部署架构。其中,网站部署在apache容器上,而php作为后台脚本解析语言用来解析,数据库则为存放数据。而网站服务器中,一般apache和数据库都是以服务的形式启动的。(有非服务和服务两种方式启动)。
0x03 威胁点
通过上面这个架构,我们可以找出一些威胁点:
1.中间件apache服务权限
如果攻击者在获得网站的权限的话,如使用php漏洞进行命令执行,那么其权限就相当于apache服务的权限。如果apache是在管理管理员下直接启动的服务,那就当然是系统管理员的权限啦。
2.数据库mysql服务的权限
如果攻击者能在数据库进行命令执行的话,当然也会是以mysql服务的权限进行操作的。
3.数据库用户权限
第2点的服务权限,需要先得到数据库root权限。
0x04 配置权限防范点
从上面的威胁点,我们可以从下面几个点去做防范:
1.系统用户:创建一个非系统管理员帐户作为网站的管理帐户;
2.中间件服务apache:设置为非系统管理员帐户,设置对目录的读写;
3.数据库服务mysql:设置为非系统管理员帐户;
4.数据库用户权限:设置非root帐户,并控制读写权限;
5.php配置:限制访问目录,限制敏感函数;
0x05 配置权限防操作
那么具体的操作是怎么样的呢?继续往下看。
0x05.1 新建低权限系统用户test
新建低权限系统用户,帐号密码均为test
1
|
net user test test /add
|
用net user test查看一下:
0x05.2 配置低权限apache 服务
创建apache服务,名为Apache2.4
1
|
httpd.exe -k install -n Apache2.4
|
(要到httpd所在的目录下执行)
设置服务的启动帐户为test:
然后启动该服务:
1
|
net start Apache2.4
|
0x05.3 apache配置做限制
0x05.3.1 配置目录权限
这样禁止了访问C:\phpstudy\WWW\inc目录下的文件了
0x05.3.2 去掉目录遍历
Indexes 的作用就是当该目录下没有 index.html 或index.php文件时,就显示目录结构,去掉 Indexes,Apache 就不会显示该目录的列表了。
0x05.4 配置低权限mysql服务
cmd进入mysql安装的bin目录执行:
1
|
mysqld.exe – install
|
这样就创建了服务。
然后设置服务的启动用户:
服务启动:
1
|
net start mysql
|
0x05.5 配置低权限mysql用户test
新建用户:
1
|
CREATE USER 'test' @ 'localhost' IDENTIFIED BY 'test' ;
|
创建数据库testDB:
1
|
create database testDB;
|
test只对testDB有权限:
1
|
GRANT ALL ON testDB.* TO 'test' @ 'localhost' ;
|
0x05.6 php配置做限制
0x05.6.1 限制php可访问目录
在php.ini中配置:
1
|
open_basedir = C:\phpstudy\WWW\
|
0x05.6.2 限制php可执行命令
在php.ini中配置:
1
|
|
0x05.6.3 关闭错误提示
1
|
display_errors = Off
|
0x05.6.4 关闭全局变量
1
|
register_globals = off
|
0x06 效果
经过以上的配置之后,网站就相对安全了。即使是攻击者拿到了网站的shell之后,也会发现文件访问受限了,数据库操作受限了,命令执行也受限了,内心相当崩溃。
我们可以试试,当上传一句话后,攻击者用菜刀连接:
发现只能访问WWW下文件,出不去了,因为php上做了限制。
命令执行函数用不了,也是从php上做的限制。
数据库只能操作当前数据库,因为其登录用户为test,只对testDB有操作权限。
本文转载自 神月资讯,作者:神月资讯