- Установка и настройка vsFTPd на Ubuntu
- Установка и настройка
- Добавление пользователя
- Проверка
- Настройка SSL/TLS
- Виртуальные пользователи
- Linux Create An FTP User Account
- Создание FTP-пользователя без панели управления ISPmanager
- Установка FTP-сервера proftpd
- Добавление разрешающих правил для брандмауэра
- Ограничение FTP-пользователей пределами домашнего каталога
- Создание нового FTP-пользователя
- Дополнительная информация
Установка и настройка vsFTPd на Ubuntu
vsFTPd и proFTPd — одни из самых простых способов поднять сервер FTP на Linux. В данной инструкции пойдет речь о vsFTPd и Ubuntu (на примере версий 14 и 16).
Установка и настройка
Обновляем списки портов в репозиториях:
apt-get install vsftpd
Открываем конфигурационный файл:
И снимаем комментарий со следующих строк:
* write_enable — разрешить копировать файлы на сервер; chroot_local_user — использовать для пользователей изолированное окружение.
И дописываем следующее:
allow_writeable_chroot=YES
pasv_enable=YES
pasv_max_port=60000
pasv_min_port=65535
* где allow_writeable_chroot разрешаем использовать домашние каталоги с правом на запись; pasv_enable включает пассивный режим работы FTP-сервера; pasv_max_port и pasv_min_port определяют диапазон портов для пассивного режима.
Если используется брандмауэр, необходимо добавить правила и разрешить следующие порты:
- 20 — основной порт FTP для передачи.
- 21 — для активного режима. Используется для передачи команд.
- 60000-65535 — диапазон динамических портов, который нами был определен в конфигурационном файле. Используется для пассивного режима.
Разрешаем и перезапускаем сервис:
systemctl enable vsftpd
systemctl restart vsftpd
Если в нашей системе используется брандмауэр, открываем порты:
iptables -I INPUT -p tcp —match multiport —dports 20,21,60000:65535 -j ACCEPT
Для сохранения правил можно использовать утилиту:
apt-get install iptables-persistent
Добавление пользователя
По умолчанию, авторизация выполняется с использованием локальных пользователей. Чтобы использовать специальную учетную запись, для подключения к FTP, создаем пользователя следующей командой:
useradd ftpuser -d /ftp -s /bin/false -m
* где ftpuser — имя учетной записи; /ftp — домашний каталог (в него будем попадать при подключении); /bin/false — запрет пользователю на локальный вход в систему.
Открываем на редактирование следующий файл:
И добавляем следующее:
* мы добавили /bin/false в список разрешенных оболочек. В противном случае, может вернуться ошибка 530 Login incorrect.
Проверка
Для проверки подключения можно воспользоваться FTP-клиентом на другом компьютере (например, FileZilla или Total Commander).
Также можно установить FTP-клиент на сервер:
apt-get install ftp
И для подключения используем следующую команду:
Система запросит логин и пароль.
Настройка SSL/TLS
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.dmosk.local/CN=ftp»
* в данном примере мы создаем самоподписанный сертификат на 4 года для URL ftp.dmosk.local или ftp. Открытый ключ будет сохранен в файле /etc/ssl/certs/vsftpd.pem, закрытый — /etc/ssl/private/vsftpd.key. При желании, мы можем использовать купленный сертификат или получить его бесплатно у Let’s Encrypt.
Открываем на редактирование конфигурационный файл vsFTPd:
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES
* где ssl_enable разрешает использование шифрования; rsa_cert_file — путь к открытому ключу; rsa_private_key_file — путь к закрытому ключу.
И дописываем следующие:
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_ciphers=HIGH
- allow_anon_ssl разрешает использовать SSL анонимным пользователям;
- force_local_data_ssl требует использования шифрования, и если установить YES, клиенты без шифрования не смогут подключиться;
- force_local_logins_ssl также требует подключение по SSL;
- ssl_tlsv1 — использовать TLS версии 1;
- ssl_sslv2 и ssl_sslv3 — использовать SSL версии 1 и 2;
- ssl_ciphers — выбор шифра. В данном примере мы говорим использовать максимально безопасный.
systemctl restart vsftpd
Виртуальные пользователи
Устанавливаем pam-модуль, позволяющий аутентифицировать пользователей с помощью passwd-like файлов:
apt install libpam-pwdfile
Открываем конфигурационный файл vsftpd и добавляем следующее:
user_config_dir=/etc/vsftpd_virtuser_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd
- user_config_dir — каталог для хранения настроек пользователя.
- guest_enable — разрешаем гостевой вход.
- virtual_use_local_privs — виртуальные пользователи используют привилегии, как локальные, а не анонимные.
- pam_service_name — имя pam-сервиса.
- nopriv_user — под каким пользователем работает сервер, когда ему не нужны привилегии.
- guest_username — имя гостевого пользователя.
Для возможности использовать утилиту htpasswd ставим следующий пакет:
apt install apache2-utils
Создаем каталог для хранения файла виртуальных пользователей и двух пользователей:
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
Создаем новый со следующим содержимым:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
В самой системе создаем пользователя, которого используем как гостевого:
useradd vsftpd -d /home/vsftpd -g nogroup -m -s /bin/false
* с домашней директорией /home/vsftpd, основной группой nogroup и без возможности входа в систему (-s /bin/false).
Создаем каталог хранения настроек виртуальных пользователей:
и создаем настройку для первого:
* local_root — домашняя директория для FTP пользователя virt1.
Создаем домашний каталог для нашего пользователя virt1 и задаем правильные права:
chown vsftpd:nogroup /var/www/virt1
systemctl restart vsftpd || service vsftpd restart
Источник
Linux Create An FTP User Account
Now your FTP server is up and running. It is time to add additional users to FTP server so that they can login into account to upload / download files. To add a user called tom and set the password, enter:
# adduser -c ‘FTP USER Tom’ -m tom
# passwd tom
Now tom can login using our ftp server. Make sure the following is set in vsftpd.conf
Restart the vftpd:
# service vsftpd restart
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
However, I recommend setting virtual FTP user account to increase server security.
Category | List of Unix and Linux commands |
---|---|
Documentation | help • mandb • man • pinfo |
Disk space analyzers | df • duf • ncdu • pydf |
File Management | cat • cp • less • mkdir • more • tree |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Linux Desktop Apps | Skype • Spotify • VLC 3 |
Modern utilities | bat • exa |
Network Utilities | NetHogs • dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • glances • gtop • jobs • killall • kill • pidof • pstree • pwdx • time • vtop |
Searching | ag • grep • whereis • which |
Shell builtins | compgen • echo • printf |
Text processing | cut • rev |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Comments on this entry are closed.
These instructions seem to get the server running, but I’m unable to connect with any local user. It keeps telling me my password is invalid, even though I can ssh with that username/password just fine.
Status: Connection established, waiting for welcome message…
Response: 220 (vsFTPd 2.0.5)
Command: USER ftpuser
Response: 331 Please specify the password.
Command: PASS ********
Response: 530 Login incorrect.
I had the same issue. I had to add the ftp users to the ‘ftp’ group:
# gpasswd -a ftpuser ftp
and then it worked.
Hi..can we predefine path of the user directory instead of /home/tom ?
thanks
For a new user you would do:
# useradd -m -G ftp -s /sbin/nologin -d /home/ftpuser ftpuser
(This also sets the login shell to /sbin/nologin which effectively disables ssh login for the account.)
For an existing user you would do:
# usermod ftpuser -G ftp -s /sbin/nologin -d /home/ftpuser
You can define directory while creating UNIX/ Linux user account.
Using the pam file and virtual users with SSL/TLS, would i have to use the user_config_dir= option to set specifics for those users so they have seperate login directories, since those users aren’t in the centos users account, but in the separate pam database file?
Q:how to remove the ftp account?
it wont let me upload anything, i am using filezilla, it says error 553 could not create file and 550 could not change directory
this is the usual ‘type it in’ and hope for the best.
surely a gui os like suse should at least have a simple gui to add authenticated ftp users
Guys, note. /etc/shells MUST have /sbin/nologin in it, otherwise, you’ll get Login Failed
Sorry, NOT /sbin/nologin, but valid shell
I get this when I try to log on:
500 OOPS: cannot change directory:/home/pete
hi i want to know on
1. On a network how we can create a ftp server and group
and
2.How we can allocate (provide) specific space for sftp server .
hi i want to know on
1. On a network how we can create a ftp server and group
and
2.How we can allocate (provide) specific space for sftp server .
Источник
Создание FTP-пользователя без панели управления ISPmanager
По умолчанию при установке ОС Linux из любых шаблонов на сервере доступен только суперпользователь root. Подключение с данными root по протоколу FTP невозможно в целях безопасности (используется незашифрованный пароль). При установке шаблонов ОС типа minimal сервер FTP также не будет включён в установочный пакет. Если у Вас возникла необходимость быстрой ручной настройки нового FTP-пользователя при отсутствии на сервере панели управления ISPmanager, нужно сделать следующее.
Для начала подключитесь к серверу по протоколу SSH с правами root.
Установка FTP-сервера proftpd
CentOS:
Установка EPEL репозитория
Debian/Ubuntu:
Добавляем FTP в автозапуск сервера и запускаем его
Добавление разрешающих правил для брандмауэра
В зависимости от используемой утилиты управления
Iptables:
firewalld:
Ограничение FTP-пользователей пределами домашнего каталога
Данная статья подразумевает работу c конфигурацией ProFTPd «по умолчанию», а в этом случае пользователь может выходить за пределы своего домашнего каталога, и хотя прав на работу с другими папками у него, скорее всего, нет, но при недостаточно строгой конфигурации сервера это может представлять угрозу безопасности. Решить эту проблему можно добавив одну строку в файл proftpd.conf :
Добавить её можно в конец файла. После сохранения перезапустите FTP-сервер:
Создание нового FTP-пользователя
Простым FTP-пользователям нет необходимости иметь доступ к командной оболочке. Перед тем, как приступите к созданию новых пользователей, выполните команду:
Создайте нового пользователя
Командами выше мы создали пользователя (имя_пользователя нужно заменить на незанятое имя) и соответствующую группу, назначили и создали (ключ -m можно опустить, если каталог уже существует) домашний каталог /home/имя_папки и выбрали /bin/false в качестве командной оболочки пользователя, тем самым отключив её в целях безопасности. Командой passwd мы задали пользователю необходимый пароль.
В большинстве случаев на данном этапе вы уже можете подключаться с созданным пользователем к FTP-серверу, который по умолчанию работает на 21 порту. Однако, есть еще несколько шагов, которые вы, возможно, захотите выполнить.
Дополнительная информация
Доступ к командной оболочке (shell)
Если вы всё-таки хотите предоставлять пользователю доступ к командной оболочке, то указывайте путь до любой действующей вместо /bin/false , например:
Пользователям обычного протокола FTP не нужен доступ к shell, поэтому безопаснее его не предоставлять.
Расположение proftpd.conf
Используйте этот файл для более детальной настройки своего FTP-сервера при необходимости.
Ограничение прав FTP-пользователя
При необходимости вы можете ограничить права пользователя на запись в домашнюю директорию, позволив ему работать только с какой-нибудь внутренней папкой, например upload. От имени суперпользователя измените права:
В данном случае второе имя_пользователя является именем группы, которое по умолчанию совпадает с созданным вами именем пользователя.
Источник