本页面说明在生产环境中安全运行 Fess 的推荐安全配置。
Danger
安全非常重要
强烈建议在生产环境中实施本页面描述的所有安全配置。 如果疏忽安全配置,将增加未经授权访问、数据泄漏、系统入侵等风险。
必需的安全配置
更改管理员密码
必须更改默认管理员密码(admin / admin)。
步骤:
登录管理页面: http://localhost:8080/admin
点击「用户」→「用户」
选择
admin用户设置强密码
点击「更新」按钮
Note
一旦将密码从 admin 更改后,就不能再设置回 admin 这样的简单字符串(password.invalid.admin.passwords 中配置了管理员密码黑名单)。此外,在首次启动前,可以通过在 fess_config.properties 中设置 index.user.initial_password 来更改 admin 用户的初始密码。
推荐密码策略:
Fess 具备强制密码最小/最大长度及字符类型要求的内置功能。请在 fess_config.properties 中设置以下属性(括号内为默认值)。
password.min.length(默认值:8):最小长度。建议设置为 12 以上。password.max.length(默认值:100):最大长度。password.require.uppercase(默认值:false):要求包含大写字母。password.require.lowercase(默认值:false):要求包含小写字母。password.require.digit(默认值:false):要求包含数字。password.require.special.char(默认值:false):要求包含符号。
Note
默认情况下,最小长度为 8,且所有字符类型要求均处于禁用状态。若要增强密码强度,请显式设置上述属性。另外,Fess 没有密码过期(强制定期更改)功能。如果希望将定期更改密码作为运维规则强制执行,请手动进行。
启用 OpenSearch 安全插件
步骤:
从
opensearch.yml中删除或注释掉以下行:配置安全插件:
配置 TLS/SSL 证书
重启 OpenSearch
在 Fess 一侧配置连接到 OpenSearch 的信息。
请通过环境变量
SEARCH_ENGINE_HTTP_URL指定连接 URL(可编辑bin/fess.in.sh或服务的环境配置文件;默认值来自fess_config.properties中的search_engine.http.url):请通过
fess_config.properties中的以下属性指定认证信息(不存在SEARCH_ENGINE_USERNAME/SEARCH_ENGINE_PASSWORD这样的环境变量):
详情请参阅 OpenSearch Security Plugin。
启用 HTTPS
HTTP 通信未加密,存在窃听或篡改的风险。在生产环境中必须使用 HTTPS。
方法 1: 使用反向代理(推荐)
在 Fess 前端部署 Nginx 或 Apache,进行 HTTPS 终止。
Nginx 配置示例:
方法 2: 在 Fess 自身配置 HTTPS
在 tomcat_config.properties 中添加以下内容:
推荐的安全配置
防火墙设置
仅开放必要的端口,关闭不必要的端口。
应开放的端口:
**8080**(或 HTTPS 的 443): Fess Web 界面(如需要外部访问)
22: SSH(仅限管理用,仅允许可信 IP 地址)
应关闭的端口:
9200, 9300: OpenSearch(仅限内部通信,阻止外部访问)
Linux (firewalld) 配置示例:
IP 地址限制:
访问控制设置
考虑将管理页面的访问限制为特定 IP 地址。
Nginx 访问限制示例:
角色与访问控制
Fess 预置了两个角色。
admin: 可执行包括管理页面在内的所有操作的管理员角色guest: 分配给未登录(匿名)用户的角色
除此之外的角色可以在管理页面中自由创建。Fess 中的角色只是一个仅有名称的标签,主要用于搜索结果的访问控制(决定用户可以查看哪些文档)。角色本身并不与「管理爬取配置」「编辑搜索结果」等具体的管理权限绑定。
遵循最小权限原则,管理员角色(admin)仅应授予执行管理业务的用户,不要授予普通搜索用户。
步骤:
在管理页面点击「用户」→「角色」
创建必要的角色
在「用户」→「用户」中为用户分配角色
审计日志
认证、管理操作等系统操作历史,默认会作为审计日志被记录。审计日志由 log4j2.xml 中定义的 fess.log.audit 记录器输出,默认输出目标为 audit.log。
由于默认已启用,无需额外配置。如需自定义输出目标或日志级别,请编辑 log4j2.xml 中的以下定义:
定期安全更新
请定期应用 Fess 和 OpenSearch 的安全更新。
推荐步骤:
定期确认安全信息
在测试环境验证更新
将更新应用到生产环境
数据保护
备份加密
备份数据可能包含机密信息。请加密保存备份文件。
加密备份示例:
安全最佳实践
最小权限原则
不要以 root 用户运行 Fess 和 OpenSearch
使用专用用户账号运行
授予最小必要的文件系统权限
网络隔离
将 OpenSearch 部署在专用网络
内部通信使用 VPN 或专用网络
仅将 Fess 的 Web 界面部署在 DMZ
定期安全审计
定期确认访问日志
检测异常访问模式
定期实施脆弱性扫描
安全头配置
根据需要,在 Nginx 或 Apache 中配置安全头:
安全检查清单
部署到生产环境前,请确认以下检查清单:
基本设置
[ ] 已更改管理员密码
[ ] 已启用 HTTPS
[ ] 已更改默认端口号(可选)
网络安全
[ ] 已用防火墙关闭不必要的端口
[ ] 已对管理页面进行 IP 限制(如可能)
[ ] 已将 OpenSearch 的访问限制为仅限内部网络
访问控制
[ ] 已适当配置角色和访问权限(仅将管理员角色授予必要的用户)
[ ] 已删除不必要的用户账号
[ ] 已配置密码策略
监控和日志
[ ] 已确认审计日志已启用
[ ] 已配置日志保存期限
[ ] 已构建日志监控机制(如可能)
备份和恢复
[ ] 已设置定期备份计划
[ ] 已加密备份数据
[ ] 已验证恢复步骤
更新和补丁管理
[ ] 已建立接收安全更新通知的机制
[ ] 已文档化更新步骤
[ ] 已建立在测试环境验证更新的体系
安全事件响应
发生安全事件时的响应步骤:
检测事件
确认日志
检测异常访问模式
确认系统行为异常
初期响应
确定影响范围
防止损害扩大(停止相关服务等)
保全证据
调查和分析
详细分析日志
确定入侵路径
确定可能泄漏的数据
恢复
修复脆弱性
恢复系统
加强监控
事后处理
创建事件报告
实施防止再发措施
向相关人员报告
参考信息
如有安全相关的问题或疑问,请联系:
商业支持: https://www.n2sm.net/