Jailkit не блокирует SFTP, работает для SSH

Jailkit не блокирует SFTP, работает для SSH

Я установил 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

Связанный контент