sftp сервер в chroot с ведением логов
Иногда возникает необходимость предоставить некоторому кругу лиц sftp доступ, но без возможности подключиться по ssh и ходить по основной файловой системе, читая файлы типа /etc/passwd, обычно доступные всем для чтения. В этом случае можно создать chroot-окружение для этих пользователей, изолировав их в отдельной "песочнице" и не давай выйти за ее пределы. Вот как это делается:
Создание chroot
Первое и самое сложное что необходимо сделать - создать директорию (например /home/chroot), содержащую все необходимые файлы (бинарники и библиотеки) для работы sftp в ней. Можно сделать это вручную копируя файлы из основной системы, но гораздо эффективнее сделать это с помощью jailkit. После установки тем или иным способом можно приступить к созданию директории:
mkdir /home/chroot chown root:root /home/chroot chmod 0755 /home/chroot jk_init -j /home/chroot basicshell jk_init -j /home/chroot sftp jk_init -j /home/chroot scp jk_init -j /home/chroot logbasics
После этого можно проверить chroot:
chroot /home/chroot ls / ls /home exit
Создание пользователей
Тут есть небольшая хитрость: нам нужно чтобы пользователь присутствовал в passwd как основной системы, так и chroot. Кроме того, нужно чтобы его домашняя директория также была доступна и там и там.
Вот как это делал я:
# создаем пользователя jailtest useradd -m jailtest # перемещаем его домашнюю директорию в chroot, а в основном /home/ делаем ссылку на нее: mkdir -p /home/chroot/home mv /home/jailtest /home/chroot/home/ ln -s /home/chroot/home/jailtest /home/ # добавляем запись о пользователе в passwd chroot-окружения: grep jailtest /etc/passwd >> /home/chroot/etc/passwd
pam_chroot
Теперь "запрем" пользователей с помощью pam_chroot. В файле /etc/security/chroot.conf:
jailtest /home/chroot/
Итак, на этом этапе chroot уже работает, в чем можно убедиться зайдя пользователем jailtest:
su - jailtestОтключение интерактивного входа
Однако скорее всего вам нужно запретить интерактивный вход, оставив только sftp и scp. Существуют разные способы сделать это, наиболее удобным мне показалось использование rssh - специальной командной оболочки, позволяющей запретить интерактивный логин, разрешив использование sftp.
Устанавливаем rssh, открываем его конфигурационный файл /etc/rssh.conf и убеждаемся что строчки
allowscp allowsftp
раскомментированы, а все остальные закомментированы. rssh также умеет самостоятельно делать chroot (без pam_chroot), но я не использовал эту возможность, поэтому оставил опцию chrootpath закомментированой.
Теперь нужно поменять оболочку с /bin/bash на /usr/bin/rssh в файлах /etc/passwd и /home/chroot/etc/passwd. В дальнейшем можно указывать /usr/bin/rssh в качестве оболочки сразу при создании пользователя.
Кроме того, нужно скопировать rssh со всеми необходимыми ему библиотеками и конфигурационными файлами в chroot. В этом нам снова поможет jailkit:
jk_cp -j /home/chroot/ /usr/bin/rssh cp /etc/rssh.conf /home/chroot/etc/
Проверяем:
su - jailtest This account is restricted by rssh. Allowed commands: scp sftp If you believe this is in error, please contact your system administrator.
Логирование
Остался последний штрих: хорошо было бы логировать все что происходит с нашим sftp сервером. Делается это так:
Во-первых, включаем логирование в sshd_config - находим строчку описания подсистемы sftp и дополняем опциями "-l INFO -f LOCAL1", стока должна выглядеть так:
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO -f LOCAL1
Далее необходимо создать лог-устройство в chroot и указать syslog'у что нужно прослушивать и его.
cd /home/chroot mknod dev/log c 21 5
Для того чтобы syslog прослушивал и это устройство, нужно запускать syslogd с опцией -a /home/jail/dev/log. В rhel этого можно добиться отредактировав файл /etc/sysconfig/syslog:
# Options to syslogd # -m 0 disables 'MARK' messages. # -r enables logging from remote machines # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-m 0 -a /home/chroot/dev/log"
Ну и последний штрих: чтобы отделить сообщения sftp от других, добавим в /etc/syslog.conf следущую строчку:
# sftp logging local1.* /var/log/sftp.log

Как-то мне хватало вот такой
Как-то мне хватало вот такой настройки в sshd.conf
Match Group sftponly
ChrootDirectory /home/sftponly
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Пользователей, естественно нужно поместить в группу sftponly, а их домашние папки перенести в /home/sftponly
Проще.
А логи он и так в auth.log пишет.
К сожалению, с некоторыми
К сожалению, с некоторыми версиями sshd (4.3, которых в rhel5) это не работает.
Думаю вам бы sshd обновить
Думаю вам бы sshd обновить чтоли.
Аффтар похоже нашел и перевел
Аффтар похоже нашел и перевел хавтушку для FreeBSD 4.* ... сто лет в обед как это всё умеет стандартный sshd
см. выше
см. выше
proftpd+sftp
добавлю - в последней версии proftpd появилась поддержка sftp.
moncler
Moncler Gamme Bleu series seems to be bound up with bike culture.Moncler This not only shows in its design but also the pattern printed in the clothes. In this series, designer put in leggings to match some clothes. herve leger This point arouses great controversy in public. It is common that ladies wear leggings to match their long shirts or short dresses.Moncler Jackets If a man put on a legging, he looks a little feminization.Hermes Birkin Somebody do not agree with this. They thought men also should be fashionable.Buy Moncler Wearing leggings is not the right of ladies, but also the fashion of men`s.Christian Louboutin In recent years, many clothes have been more neutralize. Men are paying more and more attention to their dressing.Moncler Clothing Creations in men`s dressing are more and more diversified. Fashion is such kind of thing that at first it will arouse controversy and with acceptance from more and more people it will be popular.Herve Leger dresses Maybe one day there will be more neutralized clothes that men and women can try together.Christian Louboutin Pumps
Отправить комментарий