Иногда бывают случаи,когда надо пустить на свой сервер потенциально опасных пользователей.Хотя не столько потенциально опасных самих пользователей,сколько из опасного места - например какой нить сервер,доступ к которому имеют другие люди.В моем случае это сервер с которого бекапы ежедневно дублируются на мой сервер.Лить их,ясень пень,будем по 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 username@mybackupserver.com. Теперь уже пишем скрипт или любым другим способом отправляем файл(ы) командой scp имя_файла username@mybackupserver.com: - двоеточие в конце обязательно! Файлы должны копироваться без запроса пароля.

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

%d такие блоггеры, как: