Установка и настройка scponly на CentOS 7
Centos, FTP | Комментировать запись
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: CentOS 6, CentOS 7, FTP, scponly