Чт. Апр 18th, 2024

Иногда бывают случаи,когда надо пустить на свой сервер потенциально опасных пользователей.Хотя не столько потенциально опасных самих пользователей,сколько из опасного места — например какой нить сервер,доступ к которому имеют другие люди.В моем случае это сервер с которого бекапы ежедневно дублируются на мой сервер.Лить их,ясень пень,будем по scp, а значит нам надо добавить ключ нашего сервера в список авторизированных на удаленном сервере.А это опять же означает что при простых настройках,любой юзер с не доверенного сервера сможет заходить на мой сервер без пароля,ибо ключ уже добавлен в известные.Вот тут  то и понадобиться ограничить действия нашего пользователя в системе! Есть несколько вариантов.Один из них — запустить юзера  в ssh chroot оболочке.Но это много геммороя.Есть более простой способ — программа lshell,что расшифровуется как Limited Shell.  

1)Для начала установим ее на нашем защищаемом сервере:

apt-get install lshell

2)Теперь создадим отдельного юзера,под которым сюда будут заливаться бекапы с удаленного сервера:

useradd -m —shell=/usr/bin/lshell username

Тут мы указали что создать домашнюю директорию вида /home/username и что оболочка пользователя будет наша LShell.

Зададим пароль юзеру:

passwd username

Если надо поменять оболочку уже существующему юзеру,то делается так:

usermod -s /usr/bin/lshell username

3)Исправим файл настроек lshell, что б разрешить нашему username выполнять строго определённый набор команд:

nano /etc/lshell.conf

В конец файла добавим:
[username]
sftp : 1 # можно соединяться по sftp

scp : 1  # можно принимать и отсылать по scp

allowed : ['cd','exit','ls','tar','mysqldump','mysql'] # только эти команды можно выполнять
forbidden : [';', '&','`','$(', '${'] # эти управляющие символы запрещены
path : ['/var/www'] # можно кроме домашнего каталога ходить и по указанному пути

Сохраняем и идем на удаленный сервер. Там уже под пользователем root генерируем ключ ssh-keygen -t rsa и добавляем его в известные ssh-copyid [email protected]. Теперь уже пишем скрипт или любым другим способом отправляем файл(ы) командой scp имя_файла [email protected]: — двоеточие в конце обязательно! Файлы должны копироваться без запроса пароля.

от RUSUA

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Анти-спам: выполните заданиеWordPress CAPTCHA