一、操作系统平台
机智云系统搭建在全球服务器使用最多的Linux操作系统平台上,因为它具有一致公认的更好的稳定性、效率性和安全性。而我们所采用的操作系统是Linux非常成熟的发行版之一CentOS (Community Enterprise Operating System),它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成的。以其稳定性、可靠性和安全性而著称,同时有着强大的英文文档与开发社区的支持。
每个版本的CentOS都会获得十年的支持(通过安全更新方式)。新版本CentOS大约每两年发行一次,而每个版本的CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。所以CentOS是很多商业性公司服务器操作系统首选。 目前我们使用了CentOS 6.3加固版64位操作系统,包含了很多错误修正、升级和新功能。
二、云盾防护系统
云盾防护系统是依托公有云服务系统,通过主动防御和风险提醒方式,分别包含如下方式保障系统安全:
DDoS攻击:DDoS(Distributed Denial of Service)是分布式拒绝服务攻击的英文缩写,它是一种利用多台计算机向指定目标服务器发送攻击数据包,导致目标服务器系统资源或带宽耗尽,从而对正常业务请求出现拒绝服务的攻击行为。我们采用业界主流专业DDoS防护设备,能有效抵御SYNFLOOD,UDPFLOOD,CC等常见攻击。当云盾发现攻击时,立即加入保护,无需人工介入。并使用精准的数据分析,系统实时提供流量数据,通过数据分析攻击情况;同时提供攻击类型、攻击流量、攻击时长等数据,便于取证、追溯及分析。
端口安全检测:定期扫描服务器当前开放的端口,降低系统被入侵的风险,并有端口开放列表详细报告。
异地登录提醒:根据网站运维人员的登录习惯进行分析并建立模型,异地登录提醒通过扫描访问日志实时发现异常登录行为,并以短信或邮件的方式通知运维人员,运维人员则可查看用户登录的时间、地点和目标服务器进行确认,避免非授权登录可能造成的损害。
主机密码暴力破解防御:密码暴力破解对服务器的危害很大,如果被破解成功,会窃取管理员权限,从而危害网站及网站用户信息和权益。密码破解防御通过扫描访问日志实时发现非法入侵,并将入侵的IP封禁24小时。并以短信或邮件的方式通知运维人员,让运维人员查看入侵时间、不法IP来源、目标云服务器和拦截的次数等入侵信息。
网站后门检测:网站后门是植入网站的一段代码,运行在Web端,通常隐蔽性较好,管理员较难实时发现,植入后门的网站会被窃取网站信息,甚至丢失网站控制权,同时会侵害网站用户的隐私信息,给网站造成不可挽回的损失。后门检测通过扫描访问URL实时发现网站后门,并以短信或邮件的方式通知运维人员,让运维人员查看网站后门隶属的云服务器及后门URL等信息,以便及时删除后门消除隐患。
网页漏洞检测:提供对网站的SQL注入、XSS跨站脚本等各项高危安全漏洞进行检测,并将检测报告提供给运维人员。
网页挂马检测:通过静态分析技术与虚拟机沙箱检测技术相结合,对网站进行挂马检测,准确率95%以上,并将检测报告提供给运维人员。
三、操作系统的日志文件分析
Linux的日志文件用来记录整个操作系统使用状况。运维人员会专门针对几个重要的日志文件进行关注和分析,如lastlog,secure,maillog等,从而分析得到更为详细的系统使用记录。
记录进入系统的用户的信息,包括登录的时间、登录是否成功,登录帐号的名称,登录的IP地址等信息。
记录在系统上所有的操作,包括操作命令,后台crontab信息, 邮件发送情况,硬件警告信息等等。
四、系统及软件升级更新
操作系统升级。在CentOS官网有升级通知时,我们运维人员会权衡和考虑此升级对系统安全性和稳定性影响如何,及时做出相关策略,保证系统风险降到最低。
软件升级。机智系统除了我们自己开发的系统外,还需要依赖第三应用软件,如OpenSSL,RabbitMQ等等,对于其官方网站有最新版或漏洞补丁时,我们运维人员也会马上做出响应,评估其风险,是否需要更新或升级。
五、系统软硬件状况监控平台
为掌控系统软件及硬件运行状况,必须要有实时监控平台,对预防和发现故障,并及时通知给运维人员,快速响应处理,从而保证应用服务正常持续有效。
对于机智云系统,我们监控了每台服务器硬件运行状况和系统应用程序,涵盖了常用的各种监控类型,如:URL监控、Ping监控、HTTP监控、TCP端口监控、UDP端口监控、DNS监控、SMTP监控、FTP监控、CPU利用率监控、内存利用率监控、磁盘空间利用率监控等等。并将网站或服务器故障问题发送到手机和邮箱上,确保运维人员及时获取故障信息并响应处理。
为了完善和更进一步监控我们应用服务,提高系统稳定性,我们也对某些应用服务进程进行特定监控,如nginx, uwsgi, 以及一些机智云特有的服务等等。
六、系统备份策略
我们对机智云系统有一套数据备份策略,运用自动化脚本对相关重要数据进行备份。确保万一在系统遭到破坏或黑客攻击而发生瘫痪时,能迅速恢复工作,把损失减少到最小。
数据库备份。机智云系统采用了RDS及NoSQL两种类型数据库,自动化脚本定时每天对它们进行增量备份,每周进行全量备份。
系统日志文件。每天应用系统产生大量log日志文件,记录系统服务每个响应请求,及相关操作。自动化脚本每天会对这些log日志文件进行处理保存。方便开发人员及运维人员针对相关问题进行查找定位。
系统镜像备份。机智云系统由许多子系统组成,每个子系统部署在不同的服务器上,以及各自负责不同的功能,同时又相互紧密结合影响。所以我们都分别地对各个子系统进行镜像备份。对快捷恢复系统平台起到至关重要作用。
七、 运维人员监控机制
目前保证机智云系统正在有条不紊地运行,除了实时监控平台外,还有三位运维人员负责监控和维护。
每位运维人员按照制定的时间对系统24小时检查和及时相关故障报警值班。手机务必24小时开机在线状态,2分钟内必须接通电话。假期时间也不例外。
运维人员每天及每周对机智云系统进行作常规检查项目后,需要得出服务器状况检查报告。 如应用系统程序运行状况,系统硬件CPU负载,内存使用率,磁盘空间使用状况等等。
机智云 M2M 安全机制
一、机智云安全机制描述
设备首次连接云端时自动注册。注册需提供一个由云端生成的随机字符串product_key并预烧录到设备的固件中, 以及一个由设备随机生成的密匙passcode。设备注册成功后,会收到一个由云端统一分配的did。设备注册成功后,每次连接云端时都必须使用did和passcode登陆云端。
用户在使用手机App前,必须要先在云端注册生成用户帐号。
用户想通过手机控制设备前,必须先与该设备绑定。绑定的过程其实就是获取设备的did和passcode的过程。需要能物理接触设备权限的用户才能获取设备的passcode。当用户按下设备的某个按钮后,设备会在短时间内处于可被配对状态,这时用户可以通过手机获取到设备的did和passcoce。手机会把用户与设备的绑定信息同步到云端。
用户在内网的环境下,必须要首先通过设备的passcode登陆设备。只有登陆了设备的手机才能控制设备。
用户在因特网的环境下,必须要登陆云端,且当用户有对该设备具有访问权限时(也就是用户与设备存在绑定关系)才能远程和设备交互。
当设备的passcode泄露后,设备可以重新随机生成新的passcode并通知到云端。基于原设备passcode的用户绑定自动失效。
所有在因特网场景下的网络通讯全部采用SSL/TLS加密。
设备passcode只会存在于机器与机器之间的通讯,用户无需接触passcode也无需知道设备的passcode是什么。
客户端连接云端的TCP服务端口后,如不发送登陆指令而只是长期占用该端口资源,30秒后,云端自动会断开该客户端的连接并释放该端口资源。
请求云端的数据包中,如出现格式不正确或超出允许的权限,该TCP连接会马上被断开,避免对云端或其它在线用户造成干扰。
二、各种攻击行为分析
攻击者得知设备的id后(如设备的MAC地址)想远程控制该设备。由于用户需要先绑定设备(获取到设备的did和passcode)后,凭did远程控制设备才能成功。单靠设备id(如设备的MAC地址)是不能控制设备的。
攻击者假冒设备的身份连接云端,用于接收用户对设备的控制信息,从而得知用户对设备的使用情况。因为所有设备在首次连接云端时都生成一个随机的passcode并向云端注册得到did,后每次连接云端时都必须使用did和passcode登陆云端,攻击者因没有正确的设备passcode所以无法假冒设备的身份连接云端,因此无法监控用户对设备的使用情况。
攻击者进入到设备所在的局域网(可以是以朋友的身份到设备的拥有者家里作客),偿试在内网的环境下控制设备。因为在在内网的环境下,必须要首先通过设备的passcode登陆设备才能控制设备,而攻击者无法物理接触设备(如果能物理接触设备就什么权限都有了,因此不考虑这种情况),所以攻击者无法获取设备的passcode,进而无法在内网的环境下控制设备。
攻击者想通过检测(监听)用户与设备远程交互的信息流的方式得到设备的passcode,或得知手机与设备交互的信息内容。由于手机与云端,设备与云端在不安全的因特网环境下的通讯全部使用了SSL/TLS加密,所以攻击者很难通过检测通讯信息流的方式获取设备passcode或手机与设备的通讯内容等信息。
保存有用户密码或设备的passcode手机丢失。用户密码可以通过网站或另一台手机的方式重置。设备passcode可以通过按下设备上的重置passcode按钮重新设置一个新的passcode。
设备转让所有权后,原用户想继续控制该设备。新用户接手设备后,给设备设置一个新的passcode即可。基于原设备passcode的用户绑定自动失效,原用户无法再控制该设备。
机智云Web应用程序安全
一、用户登录和权限系统
首先,用户必须登录才能够访问机智云Portal,使用邮箱和密码进行登录。登录过程中传输的密码是不可逆加密后的密文,即使HTTP传输被**,密码也不会泄露。如果用户的登录邮箱泄露,攻击者可能会使用邮箱重置密码,这时系统会发送一封重置密码的邮件到用户的邮箱当中,点击里面的链接才可进行密码重置,只要用户邮箱密码没有同时泄露,攻击者就无法重置密码。另外,密码在数据库中的存储形式也是不可逆加密后的密文,即使是管理员也无法知道用户的密码。
其次,系统还强制了https方式访问,这样就使传输数据更加安全。
再次,系统实现了基于作粒度的权限管理,对每个用户都分配了对应的角色以及作权限。系统后台的角色有超级管理员,普通管理员,对于每个二级域名的用户自定义Portal也有对应的管理员、开发人员和销售人员等角色。不同的角色有不同的权限,对于敏感**作,还需要输入短信验证码进行验证,这样即使某个人员的密码被人窃取,对系统的危害也可以得到隔离,不会影响整个系统的运营。
二、防XSS
XSS全称Cross Site Scripting,叫做跨站脚本攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。
对于动态输入的内容,系统将所有特殊字符做了转义,再次显示该内容时,所有特殊字符都以其它字符代替,如‘>’显示为‘>’等,这样就使所有客户端脚本注入攻击失效。
系统对于存储用户登录session的cookie设置为HttpOnly,表示这个cookie只有服务端才能访问,客户端脚本是无法访问的。这样用户的浏览器运行了攻击者发送过来的攻击脚本,攻击者也无法获取到用户的登录cookie,防止了攻击者使用用户登录cookie绕过密码验证。
三、防CSRF
CSRF全称Cross-site request forgery,叫做跨站请求伪造。当用户登录一个A网站时,他的A网站登录cookie自动存储在浏览器上,这时如果他在网络上与攻击者聊天,并且攻击者发来一张图片,里面包含了A网站的一个表单请求URL,并预先设置好请求参数,用户点击之后,不知不觉就向A网站发送了这个请求,因为这时用户已经登录A网站,所以这个请求将被执行。
机智云系统通过在每个表单里设置一个隐藏的 CSRF Token来防止 CSRF 攻击,其他参数攻击者都可以预先设置好,但是CSRF Token是每次访问都从服务器动态获取的,攻击者无法伪造,这样就有效防止攻击者进行CSRF攻击。
四、防SQL 注入
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的**作,其主要原因是程序使用用户传入的参数进行SQL语句动态拼接,并且没有细致过滤所有非法输入导致。
机智云系统使用ORM系统进行数据库**作,在程序中并不会动态拼接任何SQL语句,可以有效防止SQL注入攻击。
五、防文件上传攻击
文件上传攻击是指攻击者通过Web应用的文件上传功能,上传恶意执行的脚本,如果系统没有设置好文件路径权限,攻击者将可以通过访问上传的恶意脚本文件,达到执行恶意脚本,进而破坏系统的目的。
机智云系统对可执行脚本目录和静态文件目录做了严格的区分,静态文件目录完全没有执行权限。另外,对于用户上传的文件,系统直接已二进制的方式存储在数据库中,恶意脚本根本没有执行的机会。