Установка и настройка scponly на CentOS 7

scponly – это безопасная альтернатива анонимного FTP. Этот пакет позволяет  настраивать защищенные учетные записи пользователей с ограниченным удаленным доступом к файлам и без доступа к интерактивной оболочке.

scponly вместо SSH?

Пакет scponly открывает пользователям доступ для загрузки определённых файлов. У них не будет интерактивной оболочки, а это означает, что они не смогут выполнять команды. Пользователи могут получить доступ к серверу только через SCP, SFTP или клиентов, которые поддерживают эти протоколы. С точки зрения безопасности, это может значительно уменьшить последствия хакерской атаки путем ограничения доступа к интерактивной оболочке сервера.

Требования

Для выполнения руководства нужен предварительно настроенный сервер CentOS 6 или 7.

Кроме того, все команды в руководстве выполняются не-рутовым пользователем. Если же для выполнения команды требуются права root, внесите в начало этой команды sudo.

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

1: Установка дополнительных пакетов

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

Для этого нужно установить 5 пакетов:

  • wget (загрузка файлов из командной строки);
  • gcc (компиляция scponly из исходного кода);
  • man (чтение страниц мануала);
  • rsync (расширенное копирование файлов);
  • openssh-client-tools (набор различных инструментов ssh).

Для установки всех этих пакетов можно использовать yum. Для этого нужно внести в команду имена всех пакетов, которые необходимо установить, и добавить флаг –у, который автоматически ответит yes на все вопросы системы.

Итак, чтобы установить все ПО, введите команду:

sudo yum install wget gcc man rsync openssh-clients -y

2: Загрузка и извлечение scponly

Теперь нужно загрузить последнюю версию scponly с sourceforge при помощи wget, а затем распаковать полученный файл с помощью tar.

Прежде чем приступить к загрузке, перейдите в каталог /opt, предназначенный для опционального программного обеспечения.

cd /opt

На момент написания статьи последней доступной версией scponly является 2011.05.26. Посетите страницу проекта на Sourceforge и проверьте, нет ил более новой версии.

Чтобы загрузить пакет scponly, введите:

sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

Извлеките исходный код scponly:

sudo tar -zxvf scponly-20110526.tgz

3: Сборка и установка scponly

На данном этапе понадобятся команды configure, make и make install. Эти три команды часто используются для установки программ из исходного кода.

Перейдите в каталог, содержащий только что распакованный код scponly:

cd /opt/scponly-20110526

Используйте команду configure , чтобы собрать make-файл со всеми необходимыми функциями:

sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server

В команде присутствуют такие опции:

  • –enable-chrooted-binary: устанавливает бинарные файлы scponlyc с изменённым корневым каталогом;
  • –enable-winscp-compat: включает совместимость с WinSCP, SCP/SFTP-клиентом для Windows;
  • –enable-rsync-compat: включает совместимость с rsync (это универсальная утилита для копирования файлов);
  • –enable-scp-compat: совместимость с scp-командами для UNIX.

Затем нужно собрать scponly при помощи команды make. Команда make берёт все опции, заданные в команде configure, и собирает их в двоичные файлы, которые позже будут установлены и запущены в системе.

sudo make

Теперь установите полученные файлы при помощи команды:

sudo make install

В завершение добавьте scponly в файл /etc/shells:

sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"

Файл /etc/shells сообщает системе о доступных оболочках. То есть, таким образом вы сможете сообщить ОС о добавлении новой оболочки по имени scponly и о местонахождении её бинарного файла (/usr/local/bin/scponly).

4: Создание группы scponly

Теперь нужно создать группу scponly, чтобы управлять пользователями, которые подключаются к серверу через scponly.

sudo groupadd scponly

5: Создание каталога upload и настройка прав

На данном этапе нужно создать централизованный каталог upload для группы scponly. Он позволяет контролировать место загрузки данных и их объём.

Создайте каталог /pub/upload:

sudo mkdir -p /pub/upload

Передайте права на каталог /pub/upload группе scponly:

sudo chown root:scponly /pub/upload

Теперь нужно установить права доступа к каталогу. Установите права в формате 770, чтобы разрешить доступ только пользователю root и членам группы scponly. Остальные пользователи не будут иметь доступа к аталогу.

sudo chmod 770 /pub/upload

6: Создание пользователя для оболочки scponly

Теперь нужно создать тестового пользователя, чтобы проверить настройку scponly.

Итак, создайте учётную запись по имени testuser1 и укажите scponly как группу, а /usr/local/bin/scponly как оболочку:

sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

Важно! Домашний каталог пользователя должен быть закрытым для записи, в противном случае можно будет изменить некоторые параметры SSH и выйти за пределы оболочки scponly.

Измените права доступа пользователя testuser1 к домашнему каталогу:

sudo chmod 500 /home/testuser1

Теперь каталог открыт только для чтения и выполнения и только для владельца.

Установите пароль для testuser1:

sudo passwd testuser1

7: Проверка доступа к интерактивной оболочке

Теперь нужно убедиться в том, что оболочка scponly работает должным образом, и что пользователь не имеет доступа к запуску команд.

Убедитесь, что testuser1 не имеет доступа к терминалу. Для этого войдите на сервер как testuser1:

su - testuser1

Терминал зависнет, поскольку у этого пользователя нет к нему доступа. Нажмите CTRL+C, чтобы закрыть оболочку scponly.

Эту проверку можно выполнить и на локальной машине:

ssh testuser1@your_server_ip

Опять же, терминал должен зависнуть. Нажмите CTRL+C, чтобы закрыть оболочку scponly.

8: Загрузка файлов с помощью scponly

Попробуйте подключиться к серверу с локальной машины по sftp, чтоб убедиться в том, что пользователь testuser1 может загружать файлы.

Создайте файл размером в 100 МБ при помощи fallocate:

sudo fallocate -l 100m /home/testuser1/testfile.img

Сделайте testuser1 владельцем нового файла testfile.img:

sudo chown testuser1:testuser1 /home/testuser1/testfile.img

В локальной системе откройте каталог /tmp:

cd /tmp

Подключитесь к серверу:

sftp testuser1@your_server_ip

Возможно, система предложит сохранить ssh-ключ.

После входа выполните в командной строке sftp> следующую команду:

ls -l

Загрузите файл при помощи команды get:

get testfile.img

Когда загрузка будет завершена, введите следующую команду, чтобы выйти:

quit

Вернитесь на локальную машину и убедитесь, что файл был загружен успешно.

ls -l testfile.img

9: Пересылка файлов на удаленный сервер при помощи scponly

Теперь попробуйте подгрузить файл на сервер на аккаунт testuser1 при помощи sftp.

Примечание: В этом разделе будет ограничен доступ к каталогу /pub/upload. Это делать необязательно, но таким образом можно получить дополнительные преимущества для безопасности.

На локальном компьютере при помощи fallocate создайте файл размером в 100 мегабайт по имени uploadfile.img:

fallocate -l 100m /home/testuser1/uploadfile.img

Установите соединение с сервером:

sftp testuser1@your_server_ip

Затем подгрузите uploadfile.img в каталог  /pub/upload при помощи sftp:

put uploadfile.img /pub/upload/

Убедитесь в том, что файл был успешно подгружен на сервер, выполнив команду в строке sftp:

ls -ltr /pub/upload

Появится такой результат:

-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img

Введите quit, чтобы покинуть sftp:

quit

Заключение

Инструмент scponly можно использовать как безопасную альтернативу FTP или же как способ предоставить авторизованным пользователям возможность обмениваться файлами без доступа к командной строке. Лог-файл scponly находится в стандартном логе ssh, /var/log/secure.

Примечание: Больше информации о scponly можно получить на странице проекта на GitHub.

Tags: , , ,

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