Термины по теме: FTP, Ubuntu
vsFTPd и proFTPd — одни из самых простых способов поднять сервер FTP на Linux. В данной инструкции пойдет речь о vsFTPd и Ubuntu (на примере версий 14 и 16).
Обновляем списки портов в репозиториях:
apt-get update
Устанавливаем vsFTPd:
apt-get install vsftpd
Открываем конфигурационный файл:
vi /etc/vsftpd.conf
И снимаем комментарий со следующих строк:
write_enable=YESchroot_local_user=YES
* write_enable — разрешить копировать файлы на сервер; chroot_local_user — использовать для пользователей изолированное окружение.
И дописываем следующее:
allow_writeable_chroot=YESpasv_enable=YESpasv_max_port=60000pasv_min_port=65535
* где allow_writeable_chroot разрешаем использовать домашние каталоги с правом на запись; pasv_enable включает пассивный режим работы FTP-сервера; pasv_max_port и pasv_min_port определяют диапазон портов для пассивного режима.
Если используется брандмауэр, необходимо добавить правила и разрешить следующие порты:
Разрешаем и перезапускаем сервис:
systemctl enable vsftpd
systemctl restart vsftpd
По умолчанию, авторизация выполняется с использованием локальных пользователей. Чтобы использовать специальную учетную запись, для подключения к FTP, создаем пользователя следующей командой:
useradd ftpuser -d /ftp -s /bin/false -m
* где ftpuser — имя учетной записи; /ftp — домашний каталог (в него будем попадать при подключении); /bin/false — запрет пользователю на локальный вход в систему.
Задаем пароль:
passwd ftpuser
Открываем на редактирование следующий файл:
vi /etc/shells
И добавляем следующее:
/bin/false
* мы добавили /bin/false в список разрешенных оболочек. В противном случае, может вернуться ошибка 530 Login incorrect.
Для проверки подключения можно воспользоваться FTP-клиентом на другом компьютере (например, FileZilla или Total Commander).
Также можно установить FTP-клиент на сервер:
apt-get install ftp
И для подключения используем следующую команду:
ftp localhost
Система запросит логин и пароль.
TLS позволяет настроить безопасный FTP, передача данных через который осуществляется по шифрованному каналу.
Для данной цели можно использовать самоподписанный сертификат. Чтобы его создать, вводим команду:
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/private/vsftpd.key -subj “/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ftp.admins24.local/CN=ftp”
* в данном примере мы создаем самоподписанный сертификат на 4 года для URL ftp.admins24.local или ftp. Открытый ключ будет сохранен в файле /etc/ssl/certs/vsftpd.pem, закрытый — /etc/ssl/private/vsftpd.key. При желании, мы можем использовать купленный сертификат или получить его бесплатно у Let’s Encrypt.
Открываем на редактирование конфигурационный файл vsFTPd:
Редактируем строки:
rsa_cert_file=/etc/ssl/certs/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.keyssl_enable=YES
* где ssl_enable разрешает использование шифрования; rsa_cert_file — путь к открытому ключу; rsa_private_key_file — путь к закрытому ключу.
И дописываем следующие:
allow_anon_ssl=NOforce_local_data_ssl=NOforce_local_logins_ssl=NOssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOssl_ciphers=HIGH
* где:
Перезапускаем FTP-сервер:
Устанавливаем pam-модуль, позволяющий аутентифицировать пользователей с помощью passwd-like файлов:
apt install libpam-pwdfile
Открываем конфигурационный файл vsftpd и добавляем следующее:
user_config_dir=/etc/vsftpd_virtuser_confguest_enable=YESvirtual_use_local_privs=YESpam_service_name=vsftpdnopriv_user=vsftpdguest_username=vsftpd
Для возможности использовать утилиту htpasswd ставим следующий пакет:
apt install apache2-utils
Создаем каталог для хранения файла виртуальных пользователей и двух пользователей:
mkdir /etc/vsftpd
htpasswd -cd /etc/vsftpd/ftpd.passwd virt1
htpasswd -d /etc/vsftpd/ftpd.passwd virt2
* обратите внимание, опция -c команды htpasswd используется только при создании файла (при первом вводе команды). Мы создаем два пользователя — virt1 и virt2.
Архивируем имеющийся pam-сервис для vsftpd:
mv /etc/pam.d/vsftpd /etc/pam.d/back_vsftpd
Создаем новый со следующим содержимым:
vi /etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwdaccount required pam_permit.so
В самой системе создаем пользователя, которого используем как гостевого:
useradd vsftpd -d /home/vsftpd -g nogroup -m -s /bin/false
* с домашней директорией /home/vsftpd, основной группой nogroup и без возможности входа в систему (-s /bin/false).
Создаем каталог хранения настроек виртуальных пользователей:
mkdir /etc/vsftpd_virtuser_conf
и создаем настройку для первого:
vi /etc/vsftpd_virtuser_conf/virt1
local_root=/var/www/virt1
* local_root — домашняя директория для FTP пользователя virt1.
Создаем домашний каталог для нашего пользователя virt1 и задаем правильные права:
mkdir /var/www/virt1
chown vsftpd:nogroup /var/www/virt1
Перезапускаем vsftpd:
systemctl restart vsftpd || service vsftpd restart
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies