1) 目标:确保在高防云环境下实现日志完整采集、可溯源、告警及时且无单点。
2) 准备项:确认VPS管理权限、开放端口(514/5044/9200/9300/9090)、选择集中日志存储(ELK/Graylog)与监控(Prometheus)。
3) 备份:先快照主机并记录防火墙规则,避免配置出错时无法回滚。
1) 安装rsyslog:sudo apt-get install rsyslog -y(CentOS: yum install rsyslog)。
2) 配置转发:在 /etc/rsyslog.d/50-default.conf 添加:*.* @@logserver:514(双@为TCP),重启rsyslog systemctl restart rsyslog。
3) 应用日志:对Nginx/Apache/SSH设定log_format并确保写入/var/log下可读文件。
1) 安装Filebeat:下载官方deb/rpm并启用system module。
2) 配置filebeat.yml:paths指向/var/log/nginx/*.log,输出到Logstash或Elasticsearch。示例:output.logstash: hosts: ["logserver:5044"]。
3) 测试发送:filebeat test output;开启filebeat systemctl enable --now filebeat。
1) 部署Elasticsearch集群(至少3节点)并设置索引轮替policy(ILM)。
2) Logstash:配置beats输入、grok解析常见Nginx/SSH/DDoS日志、输出到ES并设置字段映射。
3) Kibana:建立仪表盘(流量、错误率、IP访问频次),并保存常用查询。
1) 在VPS上部署node_exporter与自定义exporter(连接数、iptables计数)。
2) 在Prometheus中编写规则:例如5分钟内某IP连接数>500 -> 触发HighConn警报。示例表达式:sum by (instance, ip) (increase(tcp_connections_total[5m])) > 500。
3) Alertmanager配置接收器(邮件/Slack/DingTalk),并设置抑制(group_interval, repeat_interval)。
1) 通过Webhook将Alertmanager告警推送到运维自动化平台(Ansible Tower/自研脚本)。
2) 自动化动作示例:暂时拉黑IP(iptables -I INPUT -s
3) 记录每次自动化执行到审计日志,定期人工复核以避免误杀。
1) 热/温/冷分层:近期日志保留本地热节点,历史日志转到冷存(对象存储)。
2) 设置索引生命周期(7天热,30天温,长期转S3),并启用压缩与快照备份。
3) 合规性:保留期满足法务/客户要求并对敏感字段做掩码(如PII)。
1) 演练步骤:模拟异常(大量请求/SSH暴力登录),观察日志是否及时到达ELK、Prometheus是否触发告警。
2) 记录时间线:事件发生->日志采集延迟->告警触发->自动化响应->人工干预。目标是告警总时间小于2分钟。
3) 演练后复盘并调整阈值、减少误报。
1) 日志丢失:检查rsyslog/filebeat输出连接、磁盘IO、权限与SELinux。
2) 告警不触发:确认exporter数据、Prometheus scrape间隔与PromQL逻辑。
3) 性能瓶颈:在高防环境下注意ES写入速率、增加队列或使用Kafka缓冲。
1) 将监控系统部署成多可用区/多节点,避免单点故障。
2) 对日志通道加密(rsyslog TLS / Beats TLS),并使用认证。
3) 定期审计告警规则与权限,确保只有必要人员能修改关键阈值。
答:实现日志签名与不可变存储。具体做法是在采集端对关键日志做哈希并写入外部时间戳服务(例如将摘要写入S3或区块链式服务),并在集中库设置只追加权限,定期比对摘要确保一致。
答:先在边界防火墙/高防设备查看流量汇总,再在ELK中用IP聚合查询(按5分钟窗口group by src_ip),结合Netflow或tcpdump快照确认流量特征,最后把疑似IP临时加入黑名单并观察变化。
答:从三个方面优化:1) 调整PromQL阈值与窗口长度以过滤短时突发;2) 使用多条件复合规则(例如同时满足流量与错误率);3) 实施抑制与分级(只有持续超过N分钟或关联攻击信号的告警才上报人为介入)。