FTPs-сервер это...
FTPS-сервер, осуществляет возможность безопасной передачи файлов по сети между локальным и удаленным компьютером. FTPS - представляет собой FTP-сервер, который использует протоколы TLS/SSL для создания шифруемого соединения, что делает его использование в разы безопаснее чем обычный FTP-сервер.
Pure-FTPd - является одним из наиболее популярных FTPS-серверов, он очень прост в установке и настройке, и в тоже время хорошо обеспечивает надежное и безопасное использование (при должной настройке).
В данной статье мы рассмотрим установку и настройку популярного FTPS-сервера Pure-FTPd для VPS/VDS под управлением ОС CentOS 7.
Если вы ищете наиболее простой и безопасный способ передачи файлов между компьютерами, то предлагаю обратить внимание на протоколы SFTP и SCP. C их помощью можно быстро передать файлы и при этом не нужно устанавливать какие либо дополнительные сервисы, т.к. в Linux все изначально предусмотрено для мгновенного начала передачи файлов поверх протокола SSH.
Шаг #1: Установка Pure-FTPd
Установить Pure-FTPd можно следующей командой.
sudo yum install pure-ftpd -y
Запустим установленный, но еще не защищенный, FTP-сервер.
sudo systemctl start pure-ftpd;
sudo systemctl enable pure-ftpd;
Шаг #2: Создание SSL-сертификата для Pure-FTPd
Для того, чтобы Pure-FTPd работал по защищенному SSL соединению, нам необходимо создать SSL-сертификат. В действительности же мы будет использовать протокол TLS, который является более безопасным приемником протокола SSL.
Для начала создадим директорию для хранения сертификата.
sudo mkdir /etc/ssl/private
Далее создадим файл, который содержит в себе закрытый ключ и самоподписанный SSL-сертификат, со сроком действия 7120 дней.
openssl req -x509 -nodes -days 7120 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
В момент создания сертификата вам предложат ответить на несколько вопросов, главным из которых будет - "Common Name" в ответ на него нужно написать имя домена (например example.ru) или ip-адрес сервера, для которых будет производиться FTPS-подключение.
Шаг #3: Настройка конфигурации
Теперь настроим важные параметры FTPS-сервера. Главным конфигурационным файлом для Pure-FTPd является - /etc/pure-ftpd/pure-ftpd.conf
. Перейдем к его редактированию.
sudo vi /etc/pure-ftpd/pure-ftpd.conf
Нам необходимо настроить несколько опций, которые отвечают за работу FTPS-сервера и его безопасность.
Запретим локальным пользователям доступ к системным директориям (каждый пользователь сможет получить доступ только к своей домашней директории - /home/username
).
ChrootEveryone yes
Запретим возможность подключения для анонимных пользователей.
NoAnonymous yes
Определим базу данных пользователей.
PureDB /etc/pure-ftpd/pureftpd.pdb
Отключим PAM-аутентификацию.
PAMAuthentication no
Активируем использование SSL-сертификата.
TLS 1
Выберем наиболее расширенный набор алгоритмов для шифрования соединения.
TLSCipherSuite HIGH
Укажем где Pure-FTPd должен искать, созданный нами ранее, сертификат.
CertFile /etc/ssl/private/pure-ftpd.pem
При использовании FTP вместе с SSL, вам понадобится включить пассивный режим, в котором для передачи данных используется больше портов, а не только один 21 порт. В связи с этим вам нужно выбрать группу портов, которую будет использовать Pure-FTPd. Если вы не выделите порты под пассивный режим, то скорее всего FTP-клиент не сможет получить список файлов, к которым пользователь пытается получить доступ.
Так как мы собираемся использовать FTP с защищенным каналом передачи, то нам понадобиться включить пассивный режим и выбрать группу портов для его использования. В данном примере я выберу группу портов от 45000 до 50000.
PassivePortRange 45000 50000
Сохраните изменения в файле конфига и перезапустите службу pure-ftpd.
sudo systemctl restart pure-ftpd
Шаг #4: Создание виртуального пользователя
Допустим в системе есть обычный пользователь johndoe, без sudo привилегий, которому необходимо предоставить доступ к директории сайта - /var/www/example.ru
.
Для начала создадим группу ftp пользователей - ftpusers.
sudo groupadd ftpusers
Установим группу ftpusers для каталога /var/www/example.ru
.
sudo chown -R :ftpusers /var/www/example.ru
Добавим право записи для группы.
chmod -R g+w /var/www/example.ru
Далее добавим пользователя johndoe в группу ftpusers.
sudo gpasswd -a johndoe ftpusers
Делегируем для пользователя johndoe доступ к папке сайта.
chown johndoe:ftpusers /var/www/example.ru –R
На основе его учетной записи создадим виртуального пользователя для директории сайта /var/www/example.ru
.
Для создания виртуального пользователя выполните следующую команду, где вместо username укажите имя виртуального пользователя, также укажите имя пользователя системы, его группу и директорию.
pure-pw useradd username -u johndoe -g ftpusers -d /var/www/example.ru –m
Создадим базу данных для виртуального пользователя.
pure-pw mkdb
Перезапустим ftps-сервер.
systemctl restart pure-ftpd
Просмотреть данные о пользователе можно следующим образом.
pure-pw show username
Показать список пользователей.
pure-pw list
Мануал Pure-FTPd.
pure-pw help
Шаг #5: Настройка файрвола (открытие портов)
Перед тем как начать использовать FTPS-сервер, сначала нужно оповестить файрвол (если он у вас включен, конечно), что бы он пускал на наш сервер все FTP-соединения.
Для начала необходимо убедиться, что файрвол запущен (running).
firewall-cmd --state
Если файрвол не запущен, то исправить это можно так.
sudo systemctl start firewalld;
sudo systemctl enable firewalld;
Для возможности подключения к серверу по FTP-протоколу, необходимо открыть 21-порт.
Для открытия 21-порта, достаточно добавить сервис FTP в публичную зону.
sudo firewall-cmd --zone=public --permanent --add-service=ftp
Перезапустим файрвол для применения настроек.
sudo firewall-cmd --reload
Убедиться в успешном добавлении сервиса FTP можно следующей командой, в результатах которой можно увидеть слово - ftp.
firewall-cmd --list-services
[root@centos ~]# firewall-cmd --list-services
ssh dhcpv6-client http https ftp
Для использования FTPS соединения необходимо также добавить, в исключения файрвола, группу портов для пассивного режима.
sudo firewall-cmd --permanent --add-port=45000-50000/tcp;
sudo firewall-cmd reload;
Проверить действительно ли добавились порты можно так.
firewall-cmd --list-ports
[root@centos ~]# firewall-cmd --list-ports
45000-50000/tcp
Заключение
Теперь Pure-FTPd полностью готов к безопасной работе с файлами.
Все, что вам остается сделать, это в FTP-клиенте выбрать тип подключения - FTP, порт подключения - 21, а также указать адрес сервера, к которому подключаетесь, имя виртуального пользователя и пароль.
Для использования FTP совместно с SSL нужно также выбрать параметр "явное шифрование".

