自从上次服务器中勒索病毒后一直对confluence耿耿于怀。

所有的安全防护都做得很好,但却中了勒索病毒,怎么都想不通,唯一可能的解释就是confluence有漏洞,查看了相关的资料,也说 Confluence 存在权限绕过漏洞 (CVE-2023-22518)。

停服了一段时间后,趁着五一更新到最新版。

1、下载软件

(1)下载 atlassian confluence 8.9.0

https://www.atlassian.com/software/confluence/download-archives

安装指导:

https://confluence.atlassian.com/doc/confluence-installation-and-upgrade-guide-214864161.html

系统要求:

https://confluence.atlassian.com/doc/supported-platforms-207488198.html

(2)下载 TencentKona 11

https://cloud.tencent.com/document/product/1149/38537

(3)下载 MySQL 8.0

https://dev.mysql.com/downloads/repo/yum/

(4)下载 MySQL 连接驱动

https://dev.mysql.com/downloads/connector/j/

https://doc.devpod.cn/conf/confluence-cve-2023-22518-67502083.html


2、安装Java

解压到/opt目录

tar -zxvf TencentKona-11.0.14.b1-jdk_linux-x86_64.tar.gz -C /opt

加到配置文件

vim /etc/profile

export JAVA_HOME=/opt/TencentKona-11.0.14.b1
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib

重新加载配置文件

source /etc/profile

查看Java版本

java -version

3、安装MySQL

yum localinstall mysql80-community-release-el8-9.noarch.rpm

检查数据源

yum repolist enabled | grep "mysql.*-community.*"

禁用CentOS 8自带MySQL模块

yum module disable mysql

安装MySQL ,注意需要添加--nogpgcheck

yum install mysql-community-server --nogpgcheck

设置开机启动,启动MySQL,查看服务

systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld

查看生成的临时密码

grep 'temporary password' /var/log/mysqld.log

修改root密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

修改数据库配置文件

vim /etc/my.cnf

官方的对数据库的要求:https://confluence.atlassian.com/doc/database-setup-for-mysql-128747.html

# Confluence Configure
character-set-server=utf8mb4
collation-server=utf8mb4_bin
default-storage-engine=INNODB
max_allowed_packet=256M
innodb_log_file_size=2GB
transaction-isolation=READ-COMMITTED
binlog_format=row
log_bin_trust_function_creators = 1

log_bin_trust_function_creators = 1 一定要加,不然后来连接数据库会报错

重启 MySQL 服务,使配置生效

systemctl restart mysqld

创建用户和数据库

CREATE USER 'confluenceuser'@'%' IDENTIFIED BY '<password>';
CREATE DATABASE confluence CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
GRANT ALL PRIVILEGES ON confluence.* TO 'confluenceuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
\q

WITH GRANT OPTION的作用可以参考这里:https://blog.csdn.net/chenghuikai/article/details/52219491


4.安装 Confluence

4.1 创建所需目录

mkdir -pv /data/{confluence,confluence-home}

解压数据到confluence目录

tar xvf atlassian-confluence-8.9.0.tar.gz -C /data/confluence/

配置confluence-home

vim /data/confluence/atlassian-confluence-8.9.0/confluence/WEB-INF/classes/confluence-init.properties

增加下面配置 

confluence.home=/data/confluence-home

4.2 激活工具 agent.jar

将下载好的jar包上传到 /opt/目录

/opt/agent.jar

4.3 MySQL驱动

在启动之前,先把MySQL驱动拷贝到安装目录,避免后面还需要再重启一次

tar -zxvf mysql-connector-j-8.3.0.tar.gz
cd mysql-connector-j-8.3.0/
mv mysql-connector-j-8.3.0.jar /data/confluence/atlassian-confluence-8.9.0/confluence/WEB-INF/lib/

4.4 启动 Confluence

JAVA_OPTS="-javaagent:/opt/agent.jar" /data/confluence/atlassian-confluence-8.9.0/bin/start-confluence.sh

查看启动是否成功

netstat -tunlp | grep 8090


ps aux|grep javaagent


ps aux | grep confluence

atlassian-agent 自启动设置

vim /data/confluence/atlassian-confluence-8.9.0/bin/setenv.sh

export JAVA_OPTS="-javaagent:/opt/agent.jar ${JAVA_OPTS}"


 浏览器打开http://ip:8090,开始配置confluence

生成许可证秘钥

java -jar /opt/agent.jar -d -m xxx@qq.com -n liangfu.wang -p conf -o liangfu.wang  -s B2D2-GEK1-SIFY-FL7X
 此处参数分别为:
-d:是否需要 Data Center 许可证 
-m:许可证颁发给的邮箱 
-n:许可证名称,默认为许可证颁发给的邮箱 
-o:许可证颁发给的组织名 
-p:产品名称,Confluence 需要填写 conf 
- 支持的参数 - crowd: Crowd 
- jsm: JIRA Service Management 
- questions: Questions plugin for Confluence 
- crucible: Crucible - capture: Capture plugin for JIRA 
- conf: Confluence - training: Training plugin for JIRA 
- *: 第三方插件密钥,一般类似于:com.foo.bar 
- bitbucket: Bitbucket 
- tc: Team Calendars plugin for Confluence 
- bamboo: Bamboo 
- fisheye: FishEye 
- portfolio: Portfolio plugin for JIRA 
- jc: JIRA Core 
- jsd: JIRA Service Desk 
- jira: JIRA Software(common jira)
-s:服务器 ID,在 Confluence 配置页面上找到

这里需要特别说明的是,Confluence 从8.6开始只支持 Data Center 许可证,所以激活码生成的命令需要加-d

5.其他

5.1 从备份还原

如果导出文件很大,则需要从主目录导入。 将文件复制到/data/confluence-home/restore,然后从下方将其导入。

cp /data/backups/backup-2023_11_03.zip /data/confluence-home/restore

5.2 自定义备份路径

vim /data/confluence-home/confluence.cfg.xml


<property name="admin.ui.allow.daily.backup.custom.location">true</property>

重启confluence

sh /data/confluence/atlassian-confluence-8.9.0/bin/stop-confluence.sh
sh /data/confluence/atlassian-confluence-8.9.0/bin/start-confluence.sh

5.3 定时任务

Confluence 配置cron表达式:

0 0 3 1,3,6,9,12,15,18,21,24,27,29 * ? 

在线Cron表达式生成器:https://cron.qqe2.com/

linux机器上配置crontab定时任务

0 5 * * * /bin/sh /opt/cos_migrate_tool_v5-1.4.12/start_migrate.sh

5.4 PDF导出语言支持

msyh.ttc 

5.5 JVM内存优化

默认安装时JVM内存设置为1024M,当同时访问用户数较多时,服务卡死,日志报JVM OutOfMemoryError

vim /data/confluence/atlassian-confluence-7.19.16/bin/setenv.sh


# Set the Java heap size
CATALINA_OPTS="-Xms2048m -Xmx2048m ${CATALINA_OPTS}"

说明:
-Xms:Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定
-Xmx:Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值

重启confluence

sh /data/confluence/atlassian-confluence-8.9.0/bin/stop-confluence.sh
sh /data/confluence/atlassian-confluence-8.9.0/bin/start-confluence.sh


参考链接:

https://mp.weixin.qq.com/s/qcHe781i-sqkdgRC6FECtg

https://mp.weixin.qq.com/s/UuL8wndzhpH0HiaJIFlgzQ?poc_token=HG6kN2ajWxmYXv5LYR3We9pyaINyde6anQNTahOi

https://doc.devpod.cn/conf/confluence-cve-2023-22518-67502083.html