การบันทึก SFTP: มีวิธีหรือไม่


91

ฉันสงสัยว่ามีวิธีการบันทึกคำสั่งที่ได้รับจากเซิร์ฟเวอร์ สามารถเป็นคำสั่ง SSH ทั้งหมดตราบใดที่มีข้อมูลเกี่ยวกับคำสั่งที่เกี่ยวข้องกับการถ่ายโอนไฟล์

ฉันมีปัญหากับไคลเอนต์ SFTP และผู้สร้างกำลังขอบันทึก แต่ฉันไม่พบบันทึกที่มีอยู่

ฉันกำลังมองหาที่จะเข้าสู่ระบบทั้งหรือ CentOS หรือ OS X (แม้ว่าฉันสงสัยว่ามันเป็นไปได้มันจะคล้ายกันทั้งสอง)


คำตอบ:


94

OpenSSH เวอร์ชั่น 4.4p1 ขึ้นไป (ซึ่งควรรวมรุ่นล่าสุดกับ CentOS 5) มีความสามารถในการบันทึก SFTP ในตัว - คุณเพียงแค่ต้องกำหนดค่า

ค้นหาสิ่งนี้ใน sshd_config ของคุณ (ใน centos, ไฟล์/ etc / ssh / sshd_config ):

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

และเปลี่ยนเป็น:

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

INFO เป็นเพียงรายละเอียดในระดับเดียวกับสิ่งที่คุณเห็นตามค่าเริ่มต้น - ให้ข้อมูลโดยละเอียดเกี่ยวกับการถ่ายโอนไฟล์การเปลี่ยนแปลงการอนุญาต ฯลฯ หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถปรับระดับการบันทึกได้ ระดับต่าง ๆ (เรียงตามลำดับรายละเอียด) คือ:

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

ข้อมูลใด ๆ ที่เกี่ยวกับ VERBOSE อาจเป็นข้อมูลมากกว่าที่คุณกำลังมองหา แต่อาจมีประโยชน์

ในที่สุดเริ่มบริการ SSH เพื่อปรับปรุงการเปลี่ยนแปลง (centos):

systemctl restart sshd

1
ฉันไม่ทราบว่าคุณสามารถบันทึก SFTP เช่นนั้นได้นั่นคือสิ่งที่ฉันต้องการ เก็บบันทึกไว้ที่ไหน /var/log/auth.log?
Rory

4
ขึ้นอยู่กับการกำหนดค่า syslog ของคุณ ใช้ INFO loglevel ค่าเริ่มต้นส่วนใหญ่ของ syslog.conf วางรายการเหล่านั้นไว้ใน / var / log / Messages
rvf

4
เป็นไปได้ไหมที่จะทำเช่นนี้โดยใช้เซิร์ฟเวอร์ sftp ภายใน?
เซียน

มันใช้งานได้ดีกับ SFTP แต่แล้ว SCP ล่ะ? ฉันไม่พบรายการใด ๆ ในล็อกสำหรับไฟล์ที่คัดลอกด้วยคำสั่ง scp แม้ว่าไฟล์บันทึกนั้นสำเร็จสำหรับ sftp
Ale

2
บน Ubuntu, /var/log/auth.logบันทึกเหล่านี้เริ่มต้น เพิ่ม-f USERที่สายการกำหนดค่าที่จะส่งพวกเขาไปSubsystem /var/log/syslog
ทิ้งบัญชี

43

สวิตช์เดียวกันรอบ ๆ การบันทึกสำหรับ sftp-server ยังทำงานได้กับ internal-sftp นี่คือตัวอย่างจาก / etc / ssh / sshd_config ของฉัน:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

ด้วยข้อความที่เปิดใช้งานการบันทึกระดับข้อมูลจะเริ่มแสดงภายใต้ / var / log / ข้อความ (อย่างน้อยภายใต้ Distros ตาม 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
ฉันค้นพบว่าในกรณีของฉันจะบันทึกเฉพาะเซสชัน SFTP สำหรับรูท แต่ไม่ใช่สำหรับการทดสอบผู้ใช้ที่ chrooted ฉันไม่เข้าใจว่าทำไมคุณมีความคิดใด ๆ
JohnnyFromBF

4
ดูเหมือนว่าคุณต้องการ/dev/logในพื้นที่ chroot ของคุณ สิ่งที่ชอบ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ผู้ใช้จะยังคงสามารถเข้าถึงการเขียนนั้นไปยัง / dev / log แต่เนื่องจากเป็นซ็อกเก็ตพวกเขาไม่สามารถทำอันตรายได้มากหากพวกเขาสามารถเข้าถึงsftpได้
sch

1
ขอบคุณสำหรับคำใบ้ อย่างไรก็ตามฉันไม่สามารถใช้งานได้ คุณจะเจาะจงเจาะจงมากกว่านี้หน่อยได้ไหม?
user1092608

4
FWIW: ใน ArchLinux Wiki มีคำอธิบายที่ดีเกี่ยวกับวิธีการเปิดใช้งานการบันทึกในสภาพแวดล้อม chroot: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

เพื่อชี้แจงความคิดเห็นข้างต้น:

หากคุณได้กำหนดค่า sftp โดยใช้คุก (สภาพแวดล้อม chroot) คุณจะไม่สามารถเข้าสู่ระบบได้หากไม่มีการกำหนดค่าเพิ่มเติม ไม่สามารถเขียนบันทึกในสภาพแวดล้อม chroot คุณต้องสร้างการเชื่อมโยงหรือซ็อกเก็ต ฉันอยากจะแนะนำให้ใช้ซ็อกเก็ตเพราะมันเป็นคุณสมบัติที่จัดส่งโดย syslog-ng เช่นเดียวกับ rsyslog (และอาจจะมากขึ้น)

สำหรับผู้ที่กำลังใช้ syslog-ng, มีลักษณะที่https://wiki.archlinux.org/index.php/SFTP_chroot#Logging สำหรับผู้ที่ใช้ rsyslog https://wiki.kairaven.de/open/os/linux/sftpsshเป็นเพื่อนของคุณ

หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.