Как ограничить доступ ssh пользователей

Бывают такие задачи, когда нужно ограничить доступ к терминалу ssh пользователей, чтобы нельзя было вводить команды, просматривать файлы, запускать командер mc. В общем, ничего нельзя делать.

Или возможен другой вариант, запретить доступ на вход пользователя по IP-адресу.

Прежде всего хочется ответить на вопрос зачем это нужно?

Основные причины:

  • Безопасность. Уменьшается вероятность проникновения в систему, через сетевой протокол прикладного уровня ssh.
  • Для туннеля, который создан посредством ssh соединения. Например необходимо организовать удаленный доступ на локальную машину под управлением windows через шлюз Linux. В этом случаи неправильно давать пользователю доступ в shell /bin/bash.

Рассмотрим три варианта ограничения Secure Shell:

  1. Запретить доступ по протоколу ssh. В этом случаи туннель не будет работать, однако для примера рассмотрим этот способ тоже.
  2. Запрещаем по IP-адресу. То есть могут подключиться только те, чьи IP разрешены.
  3. Меняем shell по умолчанию конкретному пользователю и пишем бесконечный цикл на bash языке.

ssh что это?

ssh (Secure Shell) - сетевой протокол, который позволяет удаленно подключаться к операционной системе, а также производить туннелирование.

В операционной системе Линукс за протокол отвечает  ПО OpenSSH.

Более подробно о настройке протокола написано в другой статье https://www.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".

Пример терминала