云服务器安全设计

标签: 技术分享 | 发表时间:2016-02-19 10:25 | 作者:bt0sea
出处:http://drops.wooyun.org

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,内容如下:

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

[root@localhost venv]# pip install Django
安装uWSGI
[root@localhost 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 安装忽略

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

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

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

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

}

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

/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
phpinfo();
?>

然后:

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

yum install mysql-devel

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

方法如下:

1、进入php源代码目录:

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

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

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

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

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

相关 [服务器 安全 设计] 推荐:

云服务器安全设计

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

centos linux 服务器安全

- - 操作系统 - ITeye博客
我们必须明白:最小的权限+最少的服务=最大的安全. 所以,无论是配置任何服务器,我们都必须把不用的服务关闭、把系统权限设置到最小话,这样才能保证服务器最大的安全. 下面是CentOS服务器安全设置,供大家参考. 一、注释掉系统不需要的用户和用户组. 注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦.

JAVA安全之JAVA服务器安全漫谈

- - WooYun知识库
本文主要针对JAVA服务器常见的危害较大的安全问题的成因与防护进行分析,主要为了交流和抛砖引玉. 以下为任意文件下载漏洞的示例. DownloadAction为用于下载文件的servlet. 在对应的download.DownloadAction类中,将HTTP请求中的filename参数作为待下载的文件名,从web应用根目录的download目录读取文件内容并返回,代码如下.

小措施提高Linux服务器安全

- - 博客 - 伯乐在线
挂着扫描器,漫无目的的寻找不设防的主机,植入后门,控制,卖给需要的人. 所以,一些基本的安全措施可以避免太过容易成为目标,下面就小小的介绍一些. 作为默认系统管理账号root是最容易攻击的目标. 禁止通过ssh远程登录是绝对必须的. 编辑 /etc/ssh/sshd_config. 同时,请为管理员建立个人账户,并分配到sudoers用户组(默认为%admin).

移动客户端与服务器端安全通信方案

- - CSDN博客移动开发推荐文章
    手机移动端与服务器端安全通信一直是个问题,让人比较头疼,最近在网上查了一些资料,总结了一下得出了一个自我感觉还好的方案,分享一下,也希望得到大家的批评斧正.     CS,C客户端,S服务器端.     在客户端软件发布前,客户端保存一个公钥,服务器保存一个私钥.     C1:客户端随机生成一个对称密钥K,使用公钥加密内容(K+账户+密码).

服务器安全检查指引——日常维护说明 - AllEmpty

- - 博客园_首页
  文档写好有一段时间了,可一直不敢上传,对服务器安全了解得越多,就越觉得自己很肤浅,很多都还没入门,发上来在这么多大神面前搬门弄斧,一不小心可能就会给劈得渣都不剩了.   在编写的过程中,有不少地方心里明白是怎么回事,要怎么去分析和处理,但就是不知道怎么用文字表述出来(真是书到用时方狠少啊),文笔有限也请大家见谅.

BitTorrent 开发出摆脱服务器的安全通信技术!

- - TECH2IPO创见
自从斯诺登揭露了美国国家安全局的监听项目后,如何使得线上的通信变得更加安全,就变成了当务之急. BitTorrent ,这种点对点的文件分享,多年来依赖于服务器处理,环节尽管易被攻击和侵入,但是就这么磕磕绊绊沿用下来了. 但是,现在基于 BitTorrent 开发出的技术,出现了更加先进的不依赖于服务器的通信方式:BitTorrent Chat.

20个Nginx Web服务器最佳安全实践

- - Gsion&apos;s Blog
Nginx是一个轻量级,高性能的Web服务器/反向代理和电子邮件代理(IMAP/POP3),它可以运行在UNIX,GNU/Linux,BSD变种,MAC OS X,Solaris和Microsoft . 根据Netcraft的调查数据显示,互联网上6%的域名都使用了Nginx Web服务器. Nginx是解决C10K问题的服务器之一,与传统服务器不一样,Nginx不依赖于线程处理请求,相反,它使用了一个更具扩展性的事件驱动(异步)架构.

通用CentOS 6 服务器安全配置指南

- - SegmentFault 最新的文章
Linux是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入Linux系统,或者盗取Linux系统上的重要信息. 不过,只要我们仔细地设定Linux的各种系统功能,并且加上必要的安全措施,就能让黑客们无机可乘. 一般来说,对Linux系统的安全设定包括取消不必要的服务、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经常性的安全检查等.

CentOS7服务器基本安全防护篇

- - 企业架构 - ITeye博客
这个只是个人笔记,方便日后查阅,若有错误,欢迎同行帮忙纠正. 1.最近买的腾讯云和阿里云服务器均受到攻击,以前不懂这方面,所以也没在意. 接着便着手了解这方面的知识,经过网上查阅和向同行请教,现在基本上对服务器的基本防护算是入门了. 1.通过查看项目里面的日志  cat catalina.out:.