FTP (протокол передачи файлов) — это стандартный сетевой протокол клиент-сервер, который позволяет пользователям передавать файлы в удаленную сеть и из нее.
Для Linux доступно несколько FTP-серверов с открытым исходным кодом. Наиболее популярными и широко используемыми являются PureFTPd , ProFTPD и vsftpd .
В этом руководстве мы будем устанавливать vsftpd (Very Secure Ftp Daemon) на CentOS 7. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd, чтобы ограничить пользователей их домашним каталогом и зашифровать всю передачу с помощью SSL / TLS.
Для более безопасной и быстрой передачи данных используйте SCP или SFTP .
- Подготовка
- Установка vsftpd на CentOS 7
- Настройка vsftpd
- Доступ по FTP
- Включение загрузки
- Chroot Jail
- Пассивные FTP-соединения
- Ограничение входа пользователя
- Перезапустите службу vsftpd
- Открытие брандмауэра
- Создание пользователя FTP
- Отключение доступа к оболочке
- Выводы
- Установка vsftpd на CentOS 8
- Настройка vsFTPd сервера
- Добавление нового FTP пользователя
- Настройка iptables для vsFTPd
- Настройка автозапуска vsFTPd при старте системы
- Installing and configuring the FTP server
- Настройка домашних каталогов пользователей
- Защита FTP-сервера
Подготовка
Прежде чем продолжить это руководство, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Установка vsftpd на CentOS 7
Пакет vsftpd доступен в репозиториях CentOS по умолчанию. Чтобы установить его, выполните следующую команду:
sudo yum install vsftpd
После установки пакета запустите демон vsftpd и включите его автоматический запуск во время загрузки:
sudo systemctl start vsftpdsudo systemctl enable vsftpd
Вы можете проверить, что служба vsftpd запущена, распечатав ее статус:
sudo systemctl status vsftpd
Результат будет выглядеть примерно так, как показано ниже, показывая, что служба vsftpd активна и работает:
● vsftpd.service — Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago
Main PID: 29612 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Настройка vsftpd
Настройка службы vsftpd включает редактирование файла конфигурации /etc/vsftpd/vsftpd.conf . Большинство настроек хорошо документированы в файле конфигурации. Чтобы узнать обо всех доступных вариантах, посетите официальную страницу vsftpd .
В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.
Начните с открытия файла конфигурации vsftpd:
sudo nano /etc/vsftpd/vsftpd.conf
Доступ по FTP
Мы разрешим доступ к FTP-серверу только локальным пользователям, найдем директивы anonymous_enable и local_enable и проверим соответствие вашей конфигурации приведенным ниже строкам:
Включение загрузки
write_enable параметр write_enable чтобы разрешить изменения файловой системы, такие как загрузка и удаление файлов.
Chroot Jail
Предотвратите доступ пользователей FTP к любым файлам за пределами их домашних каталогов, раскомментировав директиву chroot .
По умолчанию, когда включен chroot, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи. Это сделано для предотвращения уязвимости системы безопасности.
Используйте один из приведенных ниже методов, чтобы разрешить загрузку при включенном chroot.
Пассивные FTP-соединения
vsftpd может использовать любой порт для пассивных FTP-соединений. Мы укажем минимальный и максимальный диапазон портов, а затем откроем диапазон в нашем брандмауэре.
Добавьте в файл конфигурации следующие строки:
Ограничение входа пользователя
Чтобы зашифровать FTP-передачу с помощью SSL / TLS, вам потребуется сертификат SSL и настроить FTP-сервер для его использования.
Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самозаверяющий сертификат.
В этом руководстве мы создадим самозаверяющий сертификат SSL с помощью команды openssl .
Следующая команда создаст 2048-битный закрытый ключ и самозаверяющий сертификат, действительный в течение 10 лет. И закрытый ключ, и сертификат будут сохранены в одном файле:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
После создания SSL-сертификата откройте файл конфигурации vsftpd:
Найти rsa_cert_file и rsa_private_key_file директивы, изменить их значения на pam путь к файлу и установите ssl_enable директиву YES :
Если не указано иное, FTP-сервер будет использовать только TLS для безопасных соединений.
Перезапустите службу vsftpd
После того, как вы закончите редактирование, конфигурационный файл vsftpd (без комментариев) должен выглядеть примерно так:
Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:
sudo systemctl restart vsftpd
Открытие брандмауэра
Если вы используете брандмауэр, вам необходимо разрешить FTP-трафик.
Чтобы открыть порт 21 (командный порт FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), 30000-31000 следующие команды:
sudo firewall-cmd —permanent —add-port=20-21/tcpsudo firewall-cmd —permanent —add-port=30000-31000/tcp
Перезагрузите правила брандмауэра, набрав:
Создание пользователя FTP
Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.
На этом этапе ваш FTP-сервер полностью функционален, и вы должны иметь возможность подключиться к своему серверу с помощью любого FTP-клиента, который может быть настроен для использования шифрования TLS, например FileZilla .
Отключение доступа к оболочке
По умолчанию при создании пользователя, если это не указано явно, у пользователя будет SSH-доступ к серверу.
Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто напечатает сообщение, сообщающее пользователю, что его учетная запись ограничена только доступом по FTP.
Выполните следующие команды, чтобы создать оболочку /bin/ftponly и сделать ее исполняемой:
Добавьте новую оболочку в список допустимых оболочек в /etc/shells :
Измените оболочку пользователя на /bin/ftponly :
Используйте ту же команду, чтобы изменить оболочку для других пользователей, которым вы хотите предоставить только доступ по FTP.
Выводы
В этом руководстве вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе CentOS 7.
FTP (протокол передачи файлов) — это сетевой протокол клиент-сервер, который позволяет пользователям передавать файлы на удаленный компьютер и с него.
Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и часто используемыми серверами являются PureFTPd , ProFTPD и vsftpd .
В этом руководстве мы будем устанавливать vsftpd (Very Secure Ftp Daemon) на CentOS 8. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd, чтобы ограничить пользователей их домашним каталогом и зашифровать передачу данных с помощью SSL / TLS.
Установка vsftpd на CentOS 8
Пакет vsftpd доступен в репозиториях CentOS по умолчанию. Чтобы установить его, выполните следующую команду от имени пользователя root или пользователя с привилегиями sudo :
sudo dnf install vsftpd
sudo systemctl enable vsftpd —now
Проверьте статус услуги:
Результат будет выглядеть примерно так, показывая, что служба vsftpd активна и работает:
Настройки сервера vsftpd хранятся в файле конфигурации /etc/vsftpd/vsftpd.conf . Большинство настроек хорошо задокументированы внутри файла. Чтобы узнать обо всех доступных вариантах, посетите официальную страницу vsftpd .
Мы разрешим доступ к FTP-серверу только локальным пользователям, найдем директивы anonymous_enable и local_enable и убедимся, что ваша конфигурация соответствует приведенным ниже строкам:
Предотвратите доступ пользователей FTP к файлам за пределами их домашних каталогов, раскомментировав директиву chroot .
По умолчанию, когда chroot включен, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи. Это сделано для предотвращения уязвимости системы безопасности.
В этом руководстве мы создадим самоподписанный сертификат SSL с помощью инструмента openssl .
how-to-configure-and-manage-firewall-on-centos-8 Если вы используете, вам необходимо разрешить FTP-трафик.
Чтобы открыть порт 21 (командный порт FTP), порт 20 (порт данных FTP) и 30000-31000 (диапазон пассивных портов), введите в брандмауэре следующие команды:
Чтобы протестировать FTP-сервер, мы создадим нового пользователя.
На этом этапе ваш FTP-сервер полностью функционален, и вы должны иметь возможность подключиться к своему серверу с любым FTP-клиентом, который можно настроить для использования шифрования TLS, например FileZilla .
Мы показали вам, как установить и настроить безопасный и быстрый FTP-сервер на CentOS 8.
Для более безопасной и быстрой передачи данных следует использовать SCP или SFTP .
Сейчас рассмотрим пример организации FTP сервера на базе vsFTPd и CentOS 7. Сервис FTP будет крайне полезным для любой организации и сервисов, например, для удобной работы с сайтом на WordPress. Первым делом устанавливаем требуемые пакеты vsftpd:
sudo yum -y install vsftpd
После этого копируем файл настроек в безопасное место, т.е. отдельный каталог. Как писал в предыдущих статьях — это хорошая практика и возможность откатиться к настройкам по-умолчанию.
sudo mkdir /backup
sudo cp /etc/vsftpd/vsftpd.conf /backup
Также устанавливаем клиент ftp на используемом сервере — возможно, он пригодится в будущем и сейчас при проверке настроек. Установка также не вызывает никаких затруднений:
sudo yum -y install ftp
Настройка vsFTPd сервера
После установки сервера и клиента переходим к настройке vsftpd. Сразу стоит обратить внимание: Анонимный доступ к FTP разрешен по умолчанию. Установите anonymous_enable=NO для обеспечения безопасности Вашего сервера.
Настройка будет проводиться путем редактирования конфигурационного файла vsftpd.conf:
Внесем следующие изменения :
Этого будет достаточно для корректной работы созданного FTP сервера, для получения расширенных данных по используемым параметрам — воспользуетесь man (man vsftpd.conf).
Добавление нового FTP пользователя
mkdir -p /var/www/path/to/your/dir
Для того, чтобы разрешить пользователю читать и писать данные в его домашней директории, изменяем права доступа и владельца :
chmod 775 ‘/var/www/path/to/your/dir’
Настройка iptables для vsFTPd
Для корректной работы FTP сервера нужно сделать настройку IPTABLES (добавить правила для FTP). Подробнее об iptables: Установка и настройка IPTABLES в CentOS 7 + Настройка iptables для Apache2 в CentOS 6.5.
Открываем конфигурационной файл iptables и вносим следующие изменения:
sudo nano /etc/sysconfig/iptables -A INPUT -m state —state NEW -m tcp -p tcp —dport 21 -j ACCEPT
Сохраните и закройте файл. Перезапустите фаервол командой:
sudo systemctl restart iptables
Настройка автозапуска vsFTPd при старте системы
chkconfig —levels 235 vsftpd on
Стартуем vsFTPd FTP сервис:
service vsftpd start
Готово. Настройка FTP сервера завершена. Проверяем его работу локально:
The most used FTP servers within Linux are PureFTPd, ProFTPD and vsftpd. An overview of the differences can be found on this website. ProFTPD is less well maintained, so we recommend PureFTPd or vsftpd.
Please note: July the 23rd of 2019 a vulnerability has been found ProFTPD, see this page. We recommend using vsftpd from this manual or SFTP through OpenSSH instead.
In this manual, we show you how to install and configure an FTP server in CentOS 7 with vsftpd (Very Secure FTPDaemon) and how to use TLS to set up a secure FTPS connection.
Using an FTP server is a relatively easy method to upload files to your VPS. This is useful, for example, with a web server for posting updates to websites on your VPS, or with a Plex server for uploading media to your VPS.
Do you prefer SFTP? Consult this manual.
Installing and configuring the FTP server
Connect to your VPS via SSH or the VPS console in your control panel.
Install vsftpd with the command:
Before you start your FTP server, make some adjustments to the vsftpd configuration, with the aim of adjusting access to your FTP server more specifically.
Open the configuration file:
Out-of-the-box, CentOS 7 comes with Firewalld, in which all ports are closed by default. Open port 21 with the commands:
firewall-cmd —zone=public —permanent —add-port=21/tcp
firewall-cmd —reload
semanage boolean -m ftpd_full_access —on
vsftpd does not automatically start after the installation and after a reboot. Вы запускаете vsftpd и включаете автоматический запуск с помощью:
запуск systemctl vsftpd
systemctl включить vsftpd
Настройка домашних каталогов пользователей
mkdir /home/gebruikersnaam/ftp
chown Nobody:nobody /home/gebruikersnaam/ftp
chmod a-w /home/gebruikersnaam/ftp
mkdir /home/gebruikersnaam/ftp/files
chown gebruikersnaam:gebruikersnaam /home/gebruikersnaam/ftp/files
chmod 0700 /home/gebruikersnaam/ftp/files
Причина, по которой вы удаляете доступ к папке FTP и предоставляете доступ к папке файлов, связана с соображениями безопасности: таким образом вы предотвращаете получение любого дальнейшего доступа к нижележащим папкам.
Наконец, перезапустите vsftpd, чтобы применить новую конфигурацию. Иногда может потребоваться несколько минут, чтобы увидеть такое изменение конфигурации при подключении через FTP-клиент.
Защита FTP-сервера
Протокол FTP не шифрует данные и поэтому небезопасен. Поэтому на практике обычно всегда используются SFTP или FTPS (объяснение различий см. в этой статье). В этой части руководства вы защитите свой FTP-сервер с помощью FTPS.
В качестве сертификата SSL (TLS) мы используем сертификат Let’s Encrypt. Если вы еще не установили Let’s Encrypt, сначала установите его с помощью команды:
На этом шаге вы создаете автономный сертификат, который не зависит от существующего веб-сервера. Для этого важно, чтобы в вашем брандмауэре были открыты порты 80 и 443 (в CentOS 7 по умолчанию это Firewalld). Если они еще не открыты, используйте команды:
firewall-cmd —zone=public —permanent —add-port=80/tcp
брандмауэр-cmd —zone=public —permanent —add-port=443/tcp
брандмауэр-cmd —reload
Создайте сертификат с помощью приведенной ниже команды. Замените здесь server.example.com на имя вашего хоста (проверьте с помощью команды hostnamectl).
У вас будет запрошен адрес электронной почты и разрешение на использование условий и положений, а также на передачу вашего адреса электронной почты в Electronic Frontier Foundation (необязательно).
certbot certonly —standalone -d server.example.com
Затем вы настраиваете конфигурацию vsftpd, чтобы действительно использовать сертификаты Let’s Encrypt и отклонять небезопасные соединения. Снова откройте /etc/vsftpd/vsftpd.conf:
Хорошей причиной для выбора Let’s Encrypt вместо OpenSSL является простая опция автоматического продления Let’s Encrypt, поэтому вам не нужно беспокоиться о возможном истечении срока действия вашего сертификата. Для этого вы создаете cronjob командой:
Crontab работает практически так же, как и vi. Он открывается в командном режиме, и вы переключаетесь в режим вставки с помощью клавиши «i». Затем добавьте содержимое ниже.
После добавления кода переключитесь обратно в командный режим с помощью ‘Esc’. Затем сохраните изменения и закройте crontab комбинацией клавиш :wq!
На шаге 5 вы, среди прочего, настроили диапазон пассивных портов. Этот порт не открывается автоматически в вашем брандмауэре, и вы открываете его вручную с помощью:
firewall-cmd —zone=public —permanent —add-port=50100-51100/tcp
брандмауэр-cmd —reload
Теперь вам нужно только перезапустить vsftpd командой:
Это завершает этот урок, и вы настроили безопасный сервер FTP(S)! Теперь вы можете протестировать свой FTP-сервер и передать файлы на свой VPS.
Если у вас остались какие-либо вопросы по этой статье, не стесняйтесь обращаться в нашу службу поддержки. Вы можете связаться с ними через кнопку «Связаться с нами» внизу этой страницы.

