Бывают такие задачи, когда нужно ограничить доступ к терминалу ssh пользователей, чтобы нельзя было вводить команды, просматривать файлы, запускать командер mc. В общем, ничего нельзя делать.
Или возможен другой вариант, запретить доступ на вход пользователя по IP-адресу.
Прежде всего хочется ответить на вопрос зачем это нужно?
Основные причины:
- Безопасность. Уменьшается вероятность проникновения в систему, через сетевой протокол прикладного уровня ssh.
- Для туннеля, который создан посредством ssh соединения. Например необходимо организовать удаленный доступ на локальную машину под управлением windows через шлюз Linux. В этом случаи неправильно давать пользователю доступ в shell /bin/bash.
Рассмотрим три варианта ограничения Secure Shell:
- Запретить доступ по протоколу ssh. В этом случаи туннель не будет работать, однако для примера рассмотрим этот способ тоже.
- Запрещаем по IP-адресу. То есть могут подключиться только те, чьи IP разрешены.
- Меняем shell по умолчанию конкретному пользователю и пишем бесконечный цикл на bash языке.
Содержание
ssh что это?
ssh (Secure Shell) - сетевой протокол, который позволяет удаленно подключаться к операционной системе, а также производить туннелирование.
В операционной системе Линукс за протокол отвечает ПО OpenSSH.
Более подробно о настройке протокола написано в другой статье https://vseprolinux.ru/ssh-linux
Здесь же рассмотрим конкретные задачи ограничения доступа.
Запрет на вход по протоколу
Для запрета openssh нужны два файла /etc/ssh/sshd_config - здесь находится сам конфиг или достаточно править файл /etc/ssh/ssh_users.
Можно добавить в ssh_users список пользователей, которым разрешен доступ по ssh, то есть всем остальным запрещен.
nano /etc/ssh/ssh_users
или можно конфиге добавить директиву:
AllowUsers user1, User2
Где user1 и user2 - имена пользователей.
ssh ограничение доступа по IP
Чтобы ограничить подключение (Secure Shell) по IP-адресу, необходимо отредактировать два файла /etc/hosts.allow и /etc/hosts.deny.
/etc/hosts.allow - здесь указываем разрешенные IP-адреса.
Вместо:
sshd: ALL
Меняем на:
sshd: 127.0.0.1
где 127.0.0.1 - ваш IP.
Далее в /etc/hosts.deny пишем:
sshd: ALL
Вход в консоль разрешаем - вводить команды запрещаем
Такой вариант идеально подойдет для туннелирование TCP-соединений. Когда в консоль зайти нужно, а вводить команды нет.
Создадим пользователя.
adduser usertunnel
В файл /etc/ssh/ssh_users добавляем пользователя. В моем случае это usertunnel.
Создадим скрипт zbash, через редактор nano.
nano /bin/zbash/
Туда добавим строки.
Сделаем скрипт исполняемым.
#!/bin/bash
trap '' 2 20 24
clear
echo -e "Privet-druzya"
while [ true ] ; do
sleep 2000
done
exit 0
chmod +x /bin/zbash
Далее меняем стандартный shell для конкретного пользователя.
usermod -s /bin/zbash usertunnel
После ввода пароля в терминале будет написано "Privet-druzya".