У меня есть установка 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
По умолчанию 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
В вашем 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
Если вам нужны более подробные сведения о журнале, увеличьте уровень ведения журнала
Вы можете использовать оболочку вокруг исполняемого файла 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