Как я настраиваю доступ к файлу SFTP, регистрирующийся для OpenSSH?

У меня есть установка SFTP с помощью встроенной sftp-подсистемы OpenSSH с chrooted пользователями.

В былые времена, когда я раньше использовал FTP, я смог видеть, к каким файлам получили доступ пользователи в журналах.

Как я достигаю того же использования OpenSSH/SFTP?

Соответствующие части моего /etc/ssh/sshd_config:

Subsystem sftp internal-sftp
Match group sftponly
    ChrootDirectory /home/%u
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
7
задан 30 June 2014 в 02:19

3 ответа

По умолчанию sshd записывает в системные журналы, с уровнем INFO и syslog-функцией AUTH. Поэтому место для поиска лог-данных из sshd находится в

/var/log/auth.log

Эти настройки по умолчанию могут быть переопределены с помощью директив SyslogFacility и LogLevel. Ниже приведена типичная запись запуска сервера в журнале авторизации.

В большинстве случаев уровень регистрации по умолчанию нормальный.

Далее следует указать только строки лога по ssh

grep 'sshd' /var/log/auth.log

Чтобы быть в безопасности, возьмите последние несколько сотен строк и затем выполните поиск (потому что если лог-файл слишком большой, grep на весь файл будет потреблять больше системных ресурсов, не говоря уже о том, что его запуск займет больше времени)

tail -500 /var/log/auth.log | grep 'sshd'

EDIT:

Из man sshd_config

 LogLevel
         Gives the verbosity level that is used when logging messages from
         sshd(8).  The possible values are: QUIET, FATAL, ERROR, INFO,
         VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3.  The default is INFO.
         DEBUG and DEBUG1 are equivalent.  DEBUG2 and DEBUG3 each specify
         higher levels of debugging output.  Logging with a DEBUG level
         violates the privacy of users and is not recommended.

так что вы можете изменить этот параметр в sshd_config. Но, похоже, он не отслеживает файлы.

Вы можете немного исследовать:

1) Чтобы найти все файлы, которые НЕ принадлежат зарегистрированному пользователю в вашей домашней папке, наберите:

find ~ -type f ! -user $USER

1. 1) Чтобы найти все файлы, которые не принадлежат ни одному законному пользователю (их не должно быть), наберите:

find ~ -type f -nouser

2) Так как файлы в системе имеют три временные метки, называемые mtime (время модификации файла), ctime (время изменения кода и разрешений) и atime (время доступа к файлу), их можно запросить, чтобы узнать, как файлы были модифицированы. Часто обсуждается, какой из них лучше всего использовать, но, возможно, лучший способ узнать, когда файлы были доступны или изменены - это использовать команду find atime и mtime для поиска atime и mtime, с которым вы указали несколько дней назад, и дополнительные найдите опции amin и mmin, с которыми вы указали несколько минут назад. Для каждой из этих команд используются одни и те же переключатели команд: например,-atime 1 будет соответствовать тем файлам, к которым обращались точно 1 день назад; чтобы указать больше или меньше, чем , добавьте + или - соответственно. Примеры ниже могут прояснить все это (укажите -тип d для каталогов):

find ~ -type f -atime 1 
find ~ -type f -amin -23
find ~ -type f -mtime 2    
find ~ -type f -mmin -45

Чтобы объединить мои подходы до сих пор, вы можете ввести следующие команды из вашей домашней папки: первая - поиск файлов, к которым обращается человек, который НЕ является вашим пользователем, а вторая - любые файлы, измененные лицами, не являющимися вашими пользователями, менее двух дней назад.

find ~ -type f -atime -2 ! -user $USER
find ~ -type f -mtime -2 ! -user $USER
7
ответ дан 23 November 2019 в 11:41

В вашем sshd_config (в основном / etc / ssh / sshd_config) попробуйте что-нибудь вроде

Subsystem   sftp    internal-sftp -f AUTH -l INFO

или

Subsystem   sftp    internal-sftp -l INFO

Я думаю, что это это уровни ведения журнала:

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

Если вам нужны более подробные сведения о журнале, увеличьте уровень ведения журнала

4
ответ дан 23 November 2019 в 11:41

Вы можете использовать оболочку вокруг исполняемого файла sftp-сервера как такового:

`    
#!/bin/sh
# sftpd wrapper script for executing pre/post session actions

# pre session actions and logging here
SOURCE_IP=${SSH_CLIENT%% *}
MSG_SESSION_START="user $LOGNAME session start from $SOURCE_IP"
logger -p local5.notice -t sftpd-wrapper -i "$MSG_SESSION_START"

# start actual SFTP session
/usr/libexec/openssh/sftp-server

# add post session actions here
`

... А затем скорректируйте конфигурацию syslogd.conf, чтобы направить local5.notice в соответствующий файл журнала, как таковые:

local5.*                                                /var/log/sftpd.log

И, наконец, чтобы увидеть, какие файлы передаются, вы можете настроить их глобально в sshd_config; или для каждого пользователя, изменив приведенный выше сценарий, просто добавив следующую настройку, чтобы подпроцесс sftp регистрировал передаваемые файлы:

/usr/libexec/openssh/sftp-server -f local5 -l info

надеюсь, это поможет! : p

2
ответ дан 23 November 2019 в 11:41

Другие вопросы по тегам:

Похожие вопросы: