云服务器安全设计

0x00 产品定位


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

0x01 国外竞争产品分析


目前在云主机安全ToB的国外厂商归纳总结有以下几家:

技术方向 厂商
云安全信息和事件管理产品 Splunk、AlienVault
云主机安全产品 CloudPassage、Illumio、vArmour、FortyCloud
私有云服务器安全 TrendMicro、Symantec、McAfee
厂家 描述
Illumio 自适应安全
FortyCloud Cloud Network Firewall as a Service
vArmour 利用大数据分析技术,通过扫描进入网络的每一块数据来筛查疑似非法数据并对其进行标记,跟踪。
CloudPassage 服务器的安全配置管理、托管防火墙管理、入侵检测、服务器账号审计、事件报告与告警
Splunk 从海量机器数据中提取有价值的信息,并进行实时分析和展现
AlienVault 为客户提供SIEM解决方案。同时,AlienVault结合众包威胁情报平台提供了一个混合威胁管理解决方案。
TrendMicro,McAfee,Symantec VMware、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 项目里程碑

p1

0x04 产品功能详细架构设计(Product Proposal)

4.1 产品定位

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

p2

开发的优先级如下:

  1. 基于日志大数据收集分析平台(P1)
  2. 基于基于Agent收集云主机相关精确的安全信息 (P2) 本模块需要大量的开发人员完成,如果获得天使轮融资后可以开发。
  3. 威胁情报模块(P2) 威胁情报这部分可以对接国内的威胁情报系统 例如:微步等。
  4. SDN网络安全防火墙模块(P2)防火墙模块目前还需要做更多的研究才能集成,建议使用linux主机上自带iptable实现。

4.2、产品功能详细设计

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

p3

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

p4

所选择的实现技术手段:

p5

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

业务流程图:

p6

核心界面设计:通过visio原型图表现。

核心界面首先,要画出原型图,那么,和用户接触最多的是web前端,所以,设计要精致。

(1)Web前端

Web前端分为四大功能模块

  1. Dashboard:显示攻击类型和攻击源
  2. Analysis:图形化分析详细的攻击方式
  3. Reporting: 以数据形式展示攻击类型、攻击源和详细攻击方式
  4. Configuration:参数配置(非核心模块就不展示了)

p7

p8

p9

(2)Web管理后台

p10

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

0x05 产品技术架构设计


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

p11

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部署过程:

  1. rpm -ivh
    http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
  2. yum -y install nginx
  3. service nginx restart
  4. chkconfig nginx on

配置nginx
在/etc/nginx/conf.d/中增加MyPythonServer.conf,内容如下:

#!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安装配置

#!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 安装忽略

#!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

#!bash
cd /etc/nginx/
vi nginx.conf
#打开gzip
gzip    on;

配置vhost,假设域名为www.xxx.com

#!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;
        }

}

测试一下 配置文件是否有错误

#!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测试文件,内容为

#!php
<?php
phpinfo();
?>

然后:

#!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扩展安装

#!bash
yum install mysql-devel

由于之前没有安装mysql服务,也没有安装php的mysql扩展,用是PDO方式,为适应老版本的joomla程序,再添加mysql.so扩展

方法如下:

1、进入php源代码目录:

#!bash
cd /usr/local/src/php-5.6.8/ext
cd mysql
yum install autoconf

调用已经编译好的php可执行程序phpize,phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块

phpize的规则:去哪个目录下运行phpize文件,那么就会在该目录下生成一个configure文件。

#!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扩展安装

#!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

©乌云知识库版权所有 未经许可 禁止转载


30
kartfran 2016-02-24 16:38:14

@future 看样子有做深入的了解啊

30
kartfran 2016-02-24 16:34:53

@bt0sea 有云的云安全解决方案确实需要深入了解下,不单单是在主机上的waf,在云计算内部进行深度整合。

30
future 2016-02-24 16:21:32

@future 更正一下,国内唯一有深厚云计算能力的安全公司。

30
future 2016-02-24 16:20:00

@bt0sea 有云是国内第一家提供数据私有化云安全的厂商,公司创始团队对waf有深厚的积累,云waf只是其进入云安全领域的一款产品。据我所知,上海有云也是国内唯一一家拥有底层云计算能力的公司,核心团队来自华为云计算团队。目前针对大流量集中化的安全解决方案,这个公司有完善的方案和实际落地能力。未来值得关注。云安全这个市场现在还是比较乱,希望有更多的创新公司进入,打破BAT系列的垄断,并颠覆传统安全的思维。

30
winsyk 2016-02-24 14:12:04

我只有个疑问,为啥架构设计写着写着,就到部署去了,我还往下翻了翻发现没了……

30
bt0sea 2016-02-23 18:18:09

300G是一台,10台nginx服务器就 3T的数据了。一个稍微大点的P2P公司不只10台Nginx服务器吧。接下来你说的,我觉得有道理,但是这些是需要数据支持,运营支持的,不上线 没有种子用户,怎么来数据呀?没数据怎么来算法分析呀,不是拍脑袋出来的算法的,是运营出来的,[email protected]

30
x9 2016-02-23 17:55:40

@bt0sea 说得已经蛮委婉了。 没有规划的事 拿出来说 空中楼阁。300G/月 这算大?
无论是storm spark hadoop 都只是 基础软件,数据处理方案 数据分析逻辑 软架构 这才是 看出对安全真正的理解和想法。但是上文看不出。

30
bt0sea 2016-02-23 13:28:52

(1)顺耳的话 这个事是这个样的 如果你敬我,说话委婉一些,我肯定能接收,错了就是错了,承认改了就好。如果你说话太过激,我只能是这个态度。

(2)日志根本不够,这个事,不知道你仔细看文章没有,规划中有P1/P2 做Agent是最终目的呀,这个我就不说什么了。

(3)还有大数据的问题,试想大数据是怎么产生的,一个重要的标识的每天web日志量到一定程度,比如说一台机器一天 10G日志,那我要分析一个月的数据,就是300G 而且要求快速查询。你说这不是大数据么?还有处理手段,[email protected]

30
bt0sea 2016-02-23 12:24:07

你说的有道理,本来想搭建一个简答的demo环境,但是搞了一半,确实没做完。确实工作太紧张,要是有时间,很想静下心来做一下,请谅解。还有一点真的不想只是表面的东西,也稍微涉及一点技术的东东,我是这么考虑的,[email protected]

30
x9 2016-02-23 11:05:09

@bt0sea "融资后才能找大数据专家做产品迭代" ,没人没技术,你靠什么融资?靠嘴皮子?靠你画的那几张图? 就这点东西 各种传统SOC siem 早已做烂,异想天开之前先多看看书,向业界学习学习。创业是好事,听不进不同的声音那就危险了

30
x9 2016-02-23 10:48:24

@bt0sea 只能听顺耳的话,建议意见听不进去,还想啦投资呢,呵呵。
你到底看懂了吗?我说的是 仅有那点日志根本不够,如果你连这点都理解不到,还谈什么大数据。数据都没有 还 ‘大数据’ ,东西都拿不出去 那里来的量变?有量吗? 融资之后才有算法,哈哈

30
thanatos 2016-02-23 10:24:13

如果没写完,咱在开头说一下,看到一半发现安装教程了,感觉好奇怪……

30
安全小飞侠 2016-02-22 23:44:46

@bt0sea 赞共享精神,加油!多一份做事,少一份吐槽!顶楼主!

30
bt0sea 2016-02-22 22:10:15

我觉得你说的在理,当时设计的时候还想把数据库日志加到里面,但是由于时间关系,没有把不确定的东西给用户,而且数据库日志大家都知道有很多问题,现在的数据库审计系统也没有办法很好的解决问题,[email protected]

30
bt0sea 2016-02-22 22:02:02

哥们,还有后续文章接上,我也知道不完整,但是时间有限,[email protected]

30
bt0sea 2016-02-22 22:00:15

[email protected]

30
bt0sea 2016-02-22 21:59:37

日志是安全的传感器,如果你连这个都不懂,别来搞安全了。。。回小学进修去吧。态势感知是在大数据收集的基础上 从量变走到质变。建模算法这个需要融资后才能找大数据专家做产品迭代,回头看看,你觉得这不是态势感知?还有免费给你看你还瞎BB,[email protected]

30
bt0sea 2016-02-22 21:52:43

名字起的有点挫,关键是内容,[email protected]

30
bt0sea 2016-02-22 21:51:42

[email protected]

30
bt0sea 2016-02-22 21:50:07

有云看了一下,基于主机的WAF吧,和安全狗有什么区别呀? 销售上走的是政府,这点做的很好,[email protected]

30
bt0sea 2016-02-22 21:43:59

[email protected]

30
bt0sea 2016-02-22 21:43:14

做为一个用户 我想问一下你的用户界面在哪里?怎么和用户交互?毕竟产品开发出来是给人用的,如果你有开源精神,建议把设计细节分享给大家,如果你想拿这套东西融资,那么,请告诉我你如何获得用户?@robert

30
Sai、 2016-02-22 14:56:51

@安全小飞侠 233,真有点像,不过作者这东西和当今的很多安全产品设计理念并没有本质上的区别,至于态势感知,光是靠日志那也太不靠谱了。举个例子,应对目前各种花式绕过技术,你用什么特征来检测?特征库的话那很多传统产品已经有了,解决问题了吗?没有。
目前国内对APT的防御技术最多达到0day的探测与防御上,距离态势感知还差的很远,等什么时候解决了多维度关联分析收敛和误报问题,才能算的上态势感知。

30
x10 2016-02-22 14:36:21

文章一开始说移动互联网开发迭代快,安全感知是问题。但是在文章后面,我都没看到如何解决这个迭代快的安全感知问题?是不是迭代慢就不需要检查日志了?

30
xs 2016-02-22 14:31:10

挺厉害的

30
x9 2016-02-22 14:26:21

随便 搞个 日志分析 就敢叫 态势感知了?
长篇大论 大部分是web前端开发,烂大街的分布式数据处理架构,这和安全有啥关系?
你这东西做出来到底是能解决安全工作中的啥难点痛点?不会只是做个 biubiubiu 打来打去的图吧?底薪招几个毕业生做就可以了。

30
blackfish 2016-02-20 19:23:28

@robert 膜拜

30
masker 2016-02-20 18:43:06

这安全设计?看着有点不对啊

30
mujj 2016-02-20 14:13:04

这是一个集中蜜罐,用来吸引火力然后做行为分析应用到其他业务做风控?

30
kartfran 2016-02-20 12:24:07

貌似搞云安全的还有上海有云,而且有很完善的解决方案

30
Tai7sy 2016-02-19 21:10:24

@安全小飞侠 一语中的!-_-

30
Jack 2016-02-19 20:53:50

@robert 开发的什么功能

30
robert 2016-02-19 20:01:39

@Kuuki 当然不是 自己用ecshop 怎么能和淘宝比 ecshop 是ToC的产品 淘宝是PaaS。你这样类比明显没搞清楚怎么回事。

30
Kuuki 2016-02-19 18:42:43

@robert 大概就和自己用ecshop开个购物网站和淘宝的区别?

30
安全小飞侠 2016-02-19 18:39:47

好像是一篇云服务器安全产品的创业计划书啊!-_-

30
robert 2016-02-19 13:21:05

我有一个python+nginx+mongodb的架构,实现了大部分云盾的功能,并且自己设计了一些云盾没有的东西,开发一人。

感谢知乎授权页面模版