检查项
端口保护
预防DDOS攻击
禁用管理控制台
授权访问
日志审计
事务日志与快照日志分离
日志清理
详细内容
端口保护
规范
【强制】修改zookeeper默认监听端口2181为不易猜测的端口。
描述
一般攻击者会根据默认端口来猜测中间件类型,这降低了攻击者对服务器的攻击难度。
加固建议
修改zookeeper的配置文件,将端口号更改为不易猜测的端口,如下所示:
clientPort=3285
预防DOS攻击
规范
【建议】建议限制zookeeper客户端的最大连接数。
描述
默认值是10,连接到同一个服务器上的最大连接数,根据IP来区分。为0时,表示没有任何限制。建议设置该值,防止DoS攻击。
加固建议
修改zookeeper的配置文件,设置客户端最大连接数,如下所示:
maxClientCnxns=60
禁用管理控制台
规范
【建议】如不需要使用zookeeper的管理控制台,建议禁用。
描述
zookeeper的管理控制台是由jetty启动的,默认为http,存在一定的信息泄露及安全隐患。
加固建议
在bin/zkServer.sh文件中,将如下
start) echo -n "Starting zookeeper ... " if [ -f "$ZOOPIDFILE" ]; then if kill -0 `cat "$ZOOPIDFILE"` > /dev/null 2>&1; then echo $command already running as process `cat "$ZOOPIDFILE"`. exit 1 fi fi nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \ "-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
修改为
start) echo -n "Starting zookeeper ... " if [ -f "$ZOOPIDFILE" ]; then if kill -0 `cat "$ZOOPIDFILE"` > /dev/null 2>&1; then echo $command already running as process `cat "$ZOOPIDFILE"`. exit 1 fi fi nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \ "-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Dzookeeper.admin.enableServer=false" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
即在nohup这一行,添加
"-Dzookeeper.admin.enableServer=false"
授权访问
规范
【强制】添加对zookeeper的访问控制权限。
描述
zookeeper在默认情况下,是允许任意客户端未经授权访问,存在很大的安全隐患。
加固建议
具体授权访问,可参照安全管理平台知识库中《zookeeper授权方式设置》一文。
日志审计
规范
【强制】添加zookeeper日志审计。
描述
开启日志功能,有利于开发人员或安全人员进行朔源取证,安全审计。
事务日志与快照日志分离
规范
【建议】在部署时,建议zookeeper的事务日志与快照日志分离。
描述
建议将事务日志(dataLogDir)与快照日志(dataLog)单独配置,因为当zookeeper集群进行频繁的数据读写操作时,会产生大量的事务日志信息,将两类日志分开存储会提高系统性能,而且,可以允许将两类日志存在在不同的存储介质上,减少磁盘压力。
加固建议
在配置文件中,增加日志配置,如下所示:
dataDir=/home/sct/tool/zookeeper-cluster/zookeeper-1/data dataLogDir=/home/sct/tool/zookeeper-cluster/zookeeper-1/dataLog
日志清理
规范
【建议】建议设置对zookeeper日志的定期清理功能。
描述
客户端在与zookeeper交互过程中会产生非常多的日志,而且zookeeper也会将内存中的数据作为snapshot保存下来,这些数据是不会被自动删除的,这样磁盘中这样的数据就会越来越多,造成磁盘容量被大量占用。
加固建议
在配置文件中清理日志策略,如下所示:
autopurge.snapRetainCount=10 //保留多少个快照 autopurge.purgeInterval=24 //多少小时清理一次