温馨提示×

Linux Syslog与网络监控工具结合

小樊
32
2025-12-12 19:14:16
栏目: 智能运维

Linux Syslog与网络监控工具的结合实践

一、架构与关键点

  • Syslog是系统日志标准,定义了消息的PRI(Facility×8 + Severity)HEADER(时间戳、主机名、应用、PID、消息ID)MSG等结构,协议在RFC 3164RFC 5424中描述,常用传输为UDP/TCP 514。它擅长记录“谁在何时何地发生了什么”,但并不等同于“实时流量监控”。网络流量分析应交给tcpdump/tshark、nload/iftop、nftables/iptables LOG等工具,再将结果或事件送入Syslog集中与告警。这样既能保留审计合规,又能获得可观测性与可视化能力。

二、集中式Syslog部署与网络设备接入

  • 在Linux服务器启用rsyslog接收远程日志(示例为同时开启UDP/TCP 514):
    • 编辑**/etc/rsyslog.conf/etc/rsyslog.d/50-default.conf**,确保加载模块并监听端口:
      • module(load="imudp")
      • input(type="imudp" port="514")
      • module(load="imtcp")
      • input(type="imtcp" port="514")
    • 重启服务:sudo systemctl restart rsyslog
  • 网络设备(如Cisco)将日志发往Syslog服务器:
    • 配置示例:logging host 192.0.2.10(将日志发至服务器IP)
  • 安全与可靠性建议:
    • 生产环境优先使用TCP/TLS传输,必要时启用RELP;在rsyslog中可结合ommail等模块做邮件告警,但需控制频率避免告警风暴。

三、将网络事件与流量接入Syslog

  • 防火墙日志入Syslog(便于与监控平台联动告警)
    • iptablessudo iptables -I INPUT -j LOG --log-prefix "NET-IN:"
    • nftablessudo nft add rule inet filter input log prefix "NET-IN: "
    • 说明:上述日志会进入系统日志,随后被集中转发到Syslog服务器进行统一存储与检索。
  • 抓包与协议分析工具输出入Syslog
    • tcpdumpsudo tcpdump -i eth0 -w /var/log/tcpdump.pcap(建议落盘为pcap,再由日志代理或解析器读取并送入Syslog/ES)
    • tsharksudo tshark -i eth0 -w /var/log/tshark.pcap
    • 如需直接写入文本日志,可用管道与logger配合,但更推荐解析pcap做结构化索引。
  • 连接与会话信息快照入Syslog
    • ss/netstat:周期性执行并将结果通过logger写入,例如:ss -tulpen | logger -t NET-SS
    • iftop/nload:短时采样并写入日志,用于峰值与异常带宽的辅助审计(不建议长期高频写入)。

四、与监控与安全平台的联动

  • 日志分析与可视化
    • ELK(Elasticsearch + Logstash + Kibana):Logstash负责解析Syslog与防火墙/抓包元数据,ES存储与检索,Kibana做可视化与仪表盘。
    • Splunk:商业方案,强大的搜索、告警与可视化能力,适合统一安全与运维可观测性平台。
  • 专用Syslog平台
    • Syslog-ng / Rsyslog:高性能收集与转发,支持结构化与多目标路由,适合做日志中枢与策略分发。
    • 卓豪 EventLog Analyzer:聚合网络设备与主机日志,提供UEBA高级威胁分析实时告警,便于合规审计与威胁狩猎。
  • 安全联动与自动处置
    • Fail2Ban:监控/var/log/auth.log等认证日志,自动封禁恶意IP,减少暴力破解与扫描风险。
    • Suricata:作为NIDS/IPS实时检测网络威胁,生成告警事件,可与Syslog/ELK/SIEM联动做溯源与响应。

五、落地配置示例

  • 目标:将iptables日志统一到Syslog服务器(192.0.2.10),并在Kibana中可视化“被拒绝的连接”趋势。
  • 步骤
    1. 在服务器启用rsyslog接收
      • 编辑**/etc/rsyslog.conf**:
        • module(load="imudp")
        • input(type="imudp" port="514")
        • module(load="imtcp")
        • input(type="imtcp" port="514")
      • 重启:sudo systemctl restart rsyslog
    2. 在Linux主机写入防火墙日志
      • sudo iptables -I INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-DROP:"
      • sudo iptables -I INPUT -j LOG --log-prefix "NET-IN:"
    3. 网络设备指向Syslog服务器
      • Cisco示例:logging host 192.0.2.10
    4. 在Logstash配置解析Syslog与防火墙前缀
      • 输入(略,使用syslog输入插件)
      • 过滤示例:
        filter {
          if [message] =~ /^SSH-DROP:/ {
            grok { match => { "message" => "SSH-DROP: .* SRC=%{IP:src_ip} DST=%{IP:dst_ip} .*" } }
            mutate { replace => { "event_type" => "ssh_drop" } }
          }
          else if [message] =~ /^NET-IN:/ {
            grok { match => { "message" => "NET-IN: .* SRC=%{IP:src_ip} DST=%{IP:dst_ip}.*" } }
            mutate { replace => { "event_type" => "net_in_drop" } }
          }
        }
        
      • 输出到Elasticsearch,在Kibana中建立“按src_ip/event_type统计”的面板与阈值告警。
    5. 可选:接入Fail2Ban保护SSH
      • 安装:sudo apt-get install fail2ban
      • 配置/etc/fail2ban/jail.local监控/var/log/auth.log,触发后自动封禁并写入日志,供SIEM关联分析。

0