Zookeeper安全基线

检查项


端口保护

预防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     //多少小时清理一次

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注