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

Можно ли принудительно использовать SFTP, а не разрешать откат SCP?

У меня есть сервер 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

Надеюсь, вы сможете добавить свой журнал и вас не будет.