CentOS 上 LibreOffice 的安全设置指南
一 系统与账户安全基线
- 保持系统与办公套件更新:执行 yum update 或 dnf update,及时修补漏洞(如历史上影响宏签名的 CVE-2021-25635,修复版本为 LibreOffice 7.0.5/7.1.1 及以上)。
- 启用并维持 SELinux 为 Enforcing:用 sestatus 检查;若需排错可短时 setenforce 0,确认后务必 setenforce 1 恢复。
- 使用 firewalld 收敛暴露面:仅开放必要端口与服务,定期审计规则。
- 强化登录安全:禁用不必要的 root 远程登录、采用 密钥认证、限制可登录账户。
- 保护关键账户与口令文件:锁定无用或共享账号;对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 设置不可变属性 chattr +i(变更前务必备份与评估)。
二 LibreOffice 应用层安全配置
- 宏安全:在 工具 → 选项 → LibreOffice → 安全 → 宏安全 选择“高”或“非常高”,必要时“禁用所有宏”;仅对可信来源启用宏,避免依赖“可信列表”。
- 文档加密与权限控制:
- 对 ODT/ODS/ODP 等文档设置“打开密码”与“权限/所有者密码”(限制编辑、只读、格式修改等)。
- 导出 PDF 时可同时设置“用户/打开密码”与“所有者/权限密码”,精细控制是否允许 打印、编辑、复制内容、注释 等。
- 文件级权限与共享:对文档目录与用户主目录设置最小权限(如 750/640),必要时用 ACL 精细化授权,避免共享编辑导致的信息泄露。
三 服务端或无头转换场景的安全要点(unoconv / headless)
- 最小权限运行:以 专用低权限系统用户 运行 LibreOffice headless/unoconv,避免使用 root。
- SELinux 与端口:
- 诊断拒绝事件:ausearch -m avc -ts recent 或 tail -f /var/log/messages | grep -i selinux;用 sealert -a /var/log/audit/audit.log 分析。
- 策略方式一(推荐最小变更):按需开启布尔值,例如 setsebool -P httpd_can_network_connect on(允许连接转换服务端口)、必要时 httpd_execmem on、httpd_read_user_content on。
- 策略方式二(严格最小权限):用 audit2allow 生成并加载模块,仅放行所需的 TCP 端口(如 2002)、文件读写与执行权限。
- 端口上下文:必要时执行 semanage port -a -t http_port_t -p tcp 2002 将端口纳入受控域。
- 临时排错仅作验证:短时 setenforce 0 确认问题是否 SELinux 引起,验证后立即恢复 Enforcing。
四 快速检查清单
| 检查项 |
操作要点 |
关键命令或路径 |
| 版本与更新 |
升级到含漏洞修复的版本 |
yum/dnf update;历史修复版本:7.0.5/7.1.1+ |
| 宏安全 |
高/非常高或禁用宏 |
工具 → 选项 → LibreOffice → 安全 → 宏安全 |
| 文档加密 |
打开密码 + 权限密码 |
文件 → 属性 → 安全;导出 PDF 设置权限 |
| 系统与账户 |
最小权限、收敛登录 |
sestatus;firewall-cmd;锁定无用账号;chattr +i 关键文件 |
| 无头/服务 |
专用用户、SELinux 策略 |
ausearch/sealert;setsebool;audit2allow;semanage port |