SFTP kaydı: bir yol var mı?


91

Sunucu tarafından alınan komutları kaydetmenin bir yolu olup olmadığını merak ediyorum. Dosya transferi ile ilgili komutlar hakkında bilgi içerdiği sürece, tüm SSH komutları olabilir.

Bir SFTP istemcisiyle sorun yaşıyorum ve oluşturan kişi günlükleri istiyor, ancak mevcut günlükleri bulamıyorum.

Hem CentOS hem de OS X’de oturum açmayı düşünüyorum (mümkün olup olmadığından şüphelensem de, her ikisinde de benzer olurdu).


Yanıtlar:


94

OpenSSH 4.4p1 ve üstü sürümleri (en son CentOS 5 sürümünü içermelidir) yerleşik SFTP günlüğe kaydetme özelliğine sahiptir - yalnızca yapılandırmanız gerekir.

Bunu sshd_config'inizde bulun (centos'ta, / etc / ssh / sshd_config dosyasında ):

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

ve değiştirin:

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

BİLGİ, varsayılan olarak gördüklerinle ilgili yalnızca bir ayrıntı seviyesidir; dosya transferleri, izin değişiklikleri vb. Hakkında ayrıntılı bilgi sağlar. Daha fazla bilgiye ihtiyacınız olursa günlük seviyesini buna göre ayarlayabilirsiniz. Çeşitli seviyeler (detay sırasına göre):

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

VERBOSE üzerindeki herhangi bir şey muhtemelen aradığınızdan daha fazla bilgi olabilir, ancak yararlı olabilir.

Sonunda değişiklikleri (centos) güncellemek için SSH servisini yeniden başlatın:

systemctl restart sshd

1
SFTP’yi bu şekilde kaydedebileceğinizi bilmiyordum, ihtiyacım olan bu. Günlükleri nerede saklıyor? /var/log/auth.log?
Rory

4
Bu, sistem günlüğü yapılandırmanıza bağlıdır. INFO loglevelini kullanarak, çoğu varsayılan syslog.conf dosyası bu girişleri / var / log / messages içine yerleştirir.
rvf

4
Bunu dahili sftp sunucusunu kullanarak yapmak mümkün müdür?
Cian

Bu, SFTP için mükemmel bir şekilde çalışıyor, peki ya SCP? Günlük sftp için kopyalanmış olmasına rağmen, scp komutuyla kopyalanan bir dosya için kayıtta herhangi bir giriş bulamadım, ancak sftp
Ale

2
Ubuntu'da bu günlükler varsayılan olarak ayarlanmıştır /var/log/auth.log. Bunları göndermek -f USERiçin bu Subsystemyapılandırma satırına ekleyin /var/log/syslog.
Atma Hesabı Atma

43

Aynı sftp-server günlüğü etrafındaki anahtarlar ayrıca iç-sftp için de çalışır. İşte / etc / ssh / sshd_config dosyasından bir örnek:

Subsystem   sftp    internal-sftp -f AUTH -l INFO

INFO seviyesi ile günlüğe kaydetme etkinleştirilmiş mesajlar / var / log / mesajları altında görünmeye başlayacaktır (en azından Red Hat tabanlı Distros altında):

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
Benim durumumda sadece root için sftp oturumları kaydettiğini ama chroot kullanıcı testim için değil olduğunu keşfettim. Nedenini anlamadım, herhangi bir fikrin var mı?
JohnnyFromBF,

4
/dev/logChroot bölgenizde ihtiyacınız var gibi görünüyor . Böyle bir şey 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. Kullanıcılar hala o / dev / log dosyasına yazma erişimine sahip olacaklar, ancak bir soket olduğu için, erişebildikleri her şeyse çok fazla zarar veremezler sftp.
sch

1
İpucu için teşekkürler. Ancak çalışmasını sağlayamıyorum. Biraz daha spesifik olabilir misin?
user1092608

4
FWIW: Arch Linux Wiki olarak chroot ortamında günlüğünü etkinleştirme üzerinde iyi bir açıklama vardır: wiki.archlinux.org/index.php/SFTP_chroot#Logging
Kaii

0

Yukarıdaki yorumları netleştirmek için:

Bir hapishane (chroot ortamı) kullanarak yapılandırılmış sftp'niz varsa, ek konfigürasyon masrafı olmadan giriş yapamazsınız. Günlük chroot ortamında yazılamaz, bir bağlama bağlaması veya bir soket oluşturmanız gerekir. Bir soket kullanılmasını tavsiye ederim, çünkü syslog-up ve rsyslog tarafından sunulan bir özellik (ve belki daha pek çoğu).

Sistem günlüğü kullananlar için https://wiki.archlinux.org/index.php/SFTP_chroot#Logging adresine bakın . Rsyslog kullananlar için https://wiki.kairaven.de/open/os/linux/sftpssh senin arkadaşın.

Umarım yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.