# 云服务器安全设计

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2016-02-19T02:25:00Z
Canonical: https://wepostx.com/topics/80

> 乌云历史资料归档
>
> **原始作者：** bt0sea
> **原始编号：** superkieran-wooyundrops:1044
> **原始发布时间：** 2016-02-19 10:25
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

# 0x00 产品定位

目前越来越多的初创企业把自己的业务系统架设在公有云上，包含：阿里云、Ucloud、青云、华为云和AWS。在云上的安全怎么保证，是目前摆在我们面前的最大问题，因为，互联网公司业务系统在不断迭代，迭代周期最少的有3天，而且架构也不断在改变。在这种频繁改变的过程中，云安全应该怎么保证？，云主机安全服务平台（Cloud security as a service），为多租户提供云主机安全服务的产品，减少用户业务系统攻击面，防止恶意的定向攻击（APT）。造成企业敏感信息泄露等，避免影响企业业务的安全事件的发生。

# 0x01 国外竞争产品分析

目前在云主机安全ToB的国外厂商归纳总结有以下几家：
技术方向厂商
云安全信息和事件管理产品Splunk、AlienVault
云主机安全产品CloudPassage、Illumio、vArmour、FortyCloud
私有云服务器安全TrendMicro、Symantec、McAfee
厂家描述
Illumio自适应安全
FortyCloudCloud Network Firewall as a Service
vArmour利用大数据分析技术，通过扫描进入网络的每一块数据来筛查疑似非法数据并对其进行标记，跟踪。
CloudPassage服务器的安全配置管理、托管防火墙管理、入侵检测、服务器账号审计、事件报告与告警
Splunk从海量机器数据中提取有价值的信息，并进行实时分析和展现
AlienVault为客户提供SIEM解决方案。同时，AlienVault结合众包威胁情报平台提供了一个混合威胁管理解决方案。
TrendMicro,McAfee,SymantecVMware、Hyper-v、Linux KVM私有云虚拟机安全解决方案

# 0x02 产品目标

针对互联网金融中小企业用户。获取用户改进产品，互联网金融目标用户行业分析如下：
业务模式名称业务模式详细描述代表企业：安全业务需求
第三方支付企业模式第三方支付企业指在收付款人之间作为中介机构提供网络支付、预付卡发行预受理、银行卡收单以及其他支付服务的非金融机构支付宝、易宝支付、拉卡拉、财付通为代表的互联网支付企业，快钱、汇付天下为代表的金融型支付企业。
P2P网络小额信贷模式通过P2P网络融资平台，借款人直接发布借款信息，出借人了解对方的身份信息、信用信息后，可以直接与借款人签署借贷合同，提供小额贷款，并能及时获知借款人的还款进度，获得投资回报。代表企业：美国的prosper和lendingclubP2P公司，国内的人人贷、拍拍贷、红岭创投等 陆金所
众筹融资模式所谓众筹平台，是指创意人向公众募集小额资金或其他支持，再将创意实施结果反馈给出资人的平台。网站为网友提供发起筹资创意，整理出资人信息，公开创意实施结果的平台，以与筹资人分成为主要赢利模式代表企业：国外最早和最知名的平台是kickstarter，国内有点名时间、众筹网、淘梦网等 京东众筹、人人投、追梦网、大家投
虚拟电子货币模式虚拟货币是一种计算机运算产生或者网络社区发行管理的网络虚拟货币，可以用来购买一些虚拟的物品，比如网络游戏当中的衣服、帽子、装备等，只要有人接受，也可以使用像比特币这样的虚拟货币购买现实生活当中的物品。代表企业：国外的比特币、亚马逊币、Facebook币，国内的Q币等。
基于大数据的金融服务平台模式通过打造类似去哪儿这样的金融产品垂直搜索引擎的方式，把有借款需求的个人和有放款需要的中小银行和小贷机构在一个平台上进行对接；然后通过广告费或者交易佣金的方式获得收入。代表企业：国外的Bankrate（银率网），国内的融360、好贷网、金融界理财等
互联网银行模式（Internet bank or E-bank）借助现代数字通信、互联网、移动通信及物联网技术，通过云计算、大数据等方式在线实现为客户提供存款、贷款、支付、结算、汇转、电子票证、电子信用、账户管理、货币互换、P2P金融、投资理财、金融信息等全方位无缝、快捷、安全和高效的互联网金融服务机构。互联网银行的便利性、高效性将给传统银行带来较大的挑战
互联网理财通过互联网进行更高效的更便捷的钱生钱的事业铜板街、格上理财、招财宝 - 蚂蚁金服、积木盒子、火球

# 0x03 市场机会

### 3.1 我们的机会在哪里
国内云主机安全服务平台有以下几家：
厂商名称产品介绍
乌云唐朝巡航借助众测试等社区运营模式产生的云主机安全解决方案，主要是及时响应服务器安全漏洞。
阿里云盾DDoS防护，主机入侵防护，以及漏洞检测、木马检测等一整套安全服务
安全狗基于主机WAF 和anti-DDoS功能
知道创宇加速乐、云安全监控平台、ZoomEye大数据安全扫描平台
百度安全宝云WAF企业版、DDoS云防护、应急响应
青藤云安全自适应安全理念的产品化的国内第一家厂商
面对这些公司的竞争，我们的竞争力在于获得种子用户，完全开源的策略。提供安全运维服务。二次开发等服务。

### 3.2 如何成功？
支持云方式部署方式，快速获取用户。免费安装模式。
如果用户打算使用我们的解决方案，可以独立部署或者开放源代码。
KPI考核
统计安装用户数量、留存率，月付费用户转化率。免费用户

### 3.3 项目里程碑

![原文图片](/media/2016/06/29897423321fb9c523692d20e393ccd6)

# 0x04 产品功能详细架构设计（Product Proposal）

### 4.1 产品定位
通过以上国内外云安全公司产品分析，我认为云主机安全平台需要具备以下四个大功能模块。

![原文图片](/media/2016/06/87477364197006e37c0b9d888a6b9c15)

开发的优先级如下：

- 基于日志大数据收集分析平台（P1）

- 基于基于Agent收集云主机相关精确的安全信息 （P2） 本模块需要大量的开发人员完成，如果获得天使轮融资后可以开发。

- 威胁情报模块（P2） 威胁情报这部分可以对接国内的威胁情报系统 例如：微步等。

- SDN网络安全防火墙模块（P2）防火墙模块目前还需要做更多的研究才能集成，建议使用linux主机上自带iptable实现。

### 4.2、产品功能详细设计
针对P1需要完成的功能，建立基于大数据分析平台，防范APT攻击。产品概念设计可以 为：基于日志的态势感知功能。

![原文图片](/media/2016/06/7c57abad65875c8c677387318e0962ec)

处理Web日志数据结构如下：

![原文图片](/media/2016/06/b8bd73bb86aab9862568e47ed16a64c6)

所选择的实现技术手段：

![原文图片](/media/2016/06/1e9a58aedd96e4cc90fca5bc74146c29)

由于前期数据量没有到达一定的数量级，可以使用传统的关系型数据实现。当然如果本系统应用到大公司的时候可以迭代技术架构、hadoop或者storm来解决问题。
业务流程图：

![原文图片](/media/2016/06/daecdc08df2ae19283a96ccbd955f973)

核心界面设计：通过visio原型图表现。
核心界面首先，要画出原型图，那么，和用户接触最多的是web前端，所以，设计要精致。
（1）Web前端
Web前端分为四大功能模块

- Dashboard：显示攻击类型和攻击源

- Analysis：图形化分析详细的攻击方式

- Reporting： 以数据形式展示攻击类型、攻击源和详细攻击方式

- Configuration：参数配置（非核心模块就不展示了）

![原文图片](/media/2016/06/840bb5498cf76f495fb41b553c3e2c0a)

![原文图片](/media/2016/06/a331539204e14ef88178933bef1de0c1)

![原文图片](/media/2016/06/b789e726fc411021c42a91efe0326a60)

（2）Web管理后台

![原文图片](/media/2016/06/c04a75663cf79d757b09958ae572054f)

交互流程设计：正常应该通过Axure动画表现，由于本次设计不是特别复杂，只是几个功能模块的切换就不画交换流程图了。

# 0x05 产品技术架构设计

由于目前产品设计需要考虑高扩展性，所以技术选型大致如下：

![原文图片](/media/2016/06/9ca2e5d540f48fab1d785524555816ff)

# 0x06 Demo搭建

根据技术选型后，需要建立Demo 环境技术难点集中在服务器端和Web后端。那么下面说明一下这两部分搭建：

### 6.1 服务器端
组件名称详细描述
操作系统Centos 6.7 Final
Web前端服务器Nginx/1.8.1
Web服务器Django/1.7
Python解析器uwsgi
Python语言Python 2.7.10
Restful API架构Tastypie
看到这个架构其实很多小朋友会问为啥要这么设计，太繁琐了？其实设计原则主要是为了将来的扩展性。Web前端服务器：本系统是一个公有云安全平台，用户量将来要不断的增加，使用Nginx可以做到横向扩展。
6.1.1 Nginx安装部署
Nginx部署过程：

- rpm -ivh
http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

- yum -y install nginx

- service nginx restart

- chkconfig nginx on
配置nginx
在/etc/nginx/conf.d/中增加MyPythonServer.conf，内容如下：

```text
#!bash http { #负载均衡 upstream production_site{ server web1.xxx.com:8080 weight=6 max_fails=3 fail_timeout=20s; server web2.xxx.com:8080 weight=3 max_fails=3 fail_timeout=20s; server web3.xxx.com:8080 weight=7 max_fails=3 fail_timeout=20s; server web4.xxx.com:8080 weight=8 max_fails=3 fail_timeout=20s; } server { listen 8090; server_name web1.xxx.com,web2.xxx.com,web3.xxx.com,web4.xxx.com; charset utf-8; client_max_body_size 75M; location / { uwsgi_pass django; include uwsgi_params; } }
```
6.1.2 Django&uwsgi安装配置

```text
#!bash [ [email protected] venv]# pip install Django 安装uWSGI [ [email protected] venv]# pip install uwsgi [uwsgi] home=/data/Mydata/env chdir=/data/Mydata/ uid=root gid=root wsgi-file=/data/Mydata/wsgi.py socket=127.0.0.1:8001 master=true workers=8 pidfile=/data/Mydata/uwsgi.pid vacuum=true thunder-lock=true enable-threads=true harakiri=30 post-buffering=4096 daemonize=/data/Mydata/uwsgi.log logger=file:/data/Mydata/uwsgi.log
```

### 6.2 Web后端
6.2.1 Php-fpm安装
nginx 安装忽略

```text
#!bash cd /usr/local/src/ wget http://php.net/distributions/php-5.6.8.tar.gz tar --zxvf php-5.6.8.tar.gz yum install -y libxml2 libxml2-devel openssl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libmcrypt libmcrypt-devel mcrypt mhash ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --enable-fpm --disable-ipv6 --enable-pdo --with-pdo-mysql --with-openssl --with-mcrypt --with-mhash --enable-json --enable-mbstring --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --enable-zip make make install cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf cp /usr/local/src/php-5.6.8/sapi/fpm/init.d.php-fpm /usr/local/php5/sbin/ cd /usr/local/php5/sbin/ chmod 755 init.d.php-fpm ./init.d.php-fpm start Starting php-fpm done
```
配置Nginx来支持PHP

```text
#!bash cd /etc/nginx/ vi nginx.conf #打开gzip gzip on;
```
配置vhost，假设域名为www.xxx.com

```text
#!bash cd /etc/nginx/conf.d/ vi www.xxx.com.conf #内容如下 server { listen 80; server_name www.xxx.com xxx.com; location / { #开启ssi支持shtml ssi on; ssi_silent_errors on; ssi_types text/shtml; index index.shtml index.php index.htm index.html; root /data/www/www.xxx.com; #框架路由设置 if ( !-e $request_filename ) { rewrite ^(.*)$ /index.php?url=$1 last; } } location ~.php$ { root /data/www/www.xxx.com; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~.(jpg|jpeg|png|js|css) { root /data/www/www.xxx.com; expires 30d; } }
```
测试一下 配置文件是否有错误

```text
#!bash /etc/init.d/nginx configtest nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
```
新建info.php测试文件，内容为

```text
#!php <?php phpinfo(); ?>
```
然后:

```text
#!bash vim /etc/hosts 127.0.0.1 www.xxx.com cd /usr/local/src/php-5.6.8 cp php.ini-production /usr/local/php5/etc/php.ini
```
至此nginx+php-fpm设置完成。
6.2.2 Mysql扩展安装

```text
#!bash yum install mysql-devel
```
由于之前没有安装mysql服务,也没有安装php的mysql扩展，用是PDO方式，为适应老版本的joomla程序，再添加mysql.so扩展
方法如下：
1、进入php源代码目录：

```text
#!bash cd /usr/local/src/php-5.6.8/ext cd mysql yum install autoconf
```
调用已经编译好的php可执行程序phpize,phpize是用来扩展php扩展模块的，通过phpize可以建立php的外挂模块
phpize的规则：去哪个目录下运行phpize文件，那么就会在该目录下生成一个configure文件。

```text
#!bash /usr/local/php5/bin/phpize ./configure --with-php-config=/usr/local/php5/bin/php-config --with-mysql --with-zlib-dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/ make && make install
```
完成后，可以看到no-debug-non-zts-20131226目录下生成了mysql.so文件
修改php.ini,去掉;extension=php_mysql.so前面的分号。将php_mysql.so改成我们生成的mysql.so。
重启php-fpm后可以从phpinfo看到mysql扩展已经生效。
6.2.3 Yaf扩展安装

```text
#!bash wget https://github.com/laruence/yaf/archive/master.zip unzip master.zip ./configure --with-php-config=/usr/local/php5/bin/php-config make && make install vim /usr/local/php5/etc/php.ini extension=yaf.so
```

## Replies
