Ограничение доступа SFTP пользователя или SSH Chroot
По умолчанию все SFTP пользователи в Linux не ограничены в правах на просмотр директорий выше своей домашней директории. Если нужно ограничить пользователя только своей домашней директорией для этого можно воспользоваться пакетом lshell
1. Устанавливаем пакет lshell
Для Debian/Ubuntu
Для CentOS
Если в системе нет пакета lshell то качаем и устанавливаем его с git
После установки в системе должен появиться новый шелл, проверяем его версию
Конфигурационный файл нового шелла находится в файле /etc/lshell.conf
По умолчанию доступно несколько команд:
Добавляйте команды которые хотите разрешить пользователю.
Если требуется предоставить пользователю доступ по SFTP протоколу то нужно включить эту опцию:
Также нужно установить пакет mysecureshell командой
В файле конфигурации ssh службы /etc/ssh/sshd_config
найти строчку:
и заменить ее на
этим мы сменим систему работы с sftp с openssh на mysecureshell
В конфигурационный файл mysecureshell который находится по адресу /etc/ssh/sftp_config добавить следующие настройки для группы sftp (предварительно ее создав):
Создание группы SFTP
Посмотреть номер группы можно командой
В ответ получим: sftp:x:1006:
Пользователя нужно добавить в эту созданную группу в файле /etc/passwd
Перегружаем службы mysecureshell и ssh командами:
2. Создаем нового пользователя командой:
/home/testuser — домашняя директория пользователя testuser может быть любой
Задаем пароль новому пользователю:
3. Меняем shell для нашего пользователя (или любого другого который есть в системе) на lshell.
Открываем файл /etc/passwd и в строке пользователя меняем shell с /bin/bash на /usr/bin/lshell
В итоге должно получиться:
для проверки можете зайти под созданным пользователем командой
в ответ получите:
You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
и перейдете в корневую директорию пользователя testuser, при попытке подняться вверх по дереву или перейти в любую другую директорию выше корневой вы получите:
cd…
*** forbidden path:
1. Устанавливаем пакет lshell
Для Debian/Ubuntu
apt-get install lshell
Для CentOS
yum install lshell
Если в системе нет пакета lshell то качаем и устанавливаем его с git
git clone https://github.com/ghantoos/lshell.git
cd lshell
python setup.py install --no-compile --install-scripts=/usr/bin/
После установки в системе должен появиться новый шелл, проверяем его версию
lshell --version
lshell-0.9.18 - Limited Shell
Конфигурационный файл нового шелла находится в файле /etc/lshell.conf
По умолчанию доступно несколько команд:
allowed : ['ls', 'echo','ll']
Добавляйте команды которые хотите разрешить пользователю.
Если требуется предоставить пользователю доступ по SFTP протоколу то нужно включить эту опцию:
sftp : 1
Также нужно установить пакет mysecureshell командой
apt-get install mysecureshell
В файле конфигурации ssh службы /etc/ssh/sshd_config
найти строчку:
Subsystem sftp /usr/lib/openssh/sftp-server
и заменить ее на
Subsystem sftp /usr/bin/mysecureshell -c sftp-server
этим мы сменим систему работы с sftp с openssh на mysecureshell
В конфигурационный файл mysecureshell который находится по адресу /etc/ssh/sftp_config добавить следующие настройки для группы sftp (предварительно ее создав):
<Group sftp>
Download 50k # limit download speed for each connection
Upload 0 # unlimit upload speed for each connection
StayAtHome true # limit user to his/her home directory
VirtualChroot true # fake a chroot to the home account
LimitConnectionByUser 1 # max connection for each account
LimitConnectionByIP 1 # max connection by IP for each account
IdleTimeOut 300 # disconnect user if idle too long time (in sec)
HideNoAccess true # hide file/directory which user has no access
</Group>
Создание группы SFTP
groupadd sftp
Посмотреть номер группы можно командой
cat /etc/group
В ответ получим: sftp:x:1006:
Пользователя нужно добавить в эту созданную группу в файле /etc/passwd
Перегружаем службы mysecureshell и ssh командами:
/etc/init.d/mysecureshell restart
/etc/init.d/ssh restart
2. Создаем нового пользователя командой:
useradd testuser -d /home/testuser -m
/home/testuser — домашняя директория пользователя testuser может быть любой
Задаем пароль новому пользователю:
passwd testuser
3. Меняем shell для нашего пользователя (или любого другого который есть в системе) на lshell.
Открываем файл /etc/passwd и в строке пользователя меняем shell с /bin/bash на /usr/bin/lshell
В итоге должно получиться:
testuser:x:1003:1006::/home/testuser:/usr/bin/lshell
для проверки можете зайти под созданным пользователем командой
su testuser
в ответ получите:
You are in a limited shell.
Type '?' or 'help' to get the list of allowed commands
и перейдете в корневую директорию пользователя testuser, при попытке подняться вверх по дереву или перейти в любую другую директорию выше корневой вы получите:
cd…
*** forbidden path:
- 0
- 04 июня 2018, 19:36
- GreatAlex
Комментарии (0)
RSS свернуть / развернуть