Bastion-сервер: создайте пользователей с возможностью подключаться только к целевому серверу по протоколу SSH

Bastion-сервер: создайте пользователей с возможностью подключаться только к целевому серверу по протоколу SSH

У нас есть сервер-бастион. У нас должно быть несколько пользователей, которым нужно SSH из локальной сети через бастион на C, используя proxyCammand и закрытый ключ.

Я хочу создать пользователей и группу, которые должны иметь доступ ТОЛЬКО к ssh с хоста Bastion (это происходит через proxyCommand). Им также не нужно читать файлы.

Как это сделать? Есть ли способ?

Другой альтернативой, если вышеизложенное невозможно, является предоставление доступа на чтение только для разрешенных файлов, за исключением ограниченных файлов (установленных ОС по умолчанию), которые имеют доступ на чтение только для своих групп.

решение1

Вот как разрешить определенному пользователю использовать только некоторые указанные команды:

  1. Измените оболочку пользователя на ограниченную bash:

    chsh -s /bin/rbash <username>
    
  2. Создайте каталог bin в домашнем каталоге пользователя:

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. Измените PATH пользователя по умолчанию на этот каталог bin:

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. Создайте символические ссылки для команд, которые требуются пользователю:

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. Ограничьте возможность пользователя вносить изменения ~/.bashrc, сделав их неизменяемыми:

    chattr +i /home/<username>/.bashrc
    

Таким образом вы создаете символические ссылки только на те команды, которые хотите разрешить.

Чтобы сделать то же самое для нескольких пользователей, вы можете создать bash-скрипт, содержащий эти команды и имеющий имя пользователя в качестве параметра.

EDIT: В CentOS rbash может быть не реализован напрямую и может потребоваться создание символической ссылки, аналогично и в некоторых других версиях GNU/Linux, таких как Red Hat:

# cd /bin
# ln -s bash rbash

источник

Редактировать2:

Если rbash слишком ограничителен, то обычный bash тоже может подойти, но это потребует больше работы: вам нужно будет запретить выполнение почти всех команд с /binпомощью setfacl -m u:user1:r /bin/sufor suи других команд, которые вы не хотите использовать, чтобы они стали доступны пользователю только для чтения и, что особенно важно, не были исполняемыми.

Видетьэтот ответ Больше подробностей.

решение2

Сетевой трафик

Вы можете использоватьiptablesдля ограничения сетевого трафика:

# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT 
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT

Доступ к файловой системе

Чтобы ограничить доступ к файловой системе, вы можете использоватьРазрешения файловой системы

Им также не нужно читать файлы.

Чтобы войти в систему, им необходимо иметь возможность читать некоторые файлы:

  • Домашний каталог пользователя
  • Исполняемый файл и все библиотеки оболочки пользователя

Чтобы запретить доступ на чтение для обычного пользователя, можно снять флаг «чтение всем» с файла, принадлежащего пользователю root, или снять флаг «исполнение всем» и «чтение всем» с каталога, принадлежащего пользователю root:

# chmod o-r secret-file
# ls -l secret-file
-rw-r-----  1 root  root  0 Mar 27 13:23 secret-file

# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x---  2 root  root  64 Mar 27 13:24 secret-dir/

Связанный контент