Вопрос или проблема
Я активировал сервер openssh на Windows Server 2019. SFTP работает хорошо, но я не могу заставить его записывать логи в файл, я активировал ведение файлового журнала в sshd_config вот так:
# Ведение журналов
SyslogFacility LOCAL0
LogLevel INFO
и также для подсистемы sftp:
Subsystem sftp sftp-server.exe -l INFO
Я получаю записи в файл
3876 2020-09-23 14:26:50.392 Сервер слушает на :: порт 22.
3876 2020-09-23 14:26:50.393 Сервер слушает на 0.0.0.0 порт 22.
6528 2020-09-23 14:28:04.841 Принят пароль для xxxxxxxxx от xxxxxxxxxx порт 62200 ssh2
12152 2020-09-23 14:31:23.815 Принят пароль для xxxxxxxxxxxx от xxxxxxxxxxx порт 58256 ssh2
9392 2020-09-23 14:31:24.195 Получено отключение от xxxxxxxxxxx порт 58256:11: отключено пользователем
9392 2020-09-23 14:31:24.195 Отключено от xxxxxxxx порт 58256
но все остальное (какие файлы передаются и т.д.) уходит в журнал событий Windows, что неудобно. Есть ли способ полностью вести журнал в файл? Также было бы здорово, если бы местоположение этого файла можно было изменить (в данный момент он находится в каталоге ssh в %ProgramData%)
Опции ведения журналов предназначены “только” для службы sshd. Мой sshd_config выглядит примерно так:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Subsystem sftp internal-sftp -f LOCAL0 -l VERBOSE
AllowUsers user1 user2 user3
Match User *
ChrootDirectory "D:\FTPROOT\LocalUser\%u"
X11Forwarding no
AllowTcpForwarding no
AllowAgentFordwarding no
ForceCommand internal-sftp -f LOCAL0 -l VERBOSE
Я не установил параметры для общего ведения журналов, поэтому sshd по умолчанию записывает в журнал событий Windows с уровнем INFO. Если вы используете ForceCommand (только SFTP), вам нужно указать ведение журнала там, поскольку, похоже, оно перезаписывает параметры из подсистемы sftp…
В моем случае, sftp-server по умолчанию ведет журнал по адресу C:\ProgramData\ssh\logs\sftp-server.log
Внимание: Только SYSTEM и Администраторы могут иметь доступ на запись к каталогу журналов, иначе служба больше не запустится. Доступ на чтение, похоже, также приемлем для других пользователей.
Надеюсь, это поможет, я “разобрался с этим” совсем недавно.
Ответ или решение
Конфигурация логирования SFTP с использованием OpenSSH на Windows Server 2019
Настройка OpenSSH сервера для работы с SFTP на Windows Server 2019 предоставляет удобный вариант для безопасной передачи файлов. Однако, как вы заметили, вопрос логирования действий SFTP может вызывать определенные сложности. В данном ответе я объясню, как правильно настроить логирование SFTP в файл, а также изменение пути к логам. Это обеспечит вам более удобный доступ к данным о сеансах SFTP.
1. Настройка конфигурации для логирования SFTP
Для начала, необходимо убедиться, что ваши параметры в файле sshd_config настроены должным образом. Вы уже частично настроили их, но некоторые моменты стоит уточнить:
# Общая настройка для аутентификации
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# Настройка подсистемы SFTP
Subsystem sftp internal-sftp -f LOCAL0 -l VERBOSE
# Ограничение пользователей
AllowUsers user1 user2 user3
# Секция Match для пользователей
Match User *
ChrootDirectory "D:\FTPROOT\LocalUser\%u"
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
ForceCommand internal-sftp -f LOCAL0 -l VERBOSE
2. Логирование в файл
Чтобы полностью контролировать логирование SFTP, убедитесь, что вы используете следующий параметр:
Subsystem sftp internal-sftp -f LOCAL0 -l VERBOSE
Этот параметр гарантирует, что все логи будут отправляться в локальную подсистему (LOCAL0) с уровнем деталей, равным VERBOSE. Данный уровень предоставляет больше информации о том, какие файлы передаются.
3. Изменение пути к логам
Логи SFTP по умолчанию сохраняются в C:\ProgramData\ssh\logs\sftp-server.log. Если вы хотите изменить этот путь, вы можете использовать следующий совет:
- Создайте новую директорию, где вы хотите хранить логи.
- Далее, в конфигурационном файле sshd_config необходимо указать полное имя файла с новым путем в команде запуска службы:
Для этого следует модифицировать код логирования на уровне Windows:
# Example of modifying logging
LogLevel VERBOSE
SyslogFacility LOCAL0
Затем вы можете переместить содержимое из старого файла в новый, чтобы сохранить старые логи, если это необходимо.
4. Права доступа
Обратите внимание, что только пользователи с правами администратора (или SYSTEM) могут записывать в директорию логов. Убедитесь, что согласно требованиям безопасности, вы предоставили права на запись в эту директорию только необходимым пользователям.
Заключение
Следуя этим рекомендациям, вы сможете настроить OpenSSH SFTP для более удобного логирования действий пользователей и файлов, что будет способствовать улучшению мониторинга и анализа вашего сервера. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за поддержкой.