Назад | Перейти на главную страницу

Мониторинг копий файлов с помощью SCP, выполненного через SSH

Есть ли способ вести журнал файлов, скопированных с помощью SCP? Я администрирую сервер, который содержит некоторые файлы, которые следует отслеживать (в определенной папке и ее подпапках), поэтому, когда кто-то копирует их через SSH, процесс копирования должен регистрироваться.

Я подумал о том, чтобы заглянуть в историю команд Bash пользователей и найти команды, которые начинаются с scp, но это вопиющее вторжение в частную жизнь, и пользователям очень легко удалить эту историю (даже без злого умысла).

Кто-нибудь знает способ для этого? Я могу создать веб-интерфейс для сервера с именами пользователей и паролями, и тогда будет легко регистрировать загрузки, но меня интересует «голое железо» решение, если оно есть.

РЕДАКТИРОВАТЬ: Я просмотрел параметры ведения журнала SSHD, такие как FascistLogging или ведение журнала отладки, но они не казались очень подходящими. Действительно ли они решение?

РЕДАКТИРОВАТЬ 2: Я начинаю полагать, что этот вопрос должен быть не о переполнении стека, а скорее о сбое сервера ... Что мне делать?

я хотел бы использовать Incron. Он использует ядро ​​Linux inotify подсистема, и если какое-либо отслеживаемое дерево каталогов / файл будет изменено, вы можете выполнить все, что захотите. В incrontab формат файла очень простой, например

/your/directory IN_MODIFY /usr/local/bin/log_file_modifications.sh $@/$#

будет бежать /usr/local/bin/log_file_modifications.sh каждый раз, когда что-то изменяется в /your/directory дерево каталогов, вызывая скрипт с полным путем ($@ аргумент) и файл, который был изменен ($# аргумент).

Ваш сценарий может быть таким же простым, как

#!/bin/bash
logger -t modification_stalker "Yo dawg, these files got modified $1 $2 ..." 

Теперь я понимаю, что это только sftp, а не scp, как первоначально запрашивалось, однако я оставляю ответ здесь, чтобы помочь людям.

Я пытался найти ответ на этот вопрос, так что вот оно.

Во-первых, вам нужно включить ведение журнала подпрограммы sftp, которую использует ssh:

В / etc / ssh / sshd_config

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

Затем перезапустите sshd, но ваш конкретный дистрибутив делает это:

service sshd restart

Теперь вы должны увидеть сообщения журнала scp, появляющиеся в чем-то вроде / var / log / messages или, возможно, /var/log/auth.log в зависимости от настроек вашего системного журнала.

Я использую syslog-ng и хочу, чтобы мои журналы передач sftp были отделены от остальных журналов ssh.

В /etc/syslog-ng/syslog-ng.conf:

#sftp configuration
destination sftp { file("/var/log/sftp.log"); };
filter f_sftp { program("sftp-server"); };
log { source(s_src); filter(f_sftp); destination(sftp); };

Это означает, что журналы теперь идут в /var/log/sftp.log - вам может потребоваться отредактировать программу ("sftp-server"), чтобы она соответствовала той программе, которую вы используете в SSH, поскольку есть различные варианты

Наконец, чтобы журналы не попадали в журнал ssh, мы их отфильтровываем:

        filter f_auth { facility(auth, authpriv) and not filter(f_debug) and not filter(f_sftp); };

Перезапустите syslog-ng (или ваш демон syslog): * Когда я попытался просто перезагрузить, изменения не помогли, мне пришлось перезапустить его.

service syslog-ng restart

Параметр sshd здесь бесполезен. scp просто запустите что-то вроде 'scp -t - dest_file' на удаленном хосте.

Самый простой способ - создать оболочку вокруг реальной программы scp для регистрации аргументов командной строки.

OpenSSH поддерживает регистрацию scp. Итак, если вы включите его VERBOSE вы даже увидите каталоги, которые прошли ваши клиенты.

Посмотреть журнал проверки

/var/log/auth.log

Вы можете настроить уровень подробного ведения журнала для sshd и использовать некоторые программы аудита, например auditd для создания отчетов на основе сообщений журнала.