监控Debian系统上Tomcat的日志,往往是发现网络攻击的第一道防线。日志里藏着访问模式、错误堆栈、异常行为——只要你会看,就能在攻击得手前踩住刹车。下面从最基础的日志位置讲起,逐步搭建起一套可落地的监控方案。
日志文件位置
Tomcat的日志默认堆在 CATALINA_HOME/logs 目录下。其中 catalina.out 是最主力的错误日志,几乎所有运行时异常、连接错误、拒绝访问都会在这里留下痕迹。别小看这个文件,攻击扫描、暴力破解、内存溢出,第一条线索往往就藏在这里。
命令行工具:快速上手
- 实时盯梢:
tail -f catalina.out是最简单粗暴的办法。新日志一行行往外蹦,攻击者试探的瞬间就能被你看到。 - 关键字过滤:
grep "error" catalina.out能快速揪出包含“error”的行。想针对性排查SQL注入?换成grep -i "select\|union" catalina.out就行。 - 分页细查:
less或more适合翻看大文件,配合/搜索关键字,效率很高。
日志分析工具:从手动到自动
单靠命令行对付日常几兆的日志还能凑合,一旦流量上来,或者需要回溯几天前的攻击链路,就得请专业工具出马。
- ELK Stack(Elasticsearch + Logstash + Kibana):免费、开箱即用,Logstash负责收集,Elasticsearch做索引,Kibana画出可视化图表。你可以轻松看到“某个IP在午夜疯狂请求403页面”这样的模式。
- Graylog:同样是开源方案,界面更直观,支持告警规则配置。比如“5分钟内同一个IP出现10次500错误”就发邮件。
- Splunk:商业产品,搜索能力强悍,适合企业级环境。缺点是贵,但功能确实全面。
- Logstash 或 Fluentd:这两者更像管道工,负责把日志从各处汇总、清洗、转存到指定后端。搭配ELK或Graylog使用,适合大规模集群。
监控和报警:让机器替你盯
日志看了不等于防御成功,关键是第一时间收到警报。写个Shell脚本定时扫描关键文件,比如每5分钟 grep 一次 “OutOfMemoryError” 或 “Connection pool exhausted”,一旦命中就重启服务并发送通知。这种自动化手段能大幅缩短响应时间。
也可以把脚本挂到 systemd timer 或 cron 里,配合邮件、信息甚至企业微信机器人推送。这样即使半夜有攻击,你也不用一直盯着终端。
从简单的 tail -f 到完整的ELK报警体系,没有一步登天的方案,但每多一层监控,服务的安全水平就抬高一点。先用最顺手的方式跑起来,再逐步迭代——这是所有安全运维的必经之路。
