Настройка sftp centos 8

Обновлено: 05.07.2024

SFTP удобное и безопасное подключение к файлам ресурса используя ssh. Инструкцию можно использовать для любых систем Linux. Отличие только в командах на перезапуск сервисов Nginx, Php-fpm, SSH и путях к файлам настройки.

Введение

Ранее я использовал для работы с файлами сайтов программу ProFTP, но отказался в пользу SFTP из за более стабильной работы и простоты настройки. Настройка показана на примере CentOS 7.

С статье на сайте можете узнать про настройку доступа по FTP к сайтам на сервере VDS под управлением CentOS 7 используя программу ProFTPd. Создание файловой базы пользователей для авторизации с правами от Nginx. Подключение с использованием сертификата для TLS.

Добавление пользователя

Создадим пользователя которому дадим права на файлы ресурса. Удобно использовать имя пользователя пересекающееся с названием сайта.

Настройка SSH для SFTP

Открываем конфигурационный файл ssh находящийся по пути /etc/ssh/sshd_config. Комментируем один параметр и добавим необходимый код:

Перезапускаем службу sshd:

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

Настройка прав на данные

Назначаем владельцем содержимого сайта пользователя которого мы создали выше:

Возвращаем обратно рута владельцем корня chroot:

Внимание! Сначала мы рекурсивно назначаем права на все содержимое директорий, а потом возвращаем владельца root на корень сайта.

Только в таком варианте все будет корректно работать!

Для безопасности запретим пользователю редактировать папку log.

Редактирование будет возможно только в папке WWW где находятся все файлы сайта!

Перед выполнением следующего этапа лучше проверить подключение. В случае проблем с подключением смотрим лог выведя последние 10 строчек:

Настройка Logrotate для сайтов

Для просмотра логом сайтов используя подключение по sftp необходимо создать файл со следующим кодом (на основе скопированного файла nginx):

Сохраним и применим изменения без перезагрузки:

Настройка PHP-FPM

Осталось указать нужный параметр в настройки хоста для nginx.

Откроем необходимый файл и внесём необходимую настройку:

Проверим правильность настройки Nginx и перезагрузим необходимые сервисы:

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

Вывод

В результате настроек мы получаем защищённый и удобный доступ для работы с файлами ресурса. Для работы я использую программу FileZilla.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделитесь ей с друзьями! Пожалуйста, оставляйте свои комментарии

Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.

5 комментариев для статьи “ SFTP настройка для веб хостинга ”

А если у меня один сайт на сервере, я могу назначить владельцем папки с сайтом пользователя nginx и заходить по sftp из под него?

Теоретически возможно. Вероятно придется делать какие то настройки пользователю nginx. Для надежности я бы не стал это делать. Использую способ указанный в статье SFTP настройка для веб хостинга.

Именно в этом и дело 🙂

А нет случаем статьи заменяем сервер active directory на calculate linux? В связи с планируемым переходом в гос. секторе на Российское п.о. это статья помогла бы очень многим. Уже какой день бьюсь что бы настроить тестовую станцию на calculate со всеми возможностями но дело идёт туго 😀

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

Метки

Реклама

Советую

Реклама

Комментарии

Вместо CentOS (для меня теперь это Fedora2) будет Rocky Linux :)

Теперь все статьи с Rocky будут?

Деже не надеюсь. Знаю что так и будет!

Хорошее руководство получилось. Надеюсь, Rocky Linux получит такое же распространение, как и Centos.

Ставил. Для моей версии там только контроль параметров и максимум можно запустить тест.

В настройках программы есть возможность серверам по ssh отправлять любые команды.

У меня есть веб сервер без возможности удаленного доступа к нему из вне, обслуживает несколько сайтов. Он стоит за фаерволом, проброшен 80-й порт, для работы сайтов этого достаточно. Понадобилось предоставить оперативный доступ сторонних разработчиков к исходным текстам одного из сайтов. У меня неожиданно возникли затруднения с этим, пришлось повозиться.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

Суть проблемы в следующем. Изначально сервер создавался для внутренней работы над всеми сайтами из локальной сети. Разграничения по правам доступа не было, работали с сайтами мало, изредка что-то правили. Со временем разработчиков вообще не осталось, сайты не менялись. Все управление шло через панели администрирования сайтами.

В один прекрасный день решили обновить один из сайтов. Попросили предоставить доступ к исходникам. В принципе, ничего сложного, думал за 5-10 минут все сделаю. Пошел по простому пути. Решил настроить ftp сервер, благо совсем недавно написал обширную статью на эту тему.

Очень быстро его настроил, проверил изнутри - все отлично работает. Создал системного пользователя, зачрутил его в каталог с нужным виртуальным хостом, расставил права как надо. Дальше дело за малым. Надо пробросить порт на шлюзе для доступа к серверу.

Тут началось самое интересное. Я давно не работал с ftp и подзабыл как там с ним и что. А проблем с ним навалом. Простого проброса 21-го порта недостаточно. Я не смог подключиться извне ни в активном, ни в пассивном режиме. На сервере установлен firewall pf, я с ним не очень знаком, почти не работал. Стал читать, как организуют проброс ftp на нем. Оказалось, что необходимо поднять локальный FTP proxy, редиректить на него все подключения и он динамически будет создавать правила для корректной работы ftp.

Мне очень не понравились перспектива ковырять незнакомый фаервол с кучей правил. К тому же нельзя было допустить ошибку и нарушить работу шлюза. Но делать нечего, решил попробовать. Информации в интернете не очень много на эту тему. По тем примерам, что мне попались не смог корректно настроить. То в синтаксисе ошибка, то просто не работает.

Решил не терять время на ковыряния не нужного для меня фаервола и пойти другим путем. Естественно, подумал сразу на sftp. Там нет таких проблем с пробросом портов. Единственное, чего я не делал раньше, так это ограничение доступа по sftp в пределах какого-то каталога. Но как оказалось это не сложно, задача легко и быстро решается.

Добавляем пользователя ssh в chroot директорию

Для начала создадим нового системного пользователя без шелла. Вообще, это не обязательно делать, можно настроить в ssh подключение не системных пользователей. Но я не вижу проблемы с системным пользователем. В моем случае для одного пользователя нет смысла заморачиваться с какими-то дополнительными настройками. Добавляем пользователя:

Дальше редактируем конфиг ssh. Открываем /etc/ssh/sshd_config. Комментируем существующую строку и добавляем следом за ней еще несколько:

Сохраняем и перезапускаем ssh. В случае с centos 6 команда такая:

Настройка подключения sftp с ограничением доступа за пределами конкретной папки закончена.

Ошибка ssh bad ownership or modes for chroot directory

Можно пробовать подключаться через sftp клиент. Я в данном случае предпочитаю пользоваться бесплатным WinSCP. Скорее всего вы не подключитесь и получите ошибку в лог файле /var/log/secure:

Заключение

На смену ftp приходит sftp. Я давно пользуюсь этим для доступа к отдельным файлам на сервере. Но есть большой минус - скорость по sftp низкая. Когда приходится качать что-то объемное, начинаешь грустить. Это нужно учитывать. Для работы с исходниками сайтов существующей скорости вполне достаточно. Для передачи объемных файлов нужно искать другие варианты подключения, тот же ftp, либо через vpn cifs или nfs.

Еще плюс такого решения - можно настроить авторизацию по сертификату. Получается удобно и безопасно. Легко подключиться по 22-м порту, плюс пароли не нужны, авторизуешься автоматически сертификатом. Настроить это не сложно, в интернете масса инструкций на тему авторизации по ssh с помощью сертификатов.

FTP (File Transfer Protocol) - это клиент-серверный сетевой протокол, позволяющий пользователям передавать файлы в удаленную сеть и скачивать их из нее. Для систем на базе Linux разработано несколько FTP-серверов с открытым исходным кодом. Наиболее популярные из них - PureFTPd, ProFTPD и vsftpd.

В этой статье мы разберемся как установить FTP CentOS 8 на примере vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, настройку vsftpd, чтобы ограничить пользователей их домашним каталогом и шифровать все передачи с использованием SSL/TLS.

Установка FTP сервера CentOS

Для более безопасной и быстрой передачи данных используйте SCP или SFTP. Внимание! Все команды необходимо выполнять от имени пользователя sudo.


Пакет vsftpd доступен по умолчанию в репозиториях CentOS. Для его установки, выполните следующую команду:

yum install vsftpd


Установка FTP CentOS завершена, далее надо запустить службу vsftpd и поместить ее в автозагрузку:

systemctl start vsftpd


systemctl enable vsftpd


Теперь проверим успешность запуска службы vsftpd набрав команду:

systemctl status vsftpd


Вывод команды представлен на рисунке ниже:


Настройка vsftpd на CentOS

Настройка vsftp CentOS 8 производится редактированием конфигурационного файла /etc/vsftpd/vsftpd.conf. Основные параметры хорошо задокументированы в файле конфигурации. Все доступные варианты конфигураций можно найти на официальном сайте vsftpd.

В статье мы рассмотрим некоторые важные аспекты, необходимые для настройки и безопасной установки vsftpd. Для начала откройте конфигурационный файл vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf


1. Доступ по FTP

Мы разрешим только локальным пользователям доступ к FTP-серверу. Для этого найдем следующие параметры убедимся, что их значения соответствуют строкам ниже:

Раскомментируйте параметр write_enable для того, чтобы разрешить вносить изменения в файловую систему, такие как загрузка и удаление файлов:


2. Включение chroot

Запретим пользователям, работающим по FTP, доступ к файлам вне их домашнего каталога, раскомментировав параметр chroot:


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

Используйте один из следующих способов для включения загрузки chroot.

Способ 1. Рекомендуемый способ разрешить загрузку - оставить chroot включенным и настроить каталоги FTP. По этому способу мы создадим каталог ftp на домашнем каталоге пользователя, который будет служить chroot и записываемым каталогом для загрузки файлов.


Способ 2. Другой вариант - добавить следующий параметр в файл конфигурации vsftpd. Используйте этот параметр, если вы хотите предоставить пользователям права на запись в их домашнюю директорию.


3. Пассивные FTP соединения

Сервер vsftpd может использовать любой порт для пассивных FTP-соединений. Мы определим диапазон портов используемый для соединений, а затем откроем их в нашем брандмауэре. Добавьте следующие строки в файл конфигурации:


4. Ограничение входа пользователей

Чтобы разрешить доступ к FTP-серверу только определенным пользователям, добавьте после строки userlist_enable = YES следующие строки:


Если этот параметр активен, то вам нужно явно перечислить, какие пользователи могут входить в систему, указав имена пользователей в файле находящемся по пути /etc/vsftpd/user_list (по одному пользователю на каждую новую строку).

5. Настройка SSL / TLS

Для обеспечения безопасности передачи файлов применяют шифрование FTP-передачи с использованием SSL / TLS. Осуществляя настройку шифрования вам необходимо иметь SSL-сертификат и настроить FTP-сервер для его использования.

Закрытый ключ и сертификат будут сохранены в одном файле:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem


После создания SSL сертификата откройте файл конфигурации vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf


Добавьте строки rsa_cert_file и rsa_private_key_file и укажите в их значениях pam на путь к созданному файлу сертификата. Затем добавьте строку ssl_enable установив для нее значение YES:


После произведенной настройки, если не указано иное, FTP-сервер всегда будет использовать TLS для установления защищенных соединений с клиентом. Перезапустите службу vsftpd.

После внесения всех изменений, за исключением комментариев, вы должны получить файл конфигурации vsftpd примерно следующего содержания:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
tcp_wrappers=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Выйдете из редактора подтвердив сохранение файла конфигурации и перезапустите службу vsftpd, чтобы применить изменения выполнив следующую команду:

sudo systemctl restart vsftpd

6. Открытие портов брандмауэра

Если вы используете брандмауэр, вам нужно разрешить FTP-трафик открыв порт 21 (порт команд FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), набрав следующие команды:

sudo firewall-cmd --permanent --add-port=20-21/tcp

sudo firewall-cmd --permanent --add-port=30000-31000/tcp


Для применения изменений потребуется перезапуск брандмауэра:


Настройка ftp CentOS практически завершена.

7. Создание пользователя FTP

Пришло время протестировать наш FTP-сервер создав нового пользователя.

  • Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите первую команду.
  • Если вы установили allow_writeable_chroot = YES в своем файле конфигурации, пропустите третью команду.

Чтобы создать ftp пользователя centos 8 с именем newftpuser выполните:

sudo adduser newftpuser


Добавим пользователя в список разрешенных пользователей FTP:

echo "newftpuser" | sudo tee -a /etc/vsftpd/user_list


Создадим каталоги FTP и установим для них правильные разрешения:

sudo mkdir -p /home/newftpuser/ftp/upload

sudo chmod 550 /home/newftpuser/ftp

sudo chmod 750 /home/newftpuser/ftp/upload

sudo chown -R newftpuser: /home/newftpuser/ftp


Как писалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload. На этом этапе мы полностью настроили FTP-сервер, и вы, используя любой FTP-клиент настроенный на использование шифрования TLS, сможете подключиться к вашему серверу.

8. Отключение доступа к SSH

Наберите следующие команды, для создания /bin/ftponly оболочки и назначения ее исполняемой по умолчанию:

sudo chmod a+x /bin/ftponly


Затем добавьте новую оболочку в список допустимых оболочек в файле /etc/shells :

echo "/bin/ftponly" | sudo tee -a /etc/shells


Теперь измените оболочку пользователя по умолчанию на /bin/ftponly:

sudo usermod newftpuser -s /bin/ftponly


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

Заключение

Из нашей статьи вы смогли узнать, как легко и быстро выполняется установка и настройка ftp centos 8. Это популярный, быстрый и безопасный FTP-сервер для вашей системы под управлением CentOS 8. Спасибо за прочтение.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.


Sftp (SSH или Secure file transfer protocol). Вместо того чтобы использовать VSFTPD можно использовать SFTP, Sftp является единственным безопасным способом для передачи/отправки по сравнению с VSFTPD. Sftp выполняет все операции по зашифрованному SSH соединению. Если пользователь разрешил доступ только к своим файлам без доступа SSH, то можно создать CHROOT для пользователя.

Я для примера, возьму готовый мой сервер на CentOS 7 и покажу как можно настроить sFTP на нем. По мере необходимости, я буду дополнять данную статью настройками для других Unix/Linux ОС.

Данные на котором будет тестироваться sFTP:

Можно проверить следующими командами:

CentOS 7/ RedHat 7:

Создание группы (group) для SFTP

Для начала, обновим ОС:

PS: Если не установлен SSH на сервере ( у меня он уже установлен), то нужно установить следующий пакет:

Во-первых, необходимо создать группу для SFTP:

Устанавливаем ему пароль:

Затем, вносим созданного пользователя в созданную SFTP группу:

Так делать не стоит! Потому что, данный пользователь получит SSH доступ на сервер, а нам нужно только дать данному юзеру sFTP доступ, по этому, делаем следующее:

Если вы собираетесь использовать FTP и SFTP на том же самом сервере, вы должны следовать шагам что выше при создании пользователей. Для существующих пользователей, необходимо выполнить условия ниже:

Настройка Sftp

Отредактируем sshd_config для настройки SFTP:

Ищем строку ( у меня это 147-148) и комментируем следующую строку:

И заменяем на следующую строку:

Добавьте следующие строки в конец файла:

Перезапускаем службу ssh демона:

Проверяем SFTP соединение:

И проверяем не разрешено ssh соединение для пользователя:

Выше мы можете видеть что пользователь sftp_user_1 определен только SFTP, он не может получить доступ к SSH.

Вот готовый скрипт:

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и часто используемыми серверами являются PureFTPd , ProFTPD и vsftpd .

В этом руководстве мы будем устанавливать vsftpd (Very Secure Ftp Daemon) на CentOS 8. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd, чтобы ограничить пользователей их домашним каталогом и зашифровать передачу данных с помощью SSL / TLS.

Установка vsftpd на CentOS 8

Пакет vsftpd доступен в репозиториях CentOS по умолчанию. Чтобы установить его, выполните следующую команду от имени пользователя root или пользователя с привилегиями sudo :

После установки пакета запустите демон vsftpd и включите его автоматический запуск во время загрузки:

Проверьте статус услуги:

Результат будет выглядеть примерно так, показывая, что служба vsftpd активна и работает:

Настройка vsftpd

Настройки сервера vsftpd хранятся в файле конфигурации /etc/vsftpd/vsftpd.conf . Большинство настроек хорошо задокументированы внутри файла. Чтобы узнать обо всех доступных вариантах, посетите официальную страницу vsftpd .

В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.

Начните с открытия файла конфигурации vsftpd:

1. Доступ по FTP

Мы разрешим доступ к FTP-серверу только локальным пользователям, найдем директивы anonymous_enable и local_enable и убедимся, что ваша конфигурация соответствует приведенным ниже строкам:

2. Включение загрузки

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

3. Chroot Jail

Предотвратите доступ пользователей FTP к файлам за пределами их домашних каталогов, раскомментировав директиву chroot .

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

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

4. Пассивные FTP-соединения

vsftpd может использовать любой порт для пассивных FTP-соединений. Мы укажем минимальный и максимальный диапазон портов, а затем откроем диапазон в нашем брандмауэре.

Добавьте в файл конфигурации следующие строки:

5. Ограничение входа пользователя

Чтобы разрешить вход на FTP-сервер только определенным пользователям, добавьте следующие строки после строки userlist_enable=YES :

Когда этот параметр включен, вам необходимо явно указать, какие пользователи могут входить в систему, добавив имена пользователей в файл /etc/vsftpd/user_list (по одному пользователю на строку).

6. Защита передачи с помощью SSL / TLS

Чтобы зашифровать FTP-передачу с помощью SSL / TLS, вам потребуется сертификат SSL и настроить FTP-сервер для его использования.

Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самозаверяющий сертификат.

В этом руководстве мы создадим самоподписанный сертификат SSL с помощью инструмента openssl .

После создания SSL-сертификата откройте файл конфигурации vsftpd:

Найти rsa_cert_file и rsa_private_key_file директивы, изменить их значения на pam путь к файлу и установите ssl_enable директиву YES :

Если не указано иное, FTP-сервер будет использовать только TLS для безопасных соединений.

Перезапустите службу vsftpd

После того, как вы закончите редактирование, конфигурационный файл vsftpd (без комментариев) должен выглядеть примерно так:

Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:

Открытие брандмауэра

how-to-configure-and-manage-firewall-on-centos-8 Если вы используете, вам необходимо разрешить FTP-трафик.

Чтобы открыть порт 21 (командный порт FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), введите в брандмауэре следующие команды:

Перезагрузите правила брандмауэра, набрав:

Создание пользователя FTP

Чтобы протестировать FTP-сервер, мы создадим нового пользователя.

  • Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите 1-й шаг.
  • Если вы установили allow_writeable_chroot=YES в своем файле конфигурации, пропустите 3-й шаг.

Создайте нового пользователя с именем newftpuser :

Добавьте пользователя в список разрешенных пользователей FTP:

Создайте дерево каталогов FTP и установите правильные разрешения :

Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload .

На этом этапе ваш FTP-сервер полностью функционален, и вы должны иметь возможность подключиться к своему серверу с любым FTP-клиентом, который можно настроить для использования шифрования TLS, например FileZilla .

Отключение доступа к оболочке

По умолчанию при создании пользователя, если это не указано явно, у пользователя будет SSH-доступ к серверу.

Выполните следующие команды, чтобы создать оболочку /bin/ftponly и сделать ее исполняемой:

Добавьте новую оболочку в список допустимых оболочек в /etc/shells :

Измените оболочку пользователя на /bin/ftponly :

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

Выводы

Мы показали вам, как установить и настроить безопасный и быстрый FTP-сервер на CentOS 8.

Для более безопасной и быстрой передачи данных следует использовать SCP или SFTP .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Читайте также: