Linux 系统安全(十):NoSQL 数据库与公有云安全
保障 Linux 应用安全是构建纵深防御体系不可或缺的重要部分,而提到与网站相关的应用安全保障,就不得不提数据库和公有云安全,本文聚焦在缓存服务器、Key-Value 数据库和 MySQL 这一关系型数据库的安全设置。
Memcached 安全
Memcached 是流行的 NoSQL 缓存软件,广泛用于网站系统中,作为后端数据库的缓存和存储 Session 会话信息等。在实践中,我们一般从以下几个方面来保障 Memcached 的安全:
将 Memcached 部署在仅有内网 IP 的服务器上,避免对公网开放。
为 Memcached 服务器配置精细化的防火墙 iptables 设置,仅允许前端 Web 服务器和应用服务器来调用,避免对整个局域网网段开放。
服务降权。专门设置一个独立的普通用户,例如 memcached 来启动 Memcached。
Redis 安全
Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存也可持久化的 Key-Value 数据库,并提供多种语言的 API。它被广泛用于缓存、消息中间件,也经常作为持久化的数据库使用。
根据知名安全公司 Incapsula 研究表明,75% 在公网上开放的 Redis 服务器都受到了 RedisWannaMine 攻击。为了预防类似的攻击,在实践中,我们一般从以下几个方面来保障 Redis 的安全:
将 Redis 部署在仅有内网 IP 的服务器上,避免对公网开放。
为 Redis 服务器配置精细化的防火墙 iptables 设置,仅允许前端 Web 服务器和应用服务器来调用,避免对整个局域网网段开放。
服务降权。专门设置一个独立的普通用户,例如 redis 来启动 Redis。
禁用危险命令。在配置文件中加入如下的内容以禁用危险命令:
启用 Redis auth。修改 redis.conf 配置文件增加如下内容:
保存后重启 Redis 即可。
MySQL 安全
数据库服务器上存储了应用程序记录的核心数据,保障数据库安全,我们一般可以从以下方面进行:
将 MySQL 部署在仅有内网 IP 的服务器上,避免对公网开放。这将极大的缩减攻击面。
为 MySQL 服务器配置精细化的防火墙 iptables 设置,仅允许前端 Web 服务器和应用服务器来调用,避免对整个局域网网段开放。 CVE-2012-2122 中指出,在某些特定版本 MySQL 的 sql/password.c 中存在漏洞,在某些特定运行环境中会导致远程攻击者可以通过多次重复尝试同一个错误密码而有概率性的绕过认证机制。如果没有网络层的防护,这将是造成非常严重的信息泄露;而通过精细化的访问控制则可以有效的解决这个问题。
服务降权。专门设置一个独立的普通用户,例如使用 mysql 这一用户来启动数据库进程。
删除安装后的测试数据库。在 MySQL 中,数据库初始安装完成后,会生成一个 test 库。直接删除即可。
检查数据库的密码。通过如下的语句,我们可以检查出没有配置密码的帐号:
数据库授权。
1)采用权限最小化原则,对应用程序使用分级授权。对于只需要读的帐号,仅仅授予“SELECT”权限。
2)对数据库来说,我们希望客户端过来的连接都是安全的,因此,就很有必要在创建用户的时候同时指定可以进行连接的服务器 IP,只有符合授权的 IP 才可以进行数据库的访问。数据库授权时,精确到主机,不允许在 grant 命令中对所有主机授权。
通过定期备份来避免数据库误操作或者黑客入侵导致的数据丢失。常用的备份工具包括 Oracle MySQL mysqldump 和 Percona XtraBackup for MySQL 等。
使用公有云上的 WAF 服务
随着越来越多的企业把业务迁移到公有云上,这些云上业务对 WAF 的需求也越来越大。因此,公有云服务商也逐步推出了云 WAF 的服务。如图 8-7 所示为国内某公有云厂商提供的针对中小规模网站的云 WAF 解决方案所具备的规格能力:
云 WAF 的优点有:
部署简单,维护成本低:这也是云 WAF 最有价值和受用户喜爱的一点,无需安装任何软件或者部署任何硬件设备,只需修改 DNS 即可将网站部署到云 WAF 的防护范围之内。
用户无需更新:云 WAF 的防护规则都处于云端,新漏洞爆发时,由云端负责规则的更新和维护,用户无需担心因为疏忽导致受到新型的漏洞攻击。
可充当 CDN:云 WAF 在提供防护功能的同时,还同时具有 CDN 的功能,在进行防护的同时还可以提高网站访问的速率,CDN 通过跨运营商的多线智能解析调度将静态资源动态负载到全国的云节点,用户访问某个资源时会被引导至最近的云端节点从而提高访问速度。
基于以上的分析,我们建议,对于已经使用了公有云部署服务的企业来说,可以考虑使用云 WAF 作为应用防护方案。