Cassandra数据库加固
1. 数据库版本选择上的安全加固
- 进行Cassandra数据库版本选择的时候,尽量选择稳定性、安全性较高的版本,也就是平常所说的优选版本。
- 进行Cassandra数据库版本升级时,综合考虑新版本有哪些优势,同时会带来哪些潜在的问题;版本本身存在哪些业界已知的漏洞。
2. 数据库配置上的安全加固
-
禁止监听所有可用的IP地址,即监听地址包含了0.0.0.0。
1 检查cassandra.yaml文件,listen_address、rpc_listen_address配置项不应设置为0.0.0.0。
2 通过命令查询cassandra的监听是否包括0.0.0.0。# 查询cassandra数据库对应的进程号 ps -ef|grep cassandra # 通过进程号查看监听是否包括了0.0.0.0 netstat -nap |grep 进程号
-
关闭或最小化端口、命令、参数,使用非默认的端口,减少攻击面。
1 检查cassandra.yaml文件,native_transport_port配置项应被注释关闭。
2 检查cassandra.yaml文件,storage_port、native_transport_port_ssl、JMX_PORT端口不应为默认的端口号;ssl_storage_port、native_transport_port、rpc_port已被注释。 -
关闭rpc连接
1 检查cassandra.yaml文件,start_rpc配置项应设置为false。
-
合理划分账号权限
1 检查cassandra.yaml文件,authorizer配置项应设置为CassandraAuthorizer。
-
应使用专用的用户启动cassandra数据库,删除默认用户cassandra。
通过list users 查看所有的用户里面是否包含cassandra用户。
-
应限制数据库客户端的最大连接数
1 检查cassandra.yaml文件,native_transport_max_concurrent_connections配置项应在110%~150%之间或为客户端峰值的连接数量;native_transport_max_concurrent_connections_per_ip(表示每个源IP的并发客户端连接的最大数据量)设置为-1(无限制)。
-
应限制连接的闲置等待时间
1 检查cassandra.yaml文件,native_transport_max_threads(本地传输时处理请求的最大线程数)配置项设置的是否合理。
-
数据库的认证模式,应使用密码认证的方式。
1 检查cassandra.yaml文件,authenticator配置项应设置为PasswordAuthenticator
3. 数据库运行上的安全加固
- 进行数据库安装时,先创建cassandra数据库的专用用户及用户组,禁止使用超级管理员身份如root,启动或运行cassandra数据库。
1 直接通过ps -ef|grep cassandra 查看启动用户是否为低级别权限的用户;
2 进入cassandra安装目录,检查文件属主及属组是否为低级别权限的用户、专用属组; - 通过设置IP白名单(iptables限制),避免将Cassandra数据库暴露给不可信的第三方。
# 查看规则 iptables -L INPUT --line-numbers # 开放/禁止指定的端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT/DROP # 限制指定IP范围能SSH iptables -A INPUT -s 162.19.11.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- 使用安全的加密传输方式,最直接的方式就是使用专用的证书,在cassandra.yaml文件中进行配置。
- 检查cassandra安装目录下的文件、日志文件、数据文件权限是否符合要求,如数据文件的权限为600。
4. 数据库运行平台上的安全加固
- 通过加固Cassandra数据库所在服务器,在一定程度上进行安全防范。
1 通过secureCAT或Nessus工具对服务器进行安全漏洞扫描。
5. 数据库日志上的安全加固
- 合理设置日志大小及定期清理策略。
1 检查logback.xml文件中对日志大小是否进行了设置;
2 检查logback.xml文件权限是否为640;
3 检查是否存在日志清理的脚本或机制。