Настройка SFTP-сервера — пользователи-администраторы

Настройка SFTP-сервера — пользователи-администраторы

На компьютере AWS EC2 Linux я создаю SFTP-сервер со структурой папок, используя следующий скрипт:

/data                 (owner - root:root)
    └── /sftp         (owner - root:root)
        ├── /user1    (owner - user1:sftp_users)
        └── /user2    (owner - user2:sftp_users)

Мои требования:

  1. Пользователи должны иметь возможность подключаться по SSH к своим собственным каталогам и управлять файлами.
  2. Пользователи НЕ должны иметь доступ к файлам, которые им не принадлежат. Например, пользователь 1 не может получить доступ к файлам пользователя 2
  3. Администратор должен иметь возможность подключаться к машине по SSH и управлять файлами всех пользователей.

Используя скрипт ниже (который создает группу sftp_users и изменяет разрешения папок пользователей на 701), я могу настроить сервер sftp таким образом, чтобы были удовлетворены требования 1 и 2. Я не эксперт по unix и пытаюсь удовлетворить 3-е требование. Любые примеры или указания могли бы помочь.

Заранее спасибо.

echo "`date` Creating SFTP directory...."
mkdir -p /data/sftp

echo "`date` updating sshd_config"
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
echo 'Match Group sftp_users' >> /etc/ssh/sshd_config
echo 'ChrootDirectory /data/sftp' >> /etc/ssh/sshd_config
echo 'ForceCommand internal-sftp' >> /etc/ssh/sshd_config

echo "`date` Set permissions to 701 for all folders on the efs mount"
chmod -R 701 /data

echo "`date` Set owner to root:root for all folders on the efs mount"
chown -R root:root /data

echo "`date` adding sft_users group"
groupadd sftp_users

echo "`date` restarting sshd"
systemctl restart sshd

###### Below is my user creation script that I eventually use to create individual SFTP users ######
echo "`date` creating /usr/local/bin/create_sftp_user.sh"
echo -e '#!/bin/bash\n\nUSER_NAME=$1\nuseradd -g sftp_users -d /$USER_NAME -s /sbin/nologin $USER_NAME\n' > /usr/local/sbin/create_sftp_user.sh
echo -e 'passwd $USER_NAME\nmkdir -p /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
echo -e 'chown $USER_NAME:sftp_users /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
echo -e 'chmod 700 /data/sftp/$USER_NAME\n' >> /usr/local/sbin/create_sftp_user.sh
chmod +x /usr/local/sbin/create_sftp_user.sh

решение1

Настройка, которую я имею, устанавливает моего пользователя-администратора в качестве члена каждой из моих групп участников SFTP. Для каждого пользователя SFTP создайте уникальную user:groupкомбинацию для этого пользователя и дайте право владения каталогом каждого пользователя соответствующему пользователю/группе SFTP. Ваш пользователь-администратор должен иметь возможность доступа/просмотра всего, поскольку он включен в каждую из групп пользователей SFTP, и каждый пользователь сможет просматривать только свой собственный домашний каталог. Наконец, убедитесь, что вы установили для каждого пользователя SFTP --shellзапрет /bin/falseдоступа SHELL.

У меня настроена аутентификация через SSH Keys. Добавьте открытый ключ каждого пользователя вauthorized_keys

/var/sftp (admin:admin 0700)
        |
        |-/.ssh (admin:admin 0700)
        |     -/authroized_keys
        |
        |-/user1 (admin:admin 0755)
        |      |
        |      |-/uploads (user1:user1 0770)
        |      |-/.ssh 
        |            -/authorized_keys
        |
        |-/user2 (admin:admin 0755)
               |
               |-/uploads (user2:user2 0770)
               |-/.ssh 
                     -/authorized_keys

У меня в /etc/ssh/sshd_config. есть следующая настройка:


Match User ADMIN_USERNAME
  ChrootDirectory /var/sftp
  AuthenticationMethods publickey
  AuthroizedKeysFile /var/sftp/.ssh/authorized_keys
  ForceCommand internal-sftp
  OPTIONS...

Match Group SFTP_USER
  ChrootDirectory /var/sftp/%u
  AuthenticationMethods publickey
  AuthorizedKeysFile /var/sftp/%u/.ssh/authorized_keys
  ForceCommand internal-sftp
  OPTIONS...

Каждый пользователь SFTP должен иметь свой домашний каталог, установленный в соответствующем /var/sftp/HOME. Единственным недостатком этой настройки является то, что пользователь может быть связан только с 32 группами. Если у вас более 32 пользователей SFTP, вам может потребоваться найти другой метод для вашего администратора.

Поскольку это пользовательские данные, я рекомендую использовать зашифрованный том EBS, смонтированный в /var/sftp. Если экземпляр выйдет из строя, у вас все равно останутся ваши данные, но также помните, что тома EBS специфичны для Зоны доступности.

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