Включение или отключение StrictModes в sshd_config в Linux

Вопрос или проблема

У меня есть вопрос к вам. Мне нужно решить эту проблему.

У меня есть папка /keys с chmod 755 на папке /keys и правами ACL, такими как setfacl -d -m u:myadmin:rwx /keys

В папке /keys есть другие папки, такие как user1, user2, user3

В каждой папке user1, user2, user3 есть специфические public.key для доступа по SSH

А теперь моя проблема:

Если у меня включен StrictModes в sshd_config, user1 при подключении по ssh получает сообщение об ошибке “Плохая собственность или режимы для директории”, потому что у папки user1 у root есть права rwx, а у myadmin также есть права rwx. Когда я убираю права myadmin, все работает. Но мне нужен myadmin для управления публичными ключами в этих папках. Я попытался отключить StrictModes в sshd_config, и все заработало. Но я думаю, что отключение StrictModes – это не лучшая идея с точки зрения безопасности. У всех пользователей, администраторов есть chroot в определенные папки в системе.

Что вы об этом думаете? Есть ли какое-либо другое решение этой проблемы? Или его можно отключить для решения этой проблемы?


RE: Все пользователи находятся в chroot в директории и не могут войти через putty, консоль…

Они могут подключаться только через ssh. После входа они видят свои папки с определенными правами, не могут выходить за пределы chroot-детектории.

Тем не менее, мне нужно, чтобы каждый пользователь имел доступ к специфической папке, которая находится в другом месте, вне chroot-папки каждого пользователя. Пользователь не знает о внешней папке, она нужна только для доступа к серверу, чтобы записывать некоторые файлы. Вот и все.

С помощью setfacl -m u:user:rwx и включенным StrictModes пользователь не может войти через ssh. Если я отключу StrictModes, пользователь может подключиться через ssh.

Я знаю, что StrictModes определяет, должен ли sshd проверять режимы файлов и владение пользовательскими файлами и домашней директорией перед тем, как разрешить вход.

Или есть какое-то другое решение? Спасибо

Вместо того чтобы использовать facls для предоставления myadmin прав на запись в эту папку, вы можете создать несколько скриптов, которые будут манипулировать ключами по мере необходимости, и дать myadmin права sudo на них.

Ответ или решение

Ваша проблема связана с тем, что параметр StrictModes в конфигурации sshd (обычно /etc/ssh/sshd_config) проверяет права доступа и владельца файлов, чтобы обеспечить безопасность SSH. Когда StrictModes включен, SSH-сервер отказывает в доступе, если есть потенциальные проблемы с правами доступа, что в вашем случае связано с тем, что у myadmin и root есть права на папку пользователя, что и вызывает ошибку "Bad Ownership or Modes for Directory".

Вот несколько решений, которые помогут вам сохранить уровень безопасности, не отключая StrictModes:

  1. Обеспечение корректных прав доступа:
    Убедитесь, что права доступа на директорию каждого пользователя настроены так, чтобы только владелец (пользователь) имел доступ к своей директории. Например:

    # Замените user1 на имя пользователя
    chown user1:user1 /keys/user1
    chmod 700 /keys/user1

    Данный подход позволяет пользователю user1 иметь полный доступ к своей директории, при этом другие пользователи, включая myadmin, не имеют доступа.

  2. Управление ключами через скрипты:
    Как вы уже упомянули, можно использовать скрипты для управления ключами. Напишите bash-скрипты, которые будут выполнять следующие действия:

    • Добавление/удаление публичных ключей в файл authorized_keys.
    • Выполнение проверки прав доступа и их исправление при необходимости.

    Например, действие по добавлению ключа может выглядеть так:

    #!/bin/bash
    if [ "$#" -ne 2 ]; then
       echo "Использование: $0 <пользователь> <путь_к_ключу>"
       exit 1
    fi
    
    USER=$1
    KEY_PATH=$2
    
    # Проверяем наличие файла ключа
    if [ ! -f "$KEY_PATH" ]; then
       echo "Файл ключа не найден!"
       exit 1
    fi
    
    # Копируем ключ в папку пользователя
    cat "$KEY_PATH" >> /keys/$USER/.ssh/authorized_keys

    Настройте доступ к этому скрипту, добавив соответствующие права через sudo, так что myadmin сможет выполнять его, не имея доступа к директориям пользователей. Например:

    # Редактируем файл /etc/sudoers
    myadmin ALL=(ALL) NOPASSWD: /path/to/script.sh
  3. Частично автоматизированная система управления доступом:
    Если необходимо дать myadmin возможность изменять ключи без изменения прав доступа к директориям пользователей, рассмотрите возможность реализации специализированной системы управления доступом. Например, можно создать отдельную директорию для хранения ключей и настроить автоматическую синхронизацию между этой директорией и домашними директориями пользователей. Это можно сделать с помощью rsync или аналогичных инструментов.

  4. Использование ACL без нарушения StrictModes:
    Если вы настаиваете на использовании ACL, стоит аккуратно настроить их. Убедитесь, что права доступа к ключам позволяют только пользователю их использовать. Однако помните, что это может вести к ухудшению безопасности, так как еще один пользователь получает доступ к ключам.

Обязательно протестируйте все изменения в тестовой среде перед тем, как развернуть их в рабочей системе. Включение StrictModes является хорошей практикой безопасности, и если вы сможете найти способ управления доступом для myadmin, сохраняя StrictModes включенным, это будет наилучшим решением.

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

Капча загружается...