TongWeb7生产环境安全加固实战:从验证码到三员分立

发布时间:2026/7/13 1:40:31
TongWeb7生产环境安全加固实战:从验证码到三员分立 1. 项目概述为什么生产环境下的TongWeb7必须做安全加固最近在帮一个金融客户做中间件迁移和上生产前的安全合规检查项目核心就是把应用从旧版本的WebLogic迁移到国产的TongWeb7上。客户的安全团队提了一堆要求从最基础的控制台不能裸奔到满足等保三级里提到的“三员分立”原则一条条列得清清楚楚。这其实不是个例现在但凡涉及线上业务尤其是金融、政务这类对安全敏感的行业中间件安全加固已经从“加分项”变成了“入场券”。你可能会觉得TongWeb7本身已经挺安全了默认配置用着好像也没事。但根据我多年的经验默认配置恰恰是最大的风险点它追求的是通用性和易用性跟生产环境所要求的“最小权限、纵深防御”原则往往是背道而驰的。就拿这次的项目标题来说“控制台登录验证码”和“三员分立”就是两个非常典型且必须处理的加固点。控制台是管理TongWeb7的大门如果连个验证码都没有攻击者就可以肆无忌惮地进行暴力破解尝试弱口令风险急剧上升。而“三员分立”则是安全管理的基础模型要求系统管理员、安全管理员和审计员的权限必须分离互相制约防止单人权限过大带来的内部风险。这不仅仅是技术配置更是一种安全治理思想的落地。所以这次实战分享我会以一个完整的生产环境上线流程为线索把散落在官方文档、安全基线要求和实战踩坑经验里的东西串起来。目标很明确不是简单地告诉你改哪个配置文件而是让你明白为什么必须这么改这么改背后防的是什么风险以及在实际操作中可能会遇到哪些“坑”。我会假设你已经有TongWeb7的基础安装和部署经验我们将直奔主题搞定从服务器基础环境到TongWeb7自身配置的全链路安全加固。2. 整体加固思路与架构设计安全加固切忌“头痛医头脚痛医脚”。在动手修改任何一个TongWeb7的配置文件之前我们必须先建立起一个清晰的加固层次模型。我的思路通常分为四个层次由外到内层层递进第一层操作系统与网络环境加固。这是TongWeb7运行的基石。如果服务器本身漏洞百出开放了不必要的端口或者使用了弱口令的SSH那么中间件加固得再完美也是空中楼阁。这一层的工作包括操作系统用户权限最小化、关闭非必需服务、配置防火墙策略、安装基础的安全防护软件如HIDS、以及进行必要的内核参数调优以抵御常见的网络攻击如SYN Flood。第二层TongWeb7运行环境与基础配置加固。这一层开始聚焦TongWeb7本身。核心是遵循“最小安装”和“最小权限”原则。例如使用独立的、非root的系统用户来启动TongWeb7进程严格控制TongWeb7安装目录及日志目录的文件权限删除或禁用示例应用、默认管理控制台如果不用等可能带来信息泄露或攻击面的内容。第三层TongWeb7应用服务器核心安全配置加固。这是本次实战的重点主要涉及TongWeb7自身的配置文件修改。包括但不限于强化控制台与管理端口的安全访问策略如绑定特定IP、启用验证码、强制HTTPS配置严格的安全域Security Realm和用户角色启用并配置详细的审计日志以及根据“三员分立”原则规划和创建对应的管理员账号与角色。第四层部署应用的安全规范。中间件安全了上面跑的应用也得安全。这包括在TongWeb7中配置安全约束Security Constraint来定义URL的访问控制、强制应用使用安全的通信协议如TLS 1.2、以及对应用会话Session进行安全配置防止会话固定、会话劫持等攻击。这次我们的实战将主要覆盖第二层和第三层特别是第三层中与控制台验证码和“三员分立”直接相关的配置。我们会采用一种“操作时间轴”的方式模拟从一台刚装好TongWeb7的服务器开始一步步将其加固到能满足一般生产环境安全审计要求的程度。整个过程中我会穿插解释每个操作的安全意图并分享我遇到过的典型问题和解决方案。3. 环境准备与基础安全加固在登录TongWeb7控制台之前我们得先把“地基”打牢。很多安全事件的发生根源就在于基础环境太脆弱。3.1 操作系统用户与权限规划绝对不要使用root用户直接运行TongWeb7这是铁律。我们需要创建一个专用的系统用户和用户组例如tongweb。# 创建用户组和用户并禁止其登录shell增强安全性 groupadd tongweb useradd -g tongweb -s /sbin/nologin -M tongweb接下来更改TongWeb7安装目录的所有权。假设你的TongWeb7安装在/opt/TongWeb7。chown -R tongweb:tongweb /opt/TongWeb7这样做的目的是实现权限隔离。即使TongWeb7进程被攻破攻击者获得的也只是tongweb这个低权限用户的身份无法对系统关键文件进行破坏极大地限制了攻击范围。3.2 文件系统权限加固仅仅改变所有者还不够还需要设置严格的目录权限。遵循“最小权限”原则可读、可写、可执行的权限只授予必须的目录。# 进入安装目录 cd /opt/TongWeb7 # 1. 整个目录所有者可读写执行同组用户只读其他用户无权限750是常用安全配置 chmod 750 . # 2. 对于需要写入的目录单独调整。例如日志目录、临时文件目录、部署目录。 chmod 770 logs/ temp/ applications/ # tongweb用户和同组用户可读写其他用户无权限 # 3. 对于二进制文件和库文件通常只需要读和执行权限。 find bin/ -type f -name *.sh -exec chmod 750 {} \; find lib/ -type f -name *.jar -exec chmod 640 {} \; # 4. 特别注意删除或备份默认的示例应用和文档它们可能包含漏洞或泄露信息。 rm -rf samples/ docs/ # 请谨慎操作确认无需这些内容后再删除。或将其移动到安全位置。注意chmod 770用于logs/等目录是因为TongWeb7进程以tongweb用户运行需要向其中写入文件。确保这些目录的属组正确tongweb:tongweb这样进程才有写入权限。applications/目录同理部署应用时可能需要写入。3.3 网络与防火墙配置TongWeb7默认会监听多个端口比如控制台的管理端口默认9060、HTTP端口默认8080、HTTPS端口默认9443、AJP端口等。在生产环境中我们必须通过防火墙严格限制对这些端口的访问。管理端口如9060, 9043这是加固的重中之重。必须仅允许运维堡垒机或特定管理网段的IP地址访问。绝对不应该对互联网开放。应用端口如8080, 9443根据业务需要开放。如果应用提供对外服务则需要对公网开放如果仅是内部服务则限制在内网IP段。以常用的firewalld为例CentOS/RHEL 7# 假设管理网络段是 10.10.1.0/24应用需要对公网提供HTTPS服务 systemctl start firewalld systemctl enable firewalld # 添加一个富规则只允许特定IP段访问管理端口 firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.10.1.0/24 port protocoltcp port9060 accept firewall-cmd --permanent --add-rich-rulerule familyipv4 source address10.10.1.0/24 port protocoltcp port9043 accept # 开放应用的HTTPS端口给所有来源根据实际情况调整 firewall-cmd --permanent --add-port9443/tcp # 移除默认的、可能不必要的公开端口如默认的8080如果我们只用9443 firewall-cmd --permanent --remove-port8080/tcp # 重载防火墙配置 firewall-cmd --reload # 查看生效的规则 firewall-cmd --list-all这个阶段完成后你的TongWeb7服务器已经具备了基本的安全运行环境。接下来我们就要深入TongWeb7内部进行核心的安全配置了。4. 控制台安全加固强制验证码与访问策略TongWeb7的控制台通常通过http(s)://服务器IP:9060/console访问是运维管理的核心入口也是攻击者最感兴趣的目标。默认安装后控制台登录只有用户名和密码这存在暴力破解的风险。我们的目标是为控制台登录增加验证码并严格限制控制台本身的访问。4.1 启用并配置登录验证码TongWeb7企业版通常内置了验证码功能但可能需要手动启用和配置。配置主要涉及两个文件conf/login.conf和conf/system.conf具体文件路径可能因版本略有差异请以实际为准。第一步修改conf/login.conf这个文件定义了登录模块。我们需要确保验证码Captcha模块被启用并正确配置。# 在login.conf中找到或添加与Captcha相关的配置项 # 启用验证码 captcha.enabledtrue # 验证码类型常见的有“default”数字字母混合、“math”算术题等 captcha.typedefault # 验证码长度 captcha.length4 # 验证码会话中存储的key名称一般不用改 captcha.session.keyCAPTCHA_CODE第二步修改conf/system.conf这个文件是TongWeb7的主配置文件我们需要在控制台相关的配置段中指定使用上述启用了验证码的登录模块。# 找到控制台Console相关的配置区域可能标记为 [console] 或包含console的配置项 # 指定登录配置文件路径如果尚未指定 console.login.config.file${TONGWEB_HOME}/conf/login.conf # 确保控制台的安全域realm配置正确指向一个安全的用户存储如后面会配置的“三员分立”的域第三步重启并验证保存配置文件后重启TongWeb7服务。再次访问控制台登录页面你应该能看到验证码输入框。尝试输入错误的验证码应该会登录失败。实操心得验证码的复杂度需要平衡安全性和用户体验。对于内部管理控制台使用captcha.typemath如“35”可能比扭曲的数字字母更友好且同样能有效阻止自动化脚本。如果验证码不显示首先检查TongWeb7的日志文件logs/server.log看是否有相关错误。常见问题包括图形处理库缺失如未安装字体对于Linux服务器确保安装了fontconfig等包。4.2 强化控制台访问策略仅仅有验证码还不够。我们还需要从网络层和协议层加固控制台的访问。绑定管理端口到特定IP如果服务器有多个IP如内网IP和外网IP应将管理端口绑定到内网IP杜绝从外网直接访问的可能。在conf/server.xml或类似配置连接器的文件中找到管理端口的Connector配置。!-- 修改前可能监听所有接口 -- Connector port9060 protocolHTTP/1.1 .../ !-- 修改后仅监听内网IP 10.10.1.100 -- Connector port9060 protocolHTTP/1.1 address10.10.1.100 ... /强制使用HTTPS访问控制台明文传输的管理流量是致命的。我们应该禁用HTTP管理端口9060或将其重定向到HTTPS端口9043。更好的做法是只启用HTTPS管理端口。首先确保你为TongWeb7配置了有效的SSL证书自签名证书仅用于测试生产环境建议使用受信任的CA签发的证书。在conf/server.xml中确保HTTPS Connector端口9043已正确配置且启用。可以考虑将HTTP Connector9060的redirectPort属性设置为9043这样访问HTTP会自动跳转到HTTPS。最严格的做法是直接注释掉或删除HTTP管理Connector的配置只保留HTTPS。配置访问控制列表ACLTongWeb7支持在应用层面配置IP过滤。虽然我们已经在操作系统防火墙做了限制但在中间件层再加一道防线更为稳妥。这通常可以通过配置Web应用的web.xml或使用TongWeb7的安全约束功能实现但针对控制台应用本身可能需要修改其部署描述符或使用TongWeb7特有的管理控制台配置。一个更通用的方法是利用前面提到的防火墙规则这是更推荐的方式。完成以上步骤后你的TongWeb7控制台已经具备了较强的抗暴力破解和防窃听能力。接下来我们要解决“谁”能登录控制台以及登录后“能干什么”的问题这就是“三员分立”要解决的问题。5. 实现“三员分立”权限模型“三员分立”是中国等级保护、网络安全法中对重要信息系统安全管理的基本要求核心是权限分离与制衡。在TongWeb7的语境下我们需要创建三个不同的管理角色并分配给不同的管理员账号。系统管理员负责TongWeb7服务器的日常运维、启停、配置修改、应用部署等。拥有最高的操作权限但不能进行用户管理和审计日志查看。安全管理员负责用户账号、角色、密码策略的管理。可以创建、修改、删除用户分配角色但不能进行系统运维操作。审计员负责查看和分析所有的审计日志、操作记录。只有只读权限不能进行任何配置修改或用户管理操作。TongWeb7通常通过安全域Security Realm来管理用户和角色。我们可以使用其内置的基于文件如conf/tomcat-users.xml或基于JDBC连接数据库的Realm。为了便于管理和持久化生产环境推荐使用JDBC Realm将用户信息存储在独立的数据库中如MySQL。这里为了演示清晰我们先使用文件Realm其原理是相通的。5.1 规划角色与用户首先在conf/tomcat-users.xml文件中定义角色和用户。这个文件是TongWeb7默认的用户存储之一。?xml version1.0 encodingutf-8? tomcat-users !-- 定义三个核心角色 -- role rolenamesysadmin/ !-- 系统管理员角色 -- role rolenamesecadmin/ !-- 安全管理员角色 -- role rolenameauditor/ !-- 审计员角色 -- !-- 可选定义一个超级管理员角色用于初始配置后续应禁用或谨慎使用 -- role rolenameadmin-gui/ !-- 控制台GUI管理角色 -- role rolenameadmin-script/ !-- 脚本管理角色 -- !-- 创建用户并分配角色 -- !-- 系统管理员zhangsan -- user usernamezhangsan password{SHA-256}hashed_password_here rolessysadmin/ !-- 安全管理员lisi -- user usernamelisi password{SHA-256}hashed_password_here rolessecadmin/ !-- 审计员wangwu -- user usernamewangwu password{SHA-256}hashed_password_here rolesauditor/ !-- 注意密码不应明文存储。这里 {SHA-256} 表示使用SHA-256哈希。 可以使用TongWeb7提供的工具生成哈希密码例如 $TONGWEB_HOME/bin/digest.sh -a SHA-256 -s 0 your_password 将输出的部分去掉“your_password:”前缀作为password属性的值。 -- /tomcat-users重要提示tomcat-users.xml中的密码必须使用哈希值切勿使用明文TongWeb7的bin/digest.shLinux或digest.batWindows脚本可以用来生成哈希。命令格式如注释所示。5.2 配置安全域Realm与角色映射接下来我们需要配置TongWeb7使用这个用户文件并将我们定义的角色映射到控制台的具体功能权限上。这通常在conf/server.xml中配置。在server.xml的Engine或Host部分添加或修改Realm配置Engine nameCatalina defaultHostlocalhost ... !-- 配置一个UserDatabase Realm指向我们刚才编辑的tomcat-users.xml -- Realm classNameorg.apache.catalina.realm.UserDatabaseRealm resourceNameUserDatabase/ ... /Engine同时确保conf/server.xml中已经存在或添加了用于全局资源的GlobalNamingResourcesGlobalNamingResources !-- 定义用户数据库资源 -- Resource nameUserDatabase authContainer typeorg.apache.catalina.UserDatabase descriptionUser database that can be updated and saved factoryorg.apache.catalina.users.MemoryUserDatabaseFactory pathnameconf/tomcat-users.xml / /GlobalNamingResources现在用户和角色已经定义好了。但是如何让“sysadmin”、“secadmin”、“auditor”这些角色真正控制控制台里的不同功能呢这需要修改TongWeb7控制台应用通常是webapps/console或类似的权限约束。5.3 定制控制台应用权限TongWeb7的控制台是一个Web应用其访问权限由WEB-INF/web.xml文件中的安全约束security-constraint定义。我们需要找到这个文件路径可能为webapps/console/WEB-INF/web.xml并对其进行编辑。目标将控制台的不同URL模式如/console/deploy/*对应部署/console/security/*对应用户管理与我们自定义的角色关联起来。由于TongWeb7的控制台功能模块划分可能比较细修改web.xml是一项精细且需要充分测试的工作。一个更稳妥、更推荐的做法是利用TongWeb7管理控制台本身提供的“角色-资源”映射功能如果版本支持。通常在控制台的“安全”或“用户管理”模块可以直接进行图形化的权限分配。操作路径假设控制台有该功能使用一个具有超级管理员权限的账号如初始安装时创建的admin账号登录控制台。导航到“安全” - “角色管理”或“用户与角色”。为我们自定义的角色sysadmin,secadmin,auditor分配具体的“资源”或“操作”权限。例如将“应用部署”、“服务器配置”、“数据源管理”等资源分配给sysadmin角色。将“用户管理”、“角色管理”、“密码策略”等资源分配给secadmin角色。将“日志查看”、“操作审计”等资源分配给auditor角色。如果图形界面不支持如此细粒度的分配或者版本较旧那么可能就需要手动编辑web.xml。这是一个高风险操作务必先备份原文件。你需要分析控制台应用的URL结构然后像下面这样添加安全约束!-- 示例限制部署功能只能由sysadmin访问 -- security-constraint web-resource-collection web-resource-nameDeployment/web-resource-name url-pattern/console/deploy/*/url-pattern /web-resource-collection auth-constraint role-namesysadmin/role-name /auth-constraint /security-constraint !-- 示例限制用户管理功能只能由secadmin访问 -- security-constraint web-resource-collection web-resource-nameUserManagement/web-resource-name url-pattern/console/security/users/*/url-pattern /web-resource-collection auth-constraint role-namesecadmin/role-name /auth-constraint /security-constraint完成以上步骤后重启TongWeb7。然后分别用zhangsan(sysadmin)、lisi(secadmin)、wangwu(auditor) 三个账号登录控制台。你会发现每个账号能看到和操作的功能菜单是不同的从而实现了权限的分离。6. 审计日志与安全监控配置“三员分立”中的审计员角色要发挥作用依赖于完整、详细且受保护的审计日志。TongWeb7的审计日志需要专门启用和配置。6.1 启用并配置访问日志与审计日志TongWeb7的日志有多种对于安全审计我们主要关心两种访问日志Access Log记录所有HTTP/HTTPS请求包括请求来源IP、时间、请求方法、URL、状态码、响应大小等。这对于追踪异常访问、攻击行为至关重要。审计日志Audit Log专门记录安全相关事件如用户登录成功/失败、权限检查失败、关键配置变更等。配置访问日志在conf/server.xml中找到对应的Connector如HTTP/HTTPS在其内部添加Valve配置。Connector port8080 protocolHTTP/1.1 ... !-- 启用访问日志Valve -- Valve classNameorg.apache.catalina.valves.AccessLogValve directorylogs prefixlocalhost_access_log suffix.txt pattern%h %l %u %t quot;%rquot; %s %b %D resolveHostsfalse / /Connectorpattern定义了日志格式。%h是远程主机IP%u是远程用户%t是时间%r是请求行%s是状态码%b是响应字节数%D是处理时间微秒。一个更丰富的模式如combined可以记录Referer和User-Agent。resolveHosts设为false可以避免DNS反向查询提升性能并防止因DNS问题阻塞请求。配置审计日志审计日志的配置通常位于独立的审计配置文件或conf/logging.properties中。你需要查找TongWeb7文档中关于“审计”或“Audit”的配置项。可能需要启用特定的审计过滤器Filter或监听器Listener并将审计事件记录到独立的日志文件中。例如配置一个只记录SECURITY级别事件的日志处理器Handler将其输出到logs/audit.log。6.2 日志安全与轮转策略日志本身也是敏感信息必须加以保护。权限确保日志目录logs/的权限如前所述tongweb用户可写其他用户最好只读或无权限。防止非授权用户篡改或删除日志。轮转Rotation避免日志文件无限增长消耗磁盘空间。TongWeb7的AccessLogValve支持按时间或大小轮转。对于审计日志可以使用Linux的logrotate工具进行更精细的管理如按天切割、压缩旧日志、保留一定天数。集中收集与分析对于生产环境强烈建议将TongWeb7的日志尤其是访问日志和审计日志实时收集到集中的日志平台如ELK Stack、Splunk等便于进行关联分析、异常检测和长期归档。6.3 为审计员配置只读日志访问审计员wangwu需要能查看日志但不能修改。有几种实现方式通过控制台集成如果TongWeb7控制台提供了日志查看模块并且我们成功地将该模块的访问权限只分配给了auditor角色那是最理想的。通过只读文件系统权限我们可以将日志文件所在的目录设置为tongweb用户可写tongweb组可读。然后将审计员wangwu也加入到tongweb组中。这样wangwu通过SSH登录服务器后可以读取日志文件但无法修改。同时要严格控制wangwu的SSH登录权限和可执行的命令通过sudo或authorized_keys的command选项限制。通过专用的日志查看工具搭建一个简单的、只读的日志查看Web界面如封装tail -f并做好身份认证和授权只允许auditor角色访问。方案2在实践中比较常见但需要系统层面的配合。无论哪种方案核心原则是审计员有权限查看所有日志但无权限修改任何配置或日志内容。7. 生产环境其他关键安全配置项除了上述核心加固点生产环境还有一些不容忽视的配置细节。7.1 禁用不安全的协议与加密套件如果启用了HTTPS你必须启用务必在conf/server.xml的HTTPS Connector中配置强加密套件并禁用老旧、不安全的协议如SSLv2, SSLv3, TLS 1.0甚至TLS 1.1在现代安全要求下也建议禁用。Connector port9443 protocolorg.apache.coyote.http11.Http11NioProtocol maxThreads150 SSLEnabledtrue schemehttps securetrue keystoreFile/path/to/your/keystore.jks keystorePassyour_keystore_password clientAuthfalse sslProtocolTLS ciphersTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 sslEnabledProtocolsTLSv1.2,TLSv1.3 /sslEnabledProtocols明确指定启用TLS 1.2和1.3。ciphers指定优先使用的强加密套件列表。上面的列表是一个较安全的示例具体需根据JRE版本和合规要求调整。你可以使用在线工具或openssl命令测试你的服务器支持的套件。7.2 调整连接器Connector安全参数在conf/server.xml的HTTP/HTTPS Connector中可以设置一些安全相关的参数。Connector port8080 protocolHTTP/1.1 connectionTimeout20000 maxHttpHeaderSize8192 maxPostSize2097152 !-- 限制POST请求大小防DoS -- maxParameterCount1000 !-- 限制请求参数个数 -- allowTracefalse !-- 禁用TRACE方法防XST攻击 -- serverTongWeb/7.0 !-- 可考虑修改或隐藏服务器标识 -- ... /allowTracefalse禁用TRACE和TRACK方法防止跨站追踪攻击。server可以修改为一个模糊的标识减少信息泄露但这不是主要的安全手段。maxPostSize和maxParameterCount有助于缓解某些拒绝服务攻击。7.3 会话Session安全在conf/web.xml全局配置或应用的WEB-INF/web.xml中可以配置会话安全。session-config session-timeout30/session-timeout !-- 会话超时时间分钟 -- cookie-config http-onlytrue/http-only !-- 防止通过JS窃取Cookie -- securetrue/secure !-- 仅通过HTTPS传输Cookie -- /cookie-config /session-config将http-only和secure设置为true是保护用户会话Cookie的基本要求。8. 加固流程检查清单与常见问题排查完成所有配置后不要急于上线。请按照以下清单进行一次完整的检查并准备好排查可能遇到的问题。8.1 安全加固检查清单检查项预期状态/配置检查方法操作系统用户使用专用非root用户如tongweb启动ps -ef文件权限安装目录权限为750日志等目录770属主属组为tongwebls -ld /opt/TongWeb7ls -ld /opt/TongWeb7/logs防火墙管理端口9060/9043仅对管理网段开放firewall-cmd --list-rich-rules或iptables -L -n控制台验证码登录页面显示验证码错误验证码导致登录失败浏览器访问控制台登录页肉眼观察及测试控制台HTTPSHTTP管理端口已禁用或重定向仅HTTPS可访问尝试用HTTP访问应跳转或拒绝用HTTPS访问正常三员分立账号三个账号sysadmin, secadmin, auditor可分别登录使用三个账号登录控制台权限隔离sysadmin不能管理用户secadmin不能部署应用auditor仅能看日志登录后尝试访问无权功能应被拒绝403错误或无菜单密码存储tomcat-users.xml中密码为哈希值非明文查看conf/tomcat-users.xml文件内容审计日志独立的审计日志文件如audit.log正在生成且包含登录事件查看logs/目录下是否有审计日志并tail查看内容访问日志访问日志格式正确记录了客户端IP、请求等信息查看logs/localhost_access_log.*.txtTLS协议仅启用TLSv1.2及以上使用openssl s_client -connect your_server:9443 -tls1_2测试会话CookieCookie标记为HttpOnly和Secure浏览器开发者工具查看登录后的Set-Cookie响应头8.2 常见问题与解决方案实录问题1启用验证码后控制台登录页面不显示验证码图片。排查查看logs/server.log寻找与“Captcha”、“ImageIO”或相关图形生成的错误。解决Linux服务器安装字体包。例如对于CentOS/RHELyum install fontconfig dejavu-sans-fonts。对于Ubuntu/Debianapt-get install fontconfig fonts-dejavu-core。权限问题确保TongWeb7进程用户tongweb对临时目录如/tmp有写入权限。配置路径确认login.conf和system.conf中验证码相关配置的路径和文件名正确无误。问题2自定义角色登录后看不到任何管理菜单或所有菜单都可见权限未生效。排查首先确认用户是否被正确分配了角色检查tomcat-users.xml。然后检查TongWeb7控制台应用的安全约束是否生效。解决如果使用图形界面分配权限确保操作已保存并生效可能需要重启应用或整个TongWeb7。如果手动修改了web.xml请检查XML语法是否正确url-pattern是否匹配控制台的实际URL路径role-name是否与定义的角色名完全一致大小写敏感。修改后必须重启TongWeb7。查看logs/console.log或控制台应用对应的日志看是否有权限检查相关的错误信息。问题3审计日志没有记录登录事件。排查确认审计日志功能是否已正确启用。检查conf/logging.properties或相关审计配置文件。解决根据TongWeb7官方文档找到启用审计日志的确切配置项。可能需要设置日志级别如org.apache.catalina.authenticator.level FINE或SECURITY并配置一个专门的FileHandler来接收这些日志事件。不同版本配置方式可能不同务必查阅对应版本的文档。问题4配置HTTPS后浏览器访问控制台提示证书不安全。排查使用的是自签名证书。解决生产环境应向受信任的证书颁发机构CA申请证书。测试环境可以手动将自签名证书导入到客户端的信任库但这不是生产环境的做法。确保在server.xml的HTTPS Connector中配置的keystoreFile和keystorePass指向正确的密钥库和密码。问题5重启TongWeb7后部分配置似乎没生效。排查最常见的原因是配置文件有语法错误导致TongWeb7启动时部分配置被忽略。另一个可能是缓存。解决首先永远优先查看日志logs/catalina.out和logs/server.log会包含启动时的详细信息和错误。根据错误信息修正配置。其次确保你修改的是正确的配置文件例如确认TongWeb7的安装路径和配置路径。最后在极端情况下可以尝试清除work/和temp/目录下的缓存文件后再重启。安全加固是一个持续的过程而非一劳永逸的任务。本次实战涵盖了从系统层到应用层从访问控制到权限分离的核心配置点为你构建了一个坚实的安全基线。在实际生产环境中还需要结合漏洞扫描、入侵检测、定期安全评估等手段形成动态的安全防护体系。配置完成后务必进行完整的业务功能测试确保安全加固没有引入新的兼容性问题。记住所有的安全设置都应该有清晰的变更记录和回滚方案。