先别着急分析,先得把基础的日志源定位好,新手最容易在这里卡壳半天找不到对的文件。如果是主流的CentOS 7/8/9或者RHEL系列,firewalld的默认日志是通过systemd-journald管理的,直接敲journalctl -u firewalld no-pager -n 1000就能看最近1000条;如果是想存成独立的txt做批量分析,可以先开个临时的防火墙日志文件追加:firewall-cmd set-log-denied=all permanent && firewall-cmd set-log-allowed=all permanent && firewall-cmd reload,然后用journalctl -u firewalld -o short-iso > /var/log/myfw.log.20260X0X导出来,记得日期最好加上,方便后续归档。如果是Debian/Ubuntu,ufw的默认日志在/var/log/ufw.log,直接tail就行,开全量debug也是ufw logging full。
基础日志有了,接下来要抓新手最容易忽略的隐蔽暴力破解——不是那种一秒钟试100次SSH的,那种一般fail2ban或者云厂商的安全组默认规则就拦了,但如果是黑客用100个以上境外IP池+慢字典(每天试10次,每次换IP)+SSH改了非标准端口但规则没补fail2ban的组合拳?上个月我负责的另一家小型教育机构就遇到过,虽然最后密码没被碰对(他们用了16位以上的混合密码),但黑客扫出来了他们藏在2222端口的备份管理后台入口,差点酿成大错。
那这种怎么查?用grep配合sort和uniq就行,别去装那些花里胡哨的第三方分析工具,中小团队场景下命令行足够快。比如先抓firewalld里的SSH非标准端口(假设是2222)的所有访问:grep "DPT=2222" myfw.log.20260X0X,然后提取源IP的字段:awk '{print $11}' myfw.log.20260X0X | grep -v "^$"(注意$11的位置可能根据不同的日志输出格式变,先用head看一条再调整),然后统计每个IP的访问次数:awk '{print $11}' myfw.log.20260X0X | grep -v "^$" | sort | uniq -c | sort -rn。哦对了,这里要敲黑板,别只看访问次数前10的,那些猛的可能已经被拦了,要看访问次数在5-50次之间,且来自不同国家/地区的IP——可以用curl ipinfo.io/IP地址快速查归属地,批量查的话可以用简单的shell循环:for ip in $(awk '{print $11}' myfw.log.20260X0X | grep -v "^$" | sort | uniq -c | sort -rn | awk '{if($1>=5 && $1,这里用到了jq工具解析JSON,新手如果没装的话可以用yum/apt install jq快速装上,别省这一步。

除了隐蔽暴力破解,还有一种新手容易漏的是伪装成正常UA的敏感路径爬虫——比如只爬/admin、/api/v1/backup、/phpmyadmin这些默认后台入口,频率和正常搜索引擎爬虫差不多,但UA是伪造的百度或者谷歌。这种用防火墙日志怎么抓?得先看防火墙日志里有没有URL字段?哦对,一般firewalld和ufw的默认日志是四层的,没有七层的URL,那怎么办?别慌,如果是Nginx/Apache做的反向代理,我们可以结合Nginx/Apache的访问日志和防火墙的放行日志一起看——比如先从Nginx访问日志里抓访问敏感路径的:grep -iE "/admin|/backup|/phpmyadmin" /var/log/nginx/access.log,然后提取这些请求的源IP,再去防火墙日志里查这些IP有没有大量访问其他被拒绝的非标准端口——如果有,那大概率就是黑客在踩点。
最后再补两个新手专属的避坑提醒吧,一个是开头提到的临时日志级别一定要记得关掉,自动轮转规则一定要补全——tmpfs分区满了真的会搞垮各种临时服务;另一个是不要完全依赖云厂商的安全组,自己服务器上的firewalld/ufw/fail2ban一定要开——云厂商的安全组有时候会有延迟或者配置错误(比如我上个月就遇到过阿里云控制台显示规则生效,但后台实际上没同步的情况),多一层防护总是好的。
你们在运维工作中有没有遇到过类似的隐蔽踩点?欢迎在评论区分享你的排查经验。

评论列表 (0条):
加载更多评论 Loading...