У меня есть сервер Red Hat 5.4 с openssh OpenSSH_4.3p2, и я пытался настроить журналы scp / sftp на моем сервере, но у меня возникли некоторые проблемы.
Я следовал указаниям в этом другой пост. Они отлично работают, если пользователи предпочитают передавать файлы с помощью pscp или клиента SFTP, такого как cyberduck, filezilla, winscp и т. Д. В таких случаях я могу узнать дерево каталогов, по которому осуществлялась навигация.
Однако, если пользователи выбирают использование rsync (с scp в качестве протокола) или если они явно вызывают команду scp, единственное, что регистрируется, - это событие входа / выхода. Фактическое дерево, используемое для передачи файлов, не отображается в журнале.
Есть ли способ отключить scp, все еще разрешая sftp? Или есть способ заставить команды scp вести себя как sftp?
Возможно, этой проблемы нет в более поздних портах openssh. Однако, поскольку Red Hat не будет выпускать дальнейшие обновления для моей версии ОС 5.4 (и мы не хотим обновлять сервер), я застрял на том, что у меня есть.
Какие-либо предложения ?
Я не уверен насчет регистрации SCP. Я разбирался в этом. Все scp
это звонок scp
на другом конце в несколько другом режиме. sshd
должен иметь возможность регистрировать то, что он выполняет. Из код это выглядит как sshd
потребности LogLevel=DEBUG
чтобы написать exec, но он не выводится для меня на DEBUG или на любом более высоком уровне (6.1p1). К сожалению, однажды sshd
выполнил то, что исполняемый двоичный файл может делать все, что хочет, поэтому было бы полезно, если бы двоичный файл также реализовал ведение журнала. Нет настоящего журнала в scp
так что потребуется какой-то патч.
Это немедленно приводит мой мозг к тому, чтобы написать обертку для scp
хотя бы получить некоторую информацию.
mv /usr/bin/scp /usr/bin/scp.ori; touch /usr/bin/scp; chmod 755 /usr/bin/scp;
Затем введите следующее /usr/bin/scp
#!/bin/sh
logger -i -p auth.info "scp ran with [$*]"
/usr/bin/scp.ori "$@"
Сценарий будет уничтожен выпусками, хотя он немного хитрый. Вы действительно видите только одну сторону команды scp, которая может быть немного краткой (например, scp -r user@host:/home/user/ ./
является -r -f /home/matt/
на хосте)
Также стоит отметить, что если у людей есть доступ к оболочке, они могут копировать все, что захотят, без использования scp или sftp.
<конец редактирования>
Можно заставить Subsytem
на логин. Следующее предназначено для членов группы sftponly
что я хочу иметь возможность использовать sftp только в определенном месте chroot, чтобы у их пользователей была оболочка /usr/sbin/nologin
. Я не думаю, что тебе понадобится больше, чем ForceCommand
в конфиге sshd.
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /pub/user/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes
Надеюсь, вы сможете добавить свой журнал и вас не будет.