二、系统安全

二、系统 安全

系统安全管理即保证信息处理和传输系统安全方面的管理,避免因外部干扰和破坏导致服务中断或系统崩溃而造成数据信息丢失或泄露。它侧重于保证系统平台可靠正常地运行,实现业务连续性。

干部网络教育培训平台提供的网络服务主要有Web服务、文件服务、流媒体服务和数据库服务等几种。干部学员直接访问的是Web服务,它基于HTTP/HTTPS协 议,通 过Internet Explorer、Safari、Chrome、Firefox、Edge等常见浏览器进行调用,也可以通过平台提供的移动APP进行调用。基于FTP协议的文件服务和基于RTP/RTSP、MMS、HLS等协议的流媒体服务,一般是嵌入在浏览网页的链接中,由干部学员通过在线课程学习间接引用。数据库服务则是部署在服务器区内网中,与外部网络进行隔离,由管理员进行监控和管理,外部人员不能直接访问。

干部网络教育培训平台的系统安全管理大致包含操作系统、服务系统和应用系统三个层面。操作系统是管理和控制计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件,是用户与计算机之间的接口。目前主流的四款服务器操作系统分别是Windows、Linux、UNIX和Net Ware。操作系统是信息系统的基石,为各应用服务提供系统支持,起到承上启下的作用。因此,操作系统的安全在整个信息系统的安全中起到至关重要的作用,没有操作系统的安全,信息系统的安全将犹如建在沙丘上的城堡一样没有牢固的根基。

操作系统安全包括身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范和资源控制等诸多方面,首要问题是对系统用户的安全管理,确保正常情况下登录用户的合法性,然后才能以此为基础构建整个操作系统安全体系;其次是建立健全有效的安全需求和安全机制,比如:要求密码复杂度、设定密码使用期限、配置账户锁定策略、完善操作日志审计、使用文件加密系统、分配文件访问权限和证书安全管理等;再者是对操作系统进行必要加固,禁用不必要的服务和端口,安装防病毒软件并及时更新特征库,安装最新的操作系统安全补丁等。

服务系统的安全管理要点是隔离部署和确保运行版本的稳定性,即将Web服务、文件服务、流媒体服务和数据库服务分别部署在不同的服务器上以避免混合使用,并升级与保持最新的软件发行版本和安全更新。常用的Web服务软件有IIS、Nginx和Apache等,常用的FTP服务软件有IIS FTP、FileZilla Server、Server-U、PureFTPd和vsFTPd等,常用的流媒体服务软件有Windows Media Services、Helix Server、Darwin Streaming Server、Red5和FFmpeg等,常用的数据库服务软件有Oracle、MySQL、Microsoft SQL Server、PostgreSQL和MongoDB等。在这些应用服务软件中,有开源和闭源、免费和收费之分,还跟操作系统和开发技术息息相关。一般来说,新版本软件的稳定性和安全性更高,执行效率和并发性能也更好。当然,发行版本的变更在增加新功能的同时,也可能会移除一些过时的功能模块,这就需要制定具体可行的升级方案,特别注意不要进行跨版本升级。

应用系统的安全管理涉及系统限制、资源限制、功能性安全和数据域安全等方面的内容。系统限制指特定对象、特定时间、特定范围的访问限制策略,例如只允许特定IP地址在某个时段进行登录访问。资源限制是指特定对象对特定资源的访问限制策略,例如干部学员只有登录后方可学习课程或只允许管理教师操作管理后台等。功能性安全是指程序流产生的影响,例如用户在操作业务记录时是否需要审核、上传附件不能超过指定大小等。数据域安全包含记录行和字段列两个层次。记录行数据域安全是指允许用户可以访问哪些业务记录,例如查询某单位下属的学员信息,而字段列数据域安全是指允许用户可以访问哪些内容,譬如禁止访问学员的登录密码信息等。

从建设情况来看,全国范围内没有建设统一的网络培训平台,各省市自治区的网络平台多数是以服务购买方式上线运行,只有少数地方拥有自己的技术开发和运维团队。应用系统的安全问题多发,多数是由不良的软件架构和不安全的程式设计和编码产生的。由于各软件公司基本实行封闭源代码策略,开发周期短,开发人员的水平不一、流动性强且安全意识淡薄,一般只能在计划时间内完成特定功能开发的要求,根本顾不上安全编码。在应用系统验收时,运营者也仅是对功能模块进行初步验收,未对源代码的安全性进行全面测试,这也就导致了一个不安全的应用系统运行在干部网络教育培训平台服务器上,管理着干部学员们的真实信息和业务数据,这就好比黑客安装了一个木马在服务器上。作为干部网络教育培训平台的运营者,要知晓平台功能不是越多越好、越多越强,在前期需求分析阶段,要分析、识别并去除掉那些不安全的功能需求,以减少系统平台的安全隐患;在系统开发和测试阶段,要对源代码进行规范审计和安全测试;在正式上线前,要组织相关的安全专家对应用系统进行安全验收。

下面列举一个简单的应用场景。登录模块是干部网络教育培训平台中必不可少的一个功能模块,负责验证、生成和存储干部学员的网络身份信息,并对在线操作进行权限控制。一般来说,登录模块的功能和表单都比较简单,大致包含账号、密码、记住密码、忘记密码和登录等内容项。

当用户点击登录按钮后,登录模块进行以下逻辑检查:

(1)账号是否为空。若账号为空,则提示账号不能为空并返回登录;否则继续登录。

(2)密码是否为空。若密码为空,则提示密码不能为空并返回登录;否则继续登录。

(3)从数据库中查找指定账号的学员记录。若记录为空,则提示账号信息不存在并返回登录;否则继续登录。

(4)将登录密码与学员记录的密码字段进行比较。若两者不一致,则提示登录密码错误并返回登录;否则继续登录。

(5)账号和密码验证通过,缓存用户身份信息存入本地浏览器Cookie中并提示登录成功。

至此,用户登录的基本需求就得以快速地、轻松地实现了。在生产环境中,登录模块作为系统安全的重要控制入口,除了关注交互界面和用户体验外,往往还需要考虑更多细节。比如:干部网络教育培训平台一般不对外开放注册功能,学员账号是在管理后台批量生成的,这就意味着它们是有规律并呈连续性的,因此在登录检查的第(3)项中应该修改账号不存在的信息提示。另外,很多学员图省事,习惯使用类似123456等非常简单的登录密码,恶意用户就很容易猜解并伪造登录,这给系统安全带来了严重威胁。平台依靠Cookie辨别用户身份。Cookie是存储在学员用户本地终端上一段不超过4 KB的文本数据,通过相关对称算法可以获得系统平台加密数据的原文信息。若在Cookie中储存用户名和密码等敏感信息,仍然会产生极大安全风险。此外,不法分子还通过机器人提交网络请求来验证账号和密码信息,这时平台就要考虑加入防SQL注入、随机验证码和登录失败次数限制等功能。

在实现安全登录时,有必要开发和完善部分功能设计和安全检查,例如:HTTPS安全访问、密码加密存储、防止SQL注入、多因子认证、登录熔断机制、登录位置检测、Token安全存储、实现单点登录等。

1)使用HTTPS协议

HTTPS是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议。SSL安全连接保证用户和服务器之间数据的安全性和完整性,对数据进行加密以防止数据在传输过程中被泄漏、劫持、监听以及篡改。

2)密码加密存储

数据威胁存在应用程序、数据库、操作系统、机房场地、管理人员等多个层面,若想做到百分之百的安全非常困难。如果使用明文存储密码,一旦数据泄露,那么所有学员用户的登录密码就毫无保留地暴露无遗,黑客也就轻易冒用干部学员的网络账号。如果登录密码是加密存储的,那么即便被拖库,黑客也难以获取学员用户的明文信息,其重要程度可想而知。另外,密码加密不应使用对称加密算法,因为一旦密钥泄露,学员用户的登录密码也就间接泄露了。密码加密存储的比较好的做法是使用哈希算法加密,并使用“盐”来提高安全性。常用的哈希加密算法,如:SHA1、SHA256、SHA384、SHA512等,只能单向从明文生成一个对应的哈希值,不能反过来根据哈希值得到对应的明文,可以提高密码存储的安全性。当然,还是存在黑客利用彩虹表破解密码的风险,此时便需要系统平台进行加“盐”操作。加“盐”是把学员用户的明文密码和一个随机的字符串拼接在一起,再对新生成后的密码信息进行哈希算法加密。由于每个密码里都添加了随机的“盐”,即便甲、乙两个学员用户使用简单的相同的登录密码,数据库中存储的密文信息将是唯一的,并且想要猜解出原始密码也是非常困难的。系统平台采用密码加密存储后,干部学员的密码找回功能也势必要调整为密码重置功能。

3)防止SQL注入

SQL注入是指系统平台应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在Web应用程序中事先定义好的查询语句结尾添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。防止SQL注入的有效方法是严格限制账号和密码的字符输入长度,校验其数据格式是否合法,对特殊字符进行转义处理或编码转换,使用预编译或参数化查询方式以避免SQL拼接,以及使用相关工具进行安全检测等。

4)多因子认证

干部网络教育培训平台最普遍的身份认证方式是使用静态密码,即通过账号和密码信息来登录系统并识别身份。为保证安全性,系统平台会对静态密码做一些要求,譬如:密码复杂度为大写字母、小写字母、数字、特殊字符等至少3种以上的组合,密码长度不得低于8位,最长180天后要更换密码,修改密码时不能与近期使用过的5个密码相同,等等。为提升学员账号的安全性,系统平台可以加入多因子认证方式。

多因子认证(multi-factor authentication,缩写为MFA),是一种计算机访问控制的方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源。例如,银行有时要求用户输入PIN码,插入银行卡,再经指纹比对,通过这三种认证方式,才能获得授权。当然,在干部网络教育培训平台中采用指纹比对、人脸识别等生物特征技术验证身份是不现实的。而相对成本较低、操作简便、安全省心的可行方案是静态密码结合动态密码的认证方式。动态密码是根据一定的算法生成的随机字符组合,通常为6位数字。主流的动态密码实现方式有短信密码、硬件令牌、手机令牌等。短信密码通常也叫短信验证码,是由认证服务生成6位随机动态密码,并以短信的方式发送到用户的手机上,用户使用此动态验证码进行身份认证。硬件令牌是基于时间同步的硬件令牌,它每30到60秒间变换一次动态口令,无需与服务器通信。手机令牌同硬件令牌类似,只是使用手机APP来生成和显示动态密码,节约了硬件成本。

5)登录熔断机制

多因子认证虽可以提高系统平台的安全性,却不能有效阻止自动化程序攻击。网络攻击中一种最常用的手段就是暴力猜解,简单来说就是使用程序反复尝试不同的密码来试图登录某个账户,直到成功为止。这种破解用户密码的方式,一方面增加了学员用户信息泄露的风险,另一方面也由于系统需要不断地查询数据库进行密码验证而消耗系统平台资源,更为严重的会导致服务中断和平台崩溃。

为防范暴力破解,干部网络教育培训平台还应设加入登录熔断机制。与股指熔断机制类似,系统平台在当学员用户的登录失败次数达到一定限制后即中止操作并锁定账号直至某个时间。较理想的设计是,登录失败超过2次时,登录模块弹出随机验证码或拼接识别图来验证是否为学员本人,而不是某种自动化程序;当登录失败超过5次时,登录模块锁定学员账号两小时;当累计登录失败次数超过10次时,登录模块便冻结学员账号并阻止当前网络IP的登录请求,之后必须找管理员进行手动解除账号锁定。

6)登录位置检测

根据网络登录请求中的客户端IP地址,通过网络接口或查询系统可以获得干部学员所在的城市区域和运营商信息,经过与历史登录数据的比对,系统平台可以判断当前学员的登录位置是否变化。当检测到登录位置异常时,系统平台便要求进行二次的动态密码认证,这样可以大大提升用户账号的安全性。

7)Token安全存储

用户登录成功后的身份识别信息会缓存在客户端浏览器的Cookie中。Cookie中是明文保存的,一般不建议保存登录账号和密码等敏感信息。攻击者通过伪造Cookie则可以伪造特定用户身份,通过简单的数据篡改会发生横向越权现象,如A用户能访问B用户的资源。因此,系统平台在保存登录数据时,既要保证用户身份的有效识别,又要保证不法分子拿到的信息不被直接认可,并在实现记住密码等功能需求时,还要考虑过期时间和自动失效问题。一个比较好的做法是存储用户登录历史记录的Token标识。系统平台记录用户的登录时间、过期时间、IP地址、物理位置等信息,通过Cookie中存储的唯一Token进行识别,既不会暴露账号信息,又可以解决服务器集群中Session不共享的问题,同时也能防止重复登录问题。

8)单点登录

随着干部学员规模和访问量的不断增长,干部网络教育培训平台可能需要将多个子系统独立出来,比如专题培训系统、考试系统、统计报表系统等等,此时用户就可能因多次登录而困扰。另外一点,Cookie存储可以解决Session不能共享的问题,但也存在不能跨域的问题。这就意味着,由于域名不同,用户向系统A登录后,系统A返回给浏览器的Cookie,用户再请求系统B的时候不会将系统A的Cookie带过去。要解决上面两个问题,最有效的办法是实现单点登录。

单点登录(single sign-on,缩写为SSO),是一种控制多个相关但彼此独立的系统的访问权限,拥有这一权限的用户可以使用单一的ID和密码访问某个或多个系统从而避免使用不同的用户名或密码,或者通过某种配置无缝地登录每个系统。简单来说就是:在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

单点登录可以保障各业务系统的用户资源的安全,它为开发人员提供了一个通用的身份验证框架。对于用户来说,可以不必牢记多套账号和密码信息。对于管理员来说,可以减轻管理账号的工作负担。对于开发人员来说,可以不需要为身份验证操心,能更加专注于业务系统的功能设计。

综合来看,系统平台没有百分之百的绝对安全,只能做到百分之百的防御。系统平台的安全机制需要紧密结合硬件设备和软件策略进行统一的、有效的管理和控制,它是一个反复测试、不断优化和提升的过程。首先,网络接入的访问安全要做到足够小的隔离,保证权限最小化,保证访问有记录。其次,实施风险评估与等级保护,做好系统监测和应急机制,发现安全隐患及时处理修复。最后,对于数据安全,要做到加密存储和容灾备份。