网络日志审计的基本流程
公司服务器突然变慢,运维人员第一反应就是查日志。网络日志审计其实就是从一堆系统、防火墙、路由器、应用服务生成的日志中,找出异常行为的过程。比如某天发现内网有台电脑频繁连接境外IP,这种线索往往就藏在日志里。
第一步是收集日志。常见的设备都会生成日志,像Windows事件日志、Linux的syslog、防火墙的访问记录、Web服务器的access.log等。这些日志格式不一,有的是文本,有的是二进制,需要统一采集到一个平台,比如用Syslog服务器或ELK(Elasticsearch、Logstash、Kibana)做集中管理。
设置合理的日志保留策略
日志不是越多越好。一台中等规模的服务器每天可能产生几十MB甚至上GB的日志,长期堆积会占用大量磁盘空间。一般建议关键系统保留90天以上的日志,满足基本合规要求。比如金融类企业通常要保存6个月以上,用于事后追溯。
可以在Linux系统中通过配置logrotate来管理日志轮转。例如:
<code>/var/log/app/*.log {<br> daily<br> rotate 90<br> compress<br> missingok<br> notifempty<br>}</code>这段配置表示每天轮转一次日志,最多保留90份,自动压缩节省空间。
筛选关键字段进行分析
真正有用的信息往往只占日志总量的一小部分。比如分析Web攻击时,重点关注HTTP状态码404、403、500,以及包含“../”、“union select”这类特征字符串的请求行。可以用grep快速过滤:
<code>grep "404" access.log | grep "sqlmap"</code>这条命令能找出被SQL注入工具扫描过的痕迹。再比如查看SSH登录失败记录:
<code>grep "Failed password" /var/log/auth.log | awk '{print $1,$2,$9}'</code>可以提取出日期、时间和来源IP,方便后续封禁恶意地址。
利用工具自动化检测异常
手动翻日志效率太低,尤其是面对成百上千台设备的时候。这时候可以用开源工具辅助,比如OSSEC是一款轻量级的主机入侵检测系统,能实时监控日志并触发告警。配置一条规则检测多次登录失败:
<code><rule id="100001" level="10"><br> <match>Failed password</match><br> <repeat_alerts>300</repeat_alerts><br></rule></code>当同一IP在短时间内出现多次失败尝试,系统就会发邮件或短信通知管理员。
对于有一定技术基础的团队,也可以写简单的Python脚本定时分析日志。比如用正则匹配出所有非标准端口的外连行为,提示可能存在后门程序。
关注权限变更和敏感操作
内部威胁不容忽视。某员工突然把自己加进管理员组,或者删除了关键业务日志,这类操作必须被记录并审查。在Windows域环境中,要开启“审核账户管理”和“审核对象访问”策略,确保每一次权限变动都有迹可循。
查看Windows安全事件ID 4728(用户被加入特权组)或Linux下的sudo执行记录,都是常规审计动作。发现异常时间点的操作,比如凌晨三点有人重启数据库服务,就要进一步核实是否合规。
实际工作中,很多问题都是通过交叉比对发现的。比如防火墙日志显示某个IP在上传数据,同时主机日志显示该IP刚刚通过弱密码登录成功,两条线索结合就能判断是否发生数据泄露。