zookeeper安全加固手冊

1、端口保護

規(guī)范1.1:【強制】修改zookeeper默認監(jiān)聽端口2181為不易猜測的端口。

說明
一般攻擊者會根據默認端口來猜測中間件類型,這降低了攻擊者對服務器的攻擊難度。
實時指導

修改zookeeper的配置文件,將端口號更改為不易猜測的端口,如下所示:

clientPort=3285

2、預防DOS攻擊

規(guī)范2.1:【建議】建議限制zookeeper客戶端的最大連接數。

說明
默認值是10,連接到同一個服務器上的最大連接數,根據IP來區(qū)分。為0時,表示沒有任何限制。建議設置該值,防止DoS攻擊。
實時指導

修改zookeeper的配置文件,設置客戶端最大連接數,如下所示:

maxClientCnxns=60

3、禁用管理控制臺

規(guī)范3.1:【建議】如不需要使用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"

4、授權訪問

規(guī)范4.1:【強制】添加對zookeeper的訪問控制權限。

說明
zookeeper在默認情況下,是允許任意客戶端未經授權訪問,存在很大的安全隱患。
實施指導
具體授權訪問,可參照安全管理平臺知識庫中《zookeeper授權方式設置》一文。

5、日志審計

規(guī)范5.1:【強制】添加zookeeper日志審計。

說明
開啟日志功能,有利于開發(fā)人員或安全人員進行朔源取證,安全審計。

6、事務日志與快照日志分離

規(guī)范6.1:【建議】在部署時,建議zookeeper的事務日志與快照日志分離。

說明
建議將事務日志(dataLogDir)與快照日志(dataLog)單獨配置,因為當zookeeper集群進行頻繁的數據讀寫操作時,會產生大量的事務日志信息,將兩類日志分開存儲會提高系統性能,而且,可以允許將兩類日志存在在不同的存儲介質上,減少磁盤壓力。
實施指導

在配置文件中,增加日志配置,如下所示:

dataDir=/home/sct/tool/zookeeper-cluster/zookeeper-1/data
dataLogDir=/home/sct/tool/zookeeper-cluster/zookeeper-1/dataLog

7、日志清理

規(guī)范7.1:【建議】建議設置對zookeeper日志的定期清理功能。

說明
客戶端在與zookeeper交互過程中會產生非常多的日志,而且zookeeper也會將內存中的數據作為snapshot保存下來,這些數據是不會被自動刪除的,這樣磁盤中這樣的數據就會越來越多,造成磁盤容量被大量占用。
實施指導

在配置文件中清理日志策略,如下所示:

autopurge.snapRetainCount=10  //保留多少個快照
autopurge.purgeInterval=24     //多少小時清理一次
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容