Вступление
scponly - это безопасная альтернатива анонимному FTP. Это дает администратору возможность настроить защищенную учетную запись пользователя с ограниченным удаленным доступом к файлам и без доступа к интерактивной оболочке.
Зачем использовать scponly вместо обычного SSH? С помощью scponly вы предоставляете пользователю удаленный доступ для загрузки и загрузки определенных файлов. У них не будет интерактивной оболочки, что означает, что они не могут выполнять команды. Пользователь может получить доступ к серверу только через + scp +
, + sftp +
или через клиенты, которые поддерживают эти протоколы. С точки зрения безопасности, это уменьшает вашу поверхность атаки, ограничивая ненужный доступ к интерактивной оболочке на сервере.
Предпосылки
Для этого урока вам понадобится свежая CentOS 6 или 7 капель.
Все команды в этом руководстве должны выполняться от имени пользователя без полномочий root. Если для этой команды требуется root-доступ, ему будет предшествовать + sudo +
. Если у вас его еще нет, следуйте этому руководству: Initial Настройка сервера на CentOS 6 или https : //www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [Начальная настройка сервера для CentOS 7].
Шаг 1 - Установите пакеты
scponly доступен в некоторых сторонних репозиториях, но эти сборки scponly устарели и в них отсутствуют некоторые функции, которые мы добавим при сборке scponly из исходного кода.
Для сборки scponly из исходного кода вам нужно установить следующие 5 пакетов:
-
wget (для загрузки файлов через командную строку)
-
gcc (для компиляции scponly из исходного кода)
-
man (читать страницы man)
-
rsync (для расширенного копирования файлов)
-
openssh-client-tools (для предоставления различных инструментов ssh)
Мы будем использовать yum для установки необходимых пакетов, необходимых для сборки scponly. Во время установки yum мы передадим необходимые имена пакетов, а также + -y +
, который автоматически отвечает yes на все запросы.
Установите + wget
,` + gcc + ,
+ man`, + rsync
и` + openssh-clients` с помощью команды + yum install +
:
sudo yum install wget gcc man rsync openssh-clients -y
Шаг 2 - Загрузите и распакуйте scponly
В этом разделе мы будем загружать последнюю сборку scponly из sourceforge с помощью + wget +
и извлекать файлы с помощью + tar +
.
Перед загрузкой scponly перейдите в каталог + / opt +
. Этот каталог обычно предназначен для программного обеспечения optional.
cd /opt
На момент написания этой статьи последний снимок scponly был * 2011.05.26 *. Вы можете проверить Sourceforge страницу для более поздней версии и соответствующим образом настроить команду + wget +
.
Загрузите исходный код scponly, используя + wget +
:
sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz
Извлеките исходный код Scponly:
sudo tar -zxvf scponly-20110526.tgz
Шаг 3 - Сборка и установка scponly
В этом разделе мы будем использовать 3 основные команды для сборки scponly: + configure +
, + make +
и + make install +
. Эти 3 команды чаще всего используются при загрузке и установке программного обеспечения из исходного кода.
Перейдите в каталог, содержащий исходный код 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-chroot-binary: +
Установленный двоичный файл chroot+ scponly c +
-
+ - enable-winscp-compat: +
Включает совместимость с WinSCP, клиентом Windows scp / sftp -
+ - enable-rsync-compat: +
Включить совместимость с rsync, очень универсальной утилитой копирования файлов -
+ - enable-scp-compat: +
Включает совместимость с командами scp в стиле UNIX
Далее мы соберем scponly с помощью команды + make +
. Команда + make +
берет все параметры, которые вы передали с помощью команды + configure +
, и встраивает их в двоичные файлы, которые будут установлены и запущены в ОС.
sudo make
Далее мы установим двоичные файлы с помощью + make install
:
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 - Создайте каталог загрузки и установите соответствующие разрешения
В этом разделе мы создадим централизованный каталог загрузки для группы scponly. Это позволяет вам контролировать, где и сколько данных может быть загружено на сервер.
Создайте каталог с именем + / pub / upload +
, это каталог, предназначенный для загрузки:
sudo mkdir -p /pub/upload
Измените принадлежность группы к каталогу + / pub / upload +
на + scponly +
:
sudo chown root:scponly /pub/upload
Следующим шагом является настройка прав доступа к каталогу + / pub / upload +
. Устанавливая разрешения для этого каталога на 770, мы даем доступ только корневым пользователям и членам группы scponly.
Измените разрешения для каталога + / pub / upload +
на чтение, запись и выполнение для владельца и группы и удалите все разрешения для других:
sudo chmod 770 /pub/upload
Шаг 6 - Создайте учетную запись пользователя в scponly Shell
Теперь мы собираемся настроить тестовую учетную запись пользователя, чтобы проверить нашу конфигурацию scponly.
Создайте пользователя с именем * testuser1 * и укажите * scponly * в качестве альтернативной группы и + / usr / local / bin / scponly +
в качестве оболочки:
sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1
Измените разрешения для домашнего каталога * testuser1 * на чтение и выполнение только для владельца:
sudo chmod 500 /home/testuser1
Наконец, установите пароль для пользователя * testuser1 *:
sudo passwd testuser1
Шаг 7. Убедитесь, что у пользователя нет доступа к интерактивной оболочке.
Теперь мы проверим доступ к оболочке scponly и убедимся, что он работает как положено.
Давайте проверим, что учетная запись * testuser1 * не имеет доступа к терминалу.
Попробуйте войти на сервер как testuser1:
su - testuser1
Ваш терминал зависнет, так как у вас нет доступа к интерактивной оболочке. Нажмите + CTRL + C +
, чтобы выйти из оболочки scponly.
Вы также можете проверить доступ с локального компьютера:
ssh testuser1@
Опять же, ваш терминал зависнет, потому что testuser1 не разрешен доступ к оболочке. Нажмите + CTRL + C +
, чтобы выйти из оболочки scponly.
Шаг 8 - Проверка способности пользователей загружать файлы
В этом разделе мы будем подключаться через + sftp
с вашего локального компьютера к вашей капле DigitalOcean, чтобы убедиться, что учетная запись` + test user1` может загружать файлы.
Сначала создайте файл размером 100 Мегабайт, используя + fallocate +
:
sudo fallocate -l 100m /home/testuser1/testfile.img
Измените владельца файла + testfile.img +
на testuser1:
sudo chown testuser1:testuser1 /home/testuser1/testfile.img
В вашей локальной системе измените каталог на + / tmp +
:
cd /tmp
Далее + sftp +
к вашему серверу DigitalOcean:
sftp testuser1@
Вам может быть предложено сохранить ключ SSH при вводе пароля.
После входа в систему проблема + ls -l +
в приглашении + sftp> +
:
ls -l
Загрузите файл с помощью команды + get +
:
get testfile.img
После завершения загрузки файла введите + quit +
для выхода:
quit
Вернитесь на локальный компьютер и убедитесь, что файл был успешно загружен:
ls -l testfile.img
Шаг 9 - Проверка способности пользователей загружать файлы
В этом разделе мы будем тестировать способность учетной записи + testuser1 +
загружать файлы на сервер с помощью + sftp +
.
В вашей локальной системе создайте файл размером 100 мегабайт с именем + uploadfile.img +
, используя + fallocate +
:
fallocate -l 100m /home/testuser1/uploadfile.img
Из локальной системы подключитесь к вашей DigitalOcean Droplet.
sftp testuser1@
Затем загрузите + 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 scponly.