这篇文章转自51cto。虽然讲的是运维人员的事情,但作为开发人员,了解这方面的情况,以利于提高软件质量。原文如下。
运维人员应该时刻谨记的十条安全法则
网站安全问题可以说是现在最引人关注的问题。本文介绍了十条措施维护网站安全最低限度需要做到的事情,主要是给大家提供思路,为广大运维人员提供参考。这十条措施涉及到用户身份验证、数据加密传输、子网划分、灾难备份等多个方面的内容。 网站前端防护
措施1:网站用户的身份认证
一般可以采用用户名+密码验证,确认用户登录身份,并根据数据库中预设的权限,向用户展示相应的界面。
对于重要的网站应用,需要根据PKI机制,验证用户提供的证书,从而对用户身份认证(服务器对客户端认证),并确保交易的不可抵赖性。证书的提供可以采用两种方式:文件证书或是USB设备存储的证书。文件证书保存在用户磁盘和文件系统上,有一定的安全风险,但是可以免费;USB证书安全性高,但是一般需要向用户收费。
措施2:网站数据的加密传输
对于使用Web浏览器的网上系统应用,采用SSL+数字证书结合的方式(即HTTPS协议),保证通信数据的加密传输,同时也保证了用户端对服务器端的认证,避免用户被冒充合法网站的“钓鱼网站”欺骗,从而泄露机密信息(用户名和密码等),造成不可挽回的经济损失。
措施3:用户账号使用行为的日志记录及其审计
系统服务器侧应根据账号,对用户的使用行为进行详细的日志记录和审计,通过上述因素的日志记录,进行阶段性的审计(时间间隔应该比较小),从而做到发现用户账号的盗用、恶意使用等问题,尽早进行处理。
措施4:恶意用户流量的检测、过滤及阻断
系统服务器侧应部署IDS入侵检测系统、IPS入侵防护系统、防火墙等设备,或者部署目前高效、流行的UTM(统一威胁管理)设备,对恶意用户采用的各种攻击手段进行检测和防护,重点过滤恶意流量、突发流量等。
措施5:对非正常应用请求的过滤和处理
系统的服务器端,尤其是数据库服务器端,应该通过配置和增加对用户非常长应用请求的过滤和处理模块,以避免由于数据库的自身漏洞未及时打上补丁而遭受目前流行的SQL注入攻击等。
网站服务器侧
措施6:合理的子网划分及流量分割
系统服务器侧包括大量的服务器类型,包括数据库服务器、Web服务器、FTP服务器、邮件服务器等,为了避免由于恶意流量造成的某种服务器崩溃,而引起的攻击后果扩散,并最终导致其他服务器也发生“雪崩效应”,则需要通过子网隔离(比如VLAN划分)、DMZ区域的设定等方式来将这些服务器放置在不同的安全域当中,做到流量和数据的安全隔离,从而将服务器端在遭受攻击后对整个业务系统及其他内网资源和数据造成的影响尽量控制在最低的范围内。
措施7:负载均衡及负载保护机制
系统面临着巨大的服务量,服务器端的设备基本上都需要有多台服务器进行业务分担,这样才能提高性能,避免处理瓶颈的出现,因此,需要采用合理的负载均衡和负载保护机制:
负载保护机制需要实时地对每台服务器的CPU资源、内存资源等进行评估,如果一旦超过设定的阈值(80%或者以上),将马上进行过载保护,从而保证服务器自身的安全
措施8:灾难备份及恢复
任何系统都不能说100%的安全,都需要考虑在遭受攻击或者是经受自然灾害后的备份恢复工作,需要着重考虑如下几点:
1. 选择合适的备份策略,做好提前备份,包括全备份、差分备份、增量备份等等
2. 选择合适的备份介质,包括磁带、光盘、RAID磁盘阵列等
3. 选择合适的备份地点,包括本地备份、远程备份等等
4. 选择合适的备份技术,包括NAS、SAN、DAS等等
5. 作好备份的后期维护和安全审计跟踪
措施9:管理规范化
系统功能复杂,业务数据敏感,保密级别比较高,并且对不同管理人员的权限、角色要求都不尽相同,为了保证安全管理,避免内部管理中出现安全问题,建议作如下要求:
1. 严格划分管理人员的角色及其对应的权限,避免一权独揽,引起安全隐患;
2. 作好服务器机房的物理条件管理,避免电子泄露、避免由于静电等引起的故障;
3. 应作好服务器管理员的帐号/口令管理,要求使用强口令,避免内部人员盗用;
4. 作好服务器的端口最小化管理,避免内部人员扫描得出服务器的不必要的开放端口及其漏洞,实行内部攻击;
5. 作好服务器系统软件、应用软件的日志管理和补丁管理工作,便于审计和避免由于安全漏洞而遭受到内部人员的攻击;
6. 根据业务和数据的机密等级需求,严格划分服务器的安全域,避免信息泄露。
措施10:网站漏洞自我挖掘及防护
采用漏洞扫描和挖掘设备,对内网各服务器进行阶段性的扫描,并根据扫描所得的风险和漏洞进行及时地修补,以实现该漏洞为黑客使用之前进行自行修复的目的。
这方面的工具服务很多,比如五大著名的免费SQL注入漏洞扫描工具,十大Web服务器漏洞扫描程序等等。
上面这十条,并不是做了就能够保证网站安全,而是要“做好”,必须做好。