温馨提示×

Ubuntu SFTP如何进行日志轮转和管理

小樊
42
2025-11-29 09:01:45
栏目: 智能运维

Ubuntu SFTP 日志轮转与管理

一 日志位置与采集

  • SFTP 基于 SSH,默认日志进入系统认证日志。Ubuntu 通常写入 /var/log/auth.log,可用以下方式实时查看与过滤:
    • 实时查看:sudo tail -f /var/log/auth.log
    • 过滤 SFTP 会话:sudo grep 'sftp' /var/log/auth.log
    • 使用 systemd 日志:journalctl -u sshd.service | grep sftp
  • 如需更细粒度(例如记录文件读写),可启用 auditd 对 SFTP 根目录做系统调用审计(见下文“进阶审计”)。

二 将 SFTP 日志单独输出到指定文件

  • 编辑 /etc/ssh/sshd_config,为 SFTP 子系统指定日志设施(facility)与级别,并建议提升整体日志级别以便审计:
    • 启用详细日志:LogLevel VERBOSE
    • 单独记录 SFTP:Subsystem sftp internal-sftp -l INFO -f local5
  • 配置 rsyslog 将 local5 单独写入文件:
    • 新建或编辑 /etc/rsyslog.d/50-sftp.conf,加入:local5.* /var/log/sftp.log
    • 重启服务:sudo systemctl restart rsyslog && sudo systemctl restart sshd
  • 验证:sudo tail -f /var/log/sftp.log 应能看到 SFTP 连接与操作记录。

三 使用 logrotate 进行日志轮转

  • 若采用“单独日志文件”方案(/var/log/sftp.log),创建 /etc/logrotate.d/sftp
    • 示例(按大小与保留份数轮转,并压缩与自动重载 rsyslog):
      /var/log/sftp.log {
          daily
          rotate 30
          size 100M
          compress
          delaycompress
          missingok
          notifempty
          create 640 root adm
          sharedscripts
          postrotate
              systemctl reload rsyslog >/dev/null 2>&1 || true
          endscript
      }
      
  • 若沿用系统默认日志(/var/log/auth.log),可编辑 /etc/logrotate.d/sshd(多数系统已存在),按需调整轮转周期与保留份数,例如:
    /var/log/auth.log {
        weekly
        rotate 52
        compress
        missingok
        notifempty
        create 640 root adm
        postrotate
            /etc/init.d/ssh reload > /dev/null
        endscript
    }
    
  • 常用选项说明:
    • daily/weekly/monthly:轮转周期
    • rotate N:保留 N 个旧日志
    • compress:压缩旧日志
    • delaycompress:下次轮转再压缩
    • missingok:日志缺失不报错
    • notifempty:空文件不轮转
    • create:轮转后创建新文件(权限/属主/属组)
    • postrotate ... endscript:轮转后执行的命令(如重载日志服务)
  • 测试与运维:
    • 强制立即轮转:sudo logrotate -f /etc/logrotate.d/sftp
    • 调试模式:sudo logrotate -d /etc/logrotate.d/sftp
    • 查看状态:cat /var/lib/logrotate/status
    • 安装与默认路径:sudo apt-get install logrotate;主配置 /etc/logrotate.conf,服务配置在 /etc/logrotate.d/

四 进阶审计与安全联动

  • 文件级审计(配合 SFTP 使用更精准):
    • 安装:sudo apt-get install auditd audispd-plugins
    • 添加监控规则(对 SFTP 根目录,按需替换路径):sudo auditctl -w /srv/sftp -p wa -k sftp_monitor
    • 查询:sudo ausearch -k sftp_monitor;汇总:sudo aureport -k sftp_monitor
  • 入侵防护联动(基于 auth.log 的失败登录):
    • 安装:sudo apt-get install fail2ban
    • 启用示例(在 /etc/fail2ban/jail.local 或相应 jail 配置中):
      [sftp]
      enabled = true
      port    = sftp
      filter  = sftp
      logpath = /var/log/auth.log
      bantime = 600
      findtime = 600
      maxretry = 3
      
    • 重启 fail2ban:sudo systemctl restart fail2ban

0