Ghi nhật ký SFTP: có cách nào không?


91

Tôi tự hỏi nếu có một cách để ghi lại các lệnh mà máy chủ nhận được. Nó có thể là tất cả các lệnh SSH, miễn là nó bao gồm thông tin về các lệnh liên quan đến truyền tệp.

Tôi gặp sự cố với ứng dụng khách SFTP và người tạo đang yêu cầu nhật ký, nhưng tôi không thể tìm thấy bất kỳ nhật ký hiện có nào.

Tôi đang tìm cách đăng nhập vào cả hai hoặc CentOS hoặc OS X (mặc dù tôi nghi ngờ nếu có thể, nó sẽ giống nhau trên cả hai).


Câu trả lời:


94

Phiên bản OpenSSH 4.4p1 trở lên (bao gồm phiên bản mới nhất với CentOS 5) có khả năng ghi nhật ký SFTP được tích hợp - bạn chỉ cần định cấu hình nó.

Tìm cái này trong sshd_config của bạn (tính bằng centos, tệp / etc / ssh / sshd_config ):

Subsystem       sftp    /usr/libexec/openssh/sftp-server

và thay đổi nó thành:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO

INFO chỉ là một cấp độ chi tiết so với những gì bạn nhìn thấy theo mặc định - nó cung cấp thông tin chi tiết về chuyển tập tin, thay đổi quyền, v.v. Nếu bạn cần thêm thông tin, bạn có thể điều chỉnh mức độ nhật ký cho phù hợp. Các cấp độ khác nhau (theo thứ tự chi tiết) là:

QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3

Bất cứ điều gì qua ĐỘNG TỪ có lẽ là nhiều thông tin hơn bạn đang tìm kiếm, nhưng nó có thể hữu ích.

Cuối cùng khởi động lại dịch vụ SSH để cập nhật các thay đổi (centos):

systemctl restart sshd

1
Tôi không biết bạn có thể đăng nhập SFTP như thế, đó là những gì tôi cần. Nơi nào nó lưu trữ các bản ghi? /var/log/auth.log?
Rory

4
Nó phụ thuộc vào cấu hình nhật ký hệ thống của bạn. Sử dụng loglevel INFO, hầu hết các syslog.conf mặc định sẽ đặt các mục đó trong / var / log / message.
rvf

4
Có thể làm điều này bằng cách sử dụng máy chủ sftp nội bộ?
Cian

Điều này hoạt động hoàn hảo cho SFTP, nhưng SCP thì sao? Tôi đã không tìm thấy bất kỳ mục nào trong nhật ký cho một tệp được sao chép bằng lệnh scp, mặc dù nhật ký đã thành công cho sftp
Ale

2
Trên Ubuntu, các bản ghi này mặc định /var/log/auth.log. Thêm vào dòng cấu hình -f USERđó Subsystemđể gửi chúng đến /var/log/syslog.
Vứt bỏ tài khoản

43

Các chuyển đổi tương tự xung quanh việc ghi nhật ký cho sftp-server cũng hoạt động cho Internal-sftp. Đây là một ví dụ từ / etc / ssh / sshd_config:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

Với các thông báo ghi nhật ký cấp INFO sẽ bắt đầu hiển thị dưới / var / log / tin nhắn (ít nhất là trong các Phân phối dựa trên Red Hat):

May 27 05:58:16 test-server sshd[20044]: User child is on pid 20049
May 27 05:58:16 test-server sshd[20049]: subsystem request for sftp by user test-user
May 27 05:58:16 test-server internal-sftp[20050]: session opened for local user test-user from [192.168.1.1]
May 27 05:58:16 test-server internal-sftp[20050]: received client version 3
May 27 05:58:16 test-server internal-sftp[20050]: realpath "."
May 27 05:58:21 test-server internal-sftp[20050]: opendir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: closedir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: lstat name "/home/test-user/upload"
May 27 05:58:21 test-server internal-sftp[20050]: realpath "/home/test-user/upload/"
May 27 05:58:21 test-server internal-sftp[20050]: stat name "/home/test-user/upload"
May 27 05:58:24 test-server internal-sftp[20050]: open "/home/test-user/upload/test-file.pdf" flags WRITE,CREATE,TRUNCATE mode 0664
May 27 05:58:25 test-server internal-sftp[20050]: close "/home/test-user/upload/test-file.pdf" bytes read 0 written 1282941

2
Tôi phát hiện ra rằng trong trường hợp của tôi, nó chỉ ghi lại các phiên sftp cho root chứ không phải cho bài kiểm tra người dùng bị chroot của tôi. Tôi không hiểu tại sao, bạn có ý tưởng gì không?
JohnnyFromBF

4
Có vẻ như bạn cần /dev/logtrong khu vực chroot của bạn. Một cái gì đó giống như sudo mkdir /chrooted/area/dev, sudo touch /chrooted/area/dev/log, sudo chmod 511 /chrooted/area/dev, sudo chattr +i /chrooted/area/dev, sudo mount --bind /dev/log /chrooted/area/dev/log. Người dùng sẽ vẫn có quyền truy cập ghi vào / dev / log đó, nhưng vì nó là một ổ cắm, họ không thể làm hại nhiều nếu tất cả những gì họ có quyền truy cập là sftp.
sch

1
Cảm ơn đã gợi ý. Tôi dường như không thể làm cho nó hoạt động, tuy nhiên. Bạn có nói rõ hơn được không?
dùng1092608

4
FWIW: Trong ArchLinux Wiki có một mô tả hay về cách kích hoạt đăng nhập trong môi trường chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

Để làm rõ các ý kiến ​​trên:

Nếu bạn đã cấu hình sftp bằng cách sử dụng một nhà tù (môi trường chroot), bạn không thể đăng nhập mà không cần thêm cấu hình. Nhật ký không thể được ghi trong môi trường chroot, bạn cần tạo liên kết gắn kết hoặc ổ cắm. Tôi khuyên bạn nên sử dụng ổ cắm, vì đây là một tính năng được cung cấp bởi syslog-ng cũng như rsyslog (và có thể nhiều hơn nữa).

Đối với những người đang sử dụng syslog-ng, hãy xem https://wiki.archlinux.org/index.php/SFTP_chroot#Logging . Đối với những người đang sử dụng rsyslog, https://wiki.kairaven.de/open/os/linux/sftpssh là bạn của bạn.

Mong rằng sẽ giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.