基本原则
- 最小的权限+最小的服务=最大的安全。保持简单,程序只实现指定的功能。坚持最小权限,把可能造成的危害降到最低。
- 对操作者(IP)的所有操作默认不信任,采用白名单机制,只放行已知的操作。
- 永远不要信任用户的输入。对所有的输入进行前台和后台两次检查。
- 操作之前先备份。
- 密码复杂度:长度至少8位,并包括数字、小写字母、大写字母和特殊符号4类中至少2类
安全范围
- 操作系统安全加固
- Web 程序安全
- 数据库安全
- 接口安全
- 其他系统服务安全
操作系统安全加固
- 禁用不使用的用户
- 关闭不必要的端口和服务
- 禁止root直接远程登录
- 防止一般网络攻击: 禁ping等
- 其他。
CentosOS 加固的教程不少。可参考:
- HowTos/OS Protection - CentOS Wiki
- CentOS 6 服务器简单安全配置 - 网站架构技术总结 - 51CTO技术博客
- 让 Linux 服务器更加安全的经验总结 - Kyle 笔记
- Java堂 » CentOS安装之后的系统安全配置
- CentOS Linux服务器安全设置 | 系统运维
Web 程序安全
常见名词解释
浏览器安全
同源策略(Same Origin Policy)防止了跨域读写某些资源。
浏览器提供了浏览器沙箱,使进程在一个相对独立的空间运行,能在一定程度上保护浏览器安全。跨站脚本攻击 XSS
跨站脚本攻击主要是注入到网站内容中,授权用户访问内容时执行一段恶意代码,从而获取用户的私密信息或者进行破坏。通常叫做XSS攻击,是针对动态网站的攻击。跨站点请求伪造 CSRF
CSRF,指的是伪造出一个请求,诱使授权用户访问,以授权用户的身份去执行请求,从而达到对授权用户信息的读取、攻击等。点击劫持
Click jacking,是指将恶意代码隐藏在看似无害的内容后者按钮之下,诱导用户访问的一种手段。
常见攻击类型
- SQL 注入
- 跨站请求伪造攻击(CSRF)
- 跨站脚本攻击(XSS)
- 远程任意命令执行
- 拒绝服务攻击(DoS)
- Cookie劫持
检查项
- 输入的数据没有进行有效的控制和验证
- 防恶意注册: 可否用自动填表工具自动注册用户
- 有无缺省的超级用户
- 密码错误次数有无限制
- cookie 中或 隐藏变量中是否含有用户名\密码\userid 等关键信息
- 通过 http 抓包的获取 http 请求信息包经改装后重现发送
- 文件上传风险
- 访问控制策略是否得当
- 其他
数据库安全
- 用户:最小权限
- 数据库中存在的密码应经过加密
- 其他
接口安全
防范措施
- 审计
- 使用漏洞扫描工具、入侵检测系统等进行系统渗透测试。
- 防火墙配置
- Web 程序防火墙(WAF): modSecurity
日常维护项目
- 定期做日志安全检查、审计
- 及时给操作系统打补丁
- 其他
参考资料
通用 CentOS 6 服务器安全配置指南 - Sean’s Notes - SegmentFault
关闭不必要的端口和服务-CentOS | 码农日记