温馨提示×

Linux SFTP日志管理技巧

小樊
46
2025-11-15 06:56:30
栏目: 智能运维

Linux SFTP日志管理技巧

一 日志位置与快速查看

  • SFTP基于SSH,日志默认随SSH记录。常见路径与命令如下:
系统或方式 日志路径 常用查看命令
Debian/Ubuntu /var/log/auth.log tail -f /var/log/auth.log | grep sftp
RHEL/CentOS /var/log/secure tail -f /var/log/secure | grep sftp
通用 systemd 通过 journal journalctl -u sshd -f | grep sftp
部分系统 syslog /var/log/syslog tail -f /var/log/syslog | grep sftp
  • 典型日志示例:
    • Accepted publickey for username from IP_ADDRESS port PORT ssh2
    • pam_unix(sshd:session): session opened for user username by (uid=0)
    • channel_open_session: session 1: sftp
  • 提示:若未见SFTP关键字,可先用 journalctl -u sshd -f 观察会话建立过程。

二 提升日志细粒度与分离输出

  • 使用internal-sftp并指定日志设施(facility)与级别,便于单独采集与归档:
    1. 编辑 /etc/ssh/sshd_config
      • 建议对SFTP用户使用 Match Group sftp_users 做隔离
      • 示例:
        Subsystem sftp internal-sftp -l INFO -f local5
        Match Group sftp_users
          X11Forwarding no
          AllowTcpForwarding no
          ChrootDirectory %h
          ForceCommand internal-sftp
        
    2. 配置 rsyslog 分离日志(创建 /etc/rsyslog.d/sftp.conf
      local5.*    /var/log/sftp.log
      
    3. 重启服务
      systemctl restart rsyslog
      systemctl restart sshd
      
    4. 实时查看
      tail -f /var/log/sftp.log
      
  • 如需更高调试级别,可将 -l 提升到 DEBUG3(仅在排障时短期使用,避免日志过大)。

三 日志轮转与保留策略

  • 使用 logrotate 管理日志大小与保留期,示例分别针对分离日志与系统默认日志:
    • 分离日志 /var/log/sftp.log(创建 /etc/logrotate.d/sftp
      /var/log/sftp.log {
        daily
        rotate 30
        compress
        missingok
        notifempty
        create 640 root root
        postrotate
          systemctl reload rsyslog >/dev/null 2>&1 || true
        endscript
      }
      
    • 系统日志 /var/log/secure(RHEL/CentOS)
      /var/log/secure {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 640 root adm
        postrotate
          /sbin/service rsyslog reload > /dev/null 2>&1 || true
        endscript
      }
      
  • 测试与验证
    logrotate -f /etc/logrotate.d/sftp
    ls -lh /var/log/sftp.log*
    
  • 要点:为安全日志设置最小权限(如 640 root root640 root adm),并在轮转后执行 reload rsyslog 确保文件句柄更新。

四 审计与入侵防护

  • 文件访问审计(细粒度到目录/文件):
    1. 安装并启动 auditd
      apt-get install auditd audispd-plugins    # Debian/Ubuntu
      yum install audit                        # RHEL/CentOS
      systemctl enable --now auditd
      
    2. 添加监控规则(对SFTP根目录或业务目录)
      auditctl -w /data/sftp -p wa -k sftp_monitor
      
    3. 查询审计日志
      ausearch -k sftp_monitor
      
  • 暴力破解防护(fail2ban):
    • 安装:apt-get install fail2ban 或 yum install fail2ban
    • 配置 /etc/fail2ban/jail.local
      [sftp]
      enabled  = true
      port     = ssh
      filter   = sftp
      logpath  = /var/log/auth.log
      bantime  = 600
      findtime = 600
      maxretry = 3
      
    • 可选自定义 filter(/etc/fail2ban/filter.d/sftp.conf)
      [Definition]
      failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from <HOST>
      ignoreregex =
      
    • 重启:systemctl restart fail2ban
    • 查看状态:fail2ban-client status sshd。

五 集中化分析与可视化

  • 轻量分析:
    • 使用 logwatch 做日/周报摘要
    • 命令行快速统计示例:统计失败登录
      grep 'sshd.*Failed password' /var/log/auth.log | awk '{print $1,$2,$3}' | sort | uniq -c | sort -nr
      
  • 集中化平台:
    • ELK/Graylog/Splunk:将 /var/log/auth.log/var/log/secure/var/log/sftp.log 通过 Filebeat/Logstash 采集、解析与入库,在 Kibana/Graylog 建立仪表盘与告警规则,适合海量日志与合规审计。

0