
Я установил jailkit на свой сервер CentOS 5.8 и настроил его в соответствии с онлайн-руководствами, которые я нашел. Вот команды, которые были выполнены как root:
mkdir /var/jail
jk_init -j /var/jail extshellplusnet
jk_init -j /var/jail sftp
adduser testuser; passwd testuser
jk_jailuser -j /var/jail testuser
Затем я отредактировал его, /var/jail/etc/passwd
изменив оболочку входа в систему на ту, testuser
которая /bin/bash
предоставит им доступ к полной оболочке bash через SSH.
Далее я отредактировал /var/jail/etc/jailkit/jk_lsh.ini
так, чтобы это выглядело следующим образом (не уверен, что это правильно)
[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp
Пользователь testuser может подключаться через SSH и может просматривать только каталог chroot-окружения, а также может входить в систему через SFTP, однако вся файловая система видна и может быть просмотрена.
Вывод SSH:
> ssh testuser@server
Password:
Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x
bash-3.2$ pwd
/home/testuser
Вывод SFTP:
> sftp testuser@server
Password:
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser
Что можно сделать, чтобы заблокировать доступ к джейлу по протоколу SFTP?
решение1
Хотя я определенно чувствую боль doublesharp (только что столкнулся с этой проблемой), ответ doublesharp здесь не следует использовать (небезопасно). Проблема здесь в том, что internal-sftp sshd выполняется до того, как может быть выполнен /usr/sbin/jk_chrootsh, ЧТО НУЖНО ВЫПОЛНИТЬ ПО СООБРАЖЕНИЯМ БЕЗОПАСНОСТИ. Поэтому все, что вам нужно сделать, чтобы исправить эту проблему, это убедиться, что ваш файл /etc/ssh/sshd_config содержит эту строку...
Subsystem sftp /usr/lib/openssh/sftp-server
... а НЕ эта строка ...
Subsystem sftp internal-sftp
А также убедитесь, что вы не делаете никаких сопоставлений пользователей/групп в этом файле. Основная идея здесь в том, что если вы собираетесь использовать jailkit для карантина пользователей в системе Linux, то вам нужно принудительно запустить всех пользователей через /usr/sbin/jk_chrootsh, который может запустить собственную функциональность sftp, если это необходимо.
После внесения изменений в /etc/ssh/sshd_config обязательно перезапустите sshd (способ может различаться в зависимости от вашей системы).
решение2
Буду рад, если меня поправят, если возникнут какие-либо проблемы, но следующая конфигурация, похоже, сработала.
Изменил пользователя в/etc/passwd
(нет /var/jail/etc/passwd
), который был изменен jailkit:
Оригиналtestuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
Измененныйtestuser:503:503::/home/testuser:/bin/bash
Добавлена конфигурация для /etc/ssh/sshd_config
:
Match Group testuser
ChrootDirectory /var/jail/
Теперь при входе через SSH
или SFTP
пользователь ограничен /var/jail
и ниже и по умолчанию использует домашний каталог в/var/jail/home/testuser