FTP or File Transfer Protocol is one of the oldest network protocol used today as standard file transfers over computer networks. FTP protocol uses the standard port 21/TCP as command port. Although, there are a lot of implementations of FTP protocol in server-side in Linux, in this guide we’ll cover how to change the port number in the Proftpd service implementation.
In order to change Proftpd service default port in Linux, first open Proftpd main configuration file for editing with your favorite text editor by issuing the below command. The opened file has different paths, specific to your own installed Linux distribution, as follows.
# nano /etc/proftpd.conf [On CentOS/RHEL] # nano /etc/proftpd/proftpd.conf [On Debian/Ubuntu]
In proftpd.conf file, search and comment the line that begins with Port 21. You need to add a hashtag (#)
in front of the line in order to comment the line.
Then, under this line, add a new port line with the new port number. You can add any TCP non-standard port between 1024 to 65535, with the condition that the new port is not already taken in your system by other application which binds on it.
In this example we’ll bind FTP service on port 2121/TCP.
#Port 21 Port 2121
In RHEL based distributions, the Port line is not present in Proftpd configuration file. To change the port, just add a new port line at the top of the configuration file, as illustrated in the below excerpt.
Port 2121
After you’ve changed the port number, restart the Proftpd daemon to apply changes and issue netstat command to confirm that FTP service listens on the new 2121/TCP port.
# systemctl restart proftpd # netstat -tlpn| grep ftp OR # ss -tlpn| grep ftp
Under CentOS or RHEL Linux based distributions, install policycoreutils package and add the below SELinux rules in order for the FTP daemon to bind on the 2121 port.
# yum install policycoreutils # semanage port -a -t http_port_t -p tcp 2121 # semanage port -m -t http_port_t -p tcp 2121 # systemctl restart proftpd
Finally, update your Linux distribution firewall rules in order to allow inbound traffic on the new FTP port. Also, check FTP server passive port range and make sure you also update the firewall rules to reflect passive port range.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
FTP Server
File Transfer Protocol (FTP) is a TCP protocol for downloading files between computers. In the past, it has also been used for uploading but, as that method does not use encryption, user credentials as well as data transferred in the clear and are easily intercepted. So if you are here looking for a way to upload and download files securely, see the OpenSSH documentation instead.
FTP works on a client/server model. The server component is called an FTP daemon. It continuously listens for FTP requests from remote clients. When a request is received, it manages the login and sets up the connection. For the duration of the session it executes any of commands sent by the FTP client.
Access to an FTP server can be managed in two ways:
-
Anonymous
-
Authenticated
In the Anonymous mode, remote clients can access the FTP server by using the default user account called “anonymous” or “ftp” and sending an email address as the password. In the Authenticated mode a user must have an account and a password. This latter choice is very insecure and should not be used except in special circumstances. If you are looking to transfer files securely see SFTP in the section on OpenSSH-Server. User access to the FTP server directories and files is dependent on the permissions defined for the account used at login. As a general rule, the FTP daemon will hide the root directory of the FTP server and change it to the FTP Home directory. This hides the rest of the file system from remote sessions.
vsftpd — FTP Server Installation
vsftpd is an FTP daemon available in Ubuntu. It is easy to install, set up, and maintain. To install vsftpd you can run the following command:
sudo apt install vsftpd
Anonymous FTP Configuration
By default vsftpd is not configured to allow anonymous download. If you wish to enable anonymous download edit /etc/vsftpd.conf
by changing:
anonymous_enable=YES
During installation a ftp user is created with a home directory of /srv/ftp
. This is the default FTP directory.
If you wish to change this location, to /srv/files/ftp
for example, simply create a directory in another location and change the ftp user’s home directory:
sudo mkdir -p /srv/files/ftp
sudo usermod -d /srv/files/ftp ftp
After making the change restart vsftpd:
sudo systemctl restart vsftpd.service
Finally, copy any files and directories you would like to make available through anonymous FTP to /srv/files/ftp
, or /srv/ftp
if you wish to use the default.
User Authenticated FTP Configuration
By default vsftpd is configured to authenticate system users and allow them to download files. If you want users to be able to upload files, edit /etc/vsftpd.conf
:
write_enable=YES
Now restart vsftpd:
sudo systemctl restart vsftpd.service
Now when system users login to FTP they will start in their home directories where they can download, upload, create directories, etc.
Similarly, by default, anonymous users are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line, and restart vsftpd:
anon_upload_enable=YES
Warning
Enabling anonymous FTP upload can be an extreme security risk. It is best to not enable anonymous upload on servers accessed directly from the Internet.
The configuration file consists of many configuration parameters. The information about each parameter is available in the configuration file. Alternatively, you can refer to the man page, man 5 vsftpd.conf
for details of each parameter.
Securing FTP
There are options in /etc/vsftpd.conf
to help make vsftpd more secure. For example users can be limited to their home directories by uncommenting:
chroot_local_user=YES
You can also limit a specific list of users to just their home directories:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
After uncommenting the above options, create a /etc/vsftpd.chroot_list
containing a list of users one per line. Then restart vsftpd:
sudo systemctl restart vsftpd.service
Also, the /etc/ftpusers
file is a list of users that are disallowed FTP access. The default list includes root, daemon, nobody, etc. To disable FTP access for additional users simply add them to the list.
FTP can also be encrypted using FTPS. Different from SFTP, FTPS is FTP over Secure Socket Layer (SSL). SFTP is a FTP like session over an encrypted SSH connection. A major difference is that users of SFTP need to have a shell account on the system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction.
To configure FTPS, edit /etc/vsftpd.conf
and at the bottom add:
ssl_enable=YES
Also, notice the certificate and key related options:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
By default these options are set to the certificate and key provided by the ssl-cert package. In a production environment these should be replaced with a certificate and key generated for the specific host. For more information on certificates see Security — Certificates.
Now restart vsftpd, and non-anonymous users will be forced to use FTPS:
sudo systemctl restart vsftpd.service
To allow users with a shell of /usr/sbin/nologin
access to FTP, but have no shell access, edit /etc/shells
adding the nologin shell:
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/usr/sbin/nologin
This is necessary because, by default vsftpd uses PAM for authentication, and the /etc/pam.d/vsftpd
configuration file contains:
auth required pam_shells.so
The shells PAM module restricts access to shells listed in the /etc/shells
file.
Most popular FTP clients can be configured to connect using FTPS. The lftp command line FTP client has the ability to use FTPS as well.
References
- See the vsftpd website for more information.
Оригинал:
How to setup and use FTP Server in Ubuntu Linux
Автор: Lubos Rendek
Дата публикации: 28 января 2013 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2013 г.
1. Введение
Практически каждый пользователь, хотя бы иногда работающий в интернете, сталкивался с FTP. В данном руководстве детально и пошагово описывается, как устанавливать FTP-сервер в Ubuntu Linux. Мы покажем, как установить его в нормальном и автономном режимах, а также как обеспечить его безопасность. Мы будем использовать легкий и эффективный FTP-сервер vsFTPd, предназначенный для работы на высоконагруженных серверах.
2. Соглашения
Далее в этой статье мы будем говорить просто об FTP-сервере, подразумевая vsFTPd.
3. Что такое FTP
Для тех, кто не знаком с FTP, ниже представлено краткое описание его возможностей. FTP расшифровывается как File Transfer Protocol. Название подразумевает, что этот протокол используется для передачи файлов или директорий с одного хоста на другой по сети — как локальной, так и через интернет.
Главные возможности vsFTPd: настройки для виртуальных IP, виртуальные пользователи, сетевые или автономные операции, большой спектр пользовательских настроек, регулирования пропускной способности канала, настройка лимитов по IP, поддержка IPv6 и шифрования (с помощью SSL).
4. Установка FTP-сервера в Ubuntu
Как всегда в Ubuntu и системах на ее основе, установка FTP-сервера выполняется одной командой. Откройте терминал и введите:
$ sudo apt-get install vsftpd
После выполнения этой команды сервер будет установлен и запущен.
Setting up vsftpd (2.3.5-1ubuntu2) ... vsftpd start/running, process 1891
5. Нормальный и автономный режимы работы FTP
5.1. Автономный режим
По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это /etc/init.d/vsftpd. Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:
start или stop — используется для запуска или остановки ftp-сервера.
status — выводит подробную информацию о текущем состоянии вашего FTP-сервера.
restart — это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.
reload — эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
Для запуска, перезагрузки и применения новых настроек используется утилита service:
$ sudo service vsftpd start
Такой синтаксис применяется для выполнения всех команд.
5.2. Нормальный режим
Другой подход к запуску vsftpd — это нормальный режим, в котором за работу службы отвечает суперсервер xinetd. Для запуска сервера vsftpd в нормальном режиме необходимо сначала установить суперсервер xinetd:
$ sudo apt-get install xinetd
Приведенная выше команда устанавливает и запускает суперсервер xinetd. В случае, если он у вас уже установлен, эта команда не нужна.
Далее, создайте файл vsftpd в директории /etc/xinetd.d/ со следующим содержимым:
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 10.1.1.10 banner_fail = /etc/vsftpd.busy log_on_success += PID HOST DURATION log_on_failure += HOST }
В то же время вы можете изменять любые опции, чтобы настроить суперсервер в соответствии со своими требованиями.
Опции, на которые стоит обратить внимание:
server — введите в командной строке «$ which vsftpd», чтобы узнать правильный путь.
no_access — все хосты с IP-адресами, указанными в этой директиве, будут блокированы.
banner_fail — здесь можно указать путь к текстовому файлу, содержимое которого будет показано для любых блокированных IP-адресов.
Далее нам необходимо отредактировать конфигурационный файл FTP-сервера /etc/vsftpd.conf, заменив строку
на
Эта директива даст команду FTP-серверу не открывать никаких портов, полностью перепоручив их суперсерверу xinetd. Перед тем, как запустить сервер в нормальном режиме, убедитесь, что демон vsftpd отключен:
$ sudo service vsftpd stop
Теперь можно запустить FTP-сервер в нормальном режиме с помощью команды:
$ sudo service xinetd restart
Чтобы убедиться в нормальной работе FTP-сервера, протестируйте и откройте порт 21 с помощью команды netstat:
$ netstat -ant | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
6. Создание первого подключения по FTP
Независимо от того, запустили ли вы FTP-сервер в автономном, или в нормальном режиме, вы можете создать первое локальное ftp-подключение. По умолчанию vsftpd разрешает автономный доступ, поэтому при создании нашего первого тестового подключения в качестве имени пользователя мы будем использовать anonymous. Для этого просто введите команду ftp с аргументом localhost:
$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ftp> quit 221 Goodbye.
Успешное подключение подтверждает, что FTP-сервер в локальной системе настроен правильно. Но перед тем, как перейти к более тонким настройкам, необходимо протестировать FTP-сервер и с нескольких удаленных хостов.
7. Настройка FTP-сервера
В этом разделе мы рассмотрим некоторые базовые примеры опций конфигурации vsftpd.
Примечание: при внесении любых изменений в настройки FTP-сервера не забудьте воспользоваться командой restart/reload, чтобы активировать их.
7.1. Настройка пользовательского доступа
vsftpd позволяет оставить только анонимный доступ, либо позволить пользователям, прописанным в файле /etc/passwd или в соответствующем списке, аутентифицироваться.
7.1.1. Анонимный доступ к FTP
По умолчанию FTP-сервер vsftpd настроен только для анонимного доступа. Если это то, что вам нужно, вы можете облегчить жизнь анонимным пользователям, отключив необходимость ввода пароля. Наиболее безопасный вариант для FTP-сервера — не разрешать пользователям идентифицироваться с паролем в виде простого текста. Для отключения необходимости ввода пароля анонимными пользователями необходимо в конфигурационном файле /etc/vsftpd.conf установить значение «NO» для директивы no_anon_password:
7.1.2. Доступ локальных пользователей по FTP
Теперь ваш сервер должен запрещать любой доступ за исключением пользователя anonymous. Чтобы позволить авторизоваться всем пользователям, указанным в файле /etc/passwd, необходимо изменить значение директивы local_enable в файле /etc/vsftpd.conf. Ее значение по умолчанию — «NO».
Теперь любой пользователь, указанный в файле /etc/passwd, сможет авторизоваться, используя свой пароль.
$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.
7.1.3. Список доступа пользователей
Сначала создадим список доступа, используемый сервером vsFTPd. Обычно вы можете задать его в директории /etc/. Создайте файл с произвольным именем и перечислите в нем всех пользователей, которым вы хотите разрешить или запретить доступ. Например, давайте создадим новый список с единственным пользователем «lubos»:
echo lubos > /etc/vsftpd.userlist
Далее, определим новый список пользователей в конфиграционном файле /etc/vsftpd.conf и активируем директиву userlist_enable:
userlist_file=/etc/vsftpd.userlist userlist_enable=YES
Таким образом всем пользователям, перечисленным в файле /etc/vsftpd.userlist, будет отказано в доступе к FTP-серверу.
$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 530 Permission denied. Login failed. ftp>
Чтобы разрешить доступ всем пользователям, перечисленным в файле /etc/vsftpd.userlist, установите значение «NO» для директивы userlist_deny. При этом вы открываете доступ только пользователям, перечисленным в /etc/vsftpd.userlist. Каждое имя пользователя в этом файле должно располагаться на отдельной строке.
7.2. Смена номера порта
По умолчанию любой FTP-сервер слушает стандартный порт 21 для аутентификации пользователя и порт 20 для передачи данных. vsFTPd не является исключением. Для смены прослушиваемого по умолчанию порта используется директива listen_port в файле /etc/vsftpd.conf. Например, для смены порта на 2121 просто добавьте следующую директиву в ваш конфигурационный файл:
После чего перезапустите FTP-сервер.
Однако это применимо к только к vsFPTd, работающему в автономном режиме. В случае, если ваш FTP-сервер запущен в нормальном режиме с с использованием суперсервера xinetd, и вы хотите изменить порт по умолчанию на 2121, найдите в файле /etc/services строку FTP и замените 21 на 2121, после чего перезапустите xinetd.
$ sudo service xinetd restart
Теперь, как вы можете убедиться, FTP-сервер слушает порт 2121:
$ netstat -ant | grep 2121 tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN
7.3. Другие опции конфигурации
Сервер vsFTPd имеет множество опций настроек, которые позволяют тонко настроить его в соответствии со своими нуждами. Ниже приведен список наиболее важных опций:
max_clients — эта опция задает максимальное количество пользователей, одновременно использующих FTP-сервер. 0 означает неограниченное количество пользователей.
max_per_ip — задает максимальное количество пользователей с одного IP-адреса.
download_enable — если ее значение — NO, любой запрос на скачивание будет отклонен.
8. Заключение
На сегодняшний день vsFTPd имеет 125 опций конфигурации. Это делает его очень гибким в настройке и в то же время простым в использовании и администрировании. Хотите ли вы использовать его дома, в пределах корпоративной сети, или на удаленном сервере, вы можете быть уверены, что vsFTPd полностью удовлетворит ваши нужды. Кроме того, vsFTPd позволяет активировать sftp, но этот вопрос мы обсудим в следующий раз.
Если вам понравилась статья, поделитесь ею с друзьями:
FTP (протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее.
Для Linux доступно множество FTP-серверов с открытым исходным кодом. Наиболее популярными и широко используемыми являются PureFTPd , ProFTPD и vsftpd . В этом руководстве мы будем устанавливать vsftpd (Very Secure Ftp Daemon). Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd, чтобы ограничить пользователей их домашним каталогом и зашифровать всю передачу с помощью SSL / TLS.
Для более безопасной и быстрой передачи данных используйте SCP или SFTP .
Прежде чем приступить
Установка vsftpd в Ubuntu 18.04
Пакет vsftpd доступен в репозиториях Ubuntu. Чтобы установить его, просто выполните следующие команды:
sudo apt update
sudo apt install vsftpd
Служба vsftpd автоматически запустится после завершения процесса установки. Проверьте это, распечатав статус службы:
sudo systemctl status vsftpd
Результат будет выглядеть примерно так, как показано ниже, показывая, что служба vsftpd активна и работает:
* vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago
Main PID: 2616 (vsftpd)
Tasks: 1 (limit: 2319)
CGroup: /system.slice/vsftpd.service
`-2616 /usr/sbin/vsftpd /etc/vsftpd.conf
Настройка vsftpd
Сервер vsftpd можно настроить, отредактировав /etc/vsftpd.conf
файл. Большинство настроек хорошо задокументированы в файле конфигурации. Чтобы узнать обо всех доступных вариантах, посетите официальную страницу vsftpd .
В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.
Начните с открытия файла конфигурации vsftpd:
sudo nano /etc/vsftpd.conf
1. Доступ по FTP
Мы разрешим доступ к FTP — серверу только локальным пользователям, найти anonymous_enable
и local_enable
директиву и подтвердить свой матч конфигурации линий ниже:
/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
2. Включение загрузки
Раскомментируйте write_enable
параметр, чтобы разрешить изменения файловой системы, такие как загрузка и удаление файлов.
/etc/vsftpd.conf
3. Chroot Jail
Чтобы предотвратить доступ пользователей FTP к файлам за пределами их домашних каталогов, раскомментируйте chroot
параметр.
/etc/vsftpd.conf
По умолчанию, чтобы предотвратить уязвимость системы безопасности, когда включен chroot, vsftpd откажется загружать файлы, если каталог, в котором заблокированы пользователи, доступен для записи.
Используйте один из приведенных ниже методов, чтобы разрешить загрузку при включенном chroot.
-
Метод 1. — Рекомендуемый метод разрешения загрузки — оставить включенным chroot и настроить каталоги FTP. В этом руководстве мы создадим
ftp
каталог внутри дома пользователя, который будет служить корневымuploads
каталогом и каталогом с возможностью записи для загрузки файлов./etc/vsftpd.conf
user_sub_token=$USER local_root=/home/$USER/ftp
-
Метод 2. Другой вариант — добавить следующую директиву в файл конфигурации vsftpd. Используйте эту опцию, если вам необходимо предоставить пользователю доступ с правом записи к его домашнему каталогу.
/etc/vsftpd.conf
allow_writeable_chroot=YES
4. Пассивные FTP-соединения
Добавьте в файл конфигурации следующие строки:
/etc/vsftpd.conf
pasv_min_port=30000
pasv_max_port=31000
5. Ограничение входа пользователя
Чтобы разрешить доступ к FTP-серверу только определенным пользователям, добавьте следующие строки в конец файла:
/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
Когда этот параметр включен, вам необходимо явно указать, какие пользователи могут входить в систему, добавив имена пользователей в /etc/vsftpd.user_list
файл (по одному пользователю в строке).
6. Защита передачи с помощью SSL / TLS
Чтобы зашифровать FTP-передачу с помощью SSL / TLS, вам потребуется сертификат SSL и настроить FTP-сервер для его использования.
Вы можете использовать существующий сертификат SSL, подписанный доверенным центром сертификации, или создать самозаверяющий сертификат.
Если у вас есть домен или субдомен, указывающий на IP-адрес FTP-сервера, вы можете легко создать бесплатный SSL-сертификат Let’s Encrypt .
Мы сгенерируем самоподписанный сертификат SSL с помощью openssl
команды.
Следующая команда создаст 2048-битный закрытый ключ и самозаверяющий сертификат, действительный в течение 10 лет. И закрытый ключ, и сертификат будут сохранены в одном файле:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
После создания SSL-сертификата откройте файл конфигурации vsftpd:
sudo nano /etc/vsftpd.conf
Найдите rsa_cert_file
и rsa_private_key_file
директивы, изменять их значение в pam
пути к файлу и установить ssl_enable
директиву YES
:
/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
Если не указано иное, FTP-сервер будет использовать только TLS для безопасных соединений.
Перезапустите службу vsftpd
После того, как вы закончите редактирование, конфигурационный файл vsftpd (без комментариев) должен выглядеть примерно так:
/etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:
sudo systemctl restart vsftpd
Открытие брандмауэра
Если вы используете брандмауэр UFW, вам необходимо разрешить FTP-трафик.
Чтобы открыть порт 21
(командный порт FTP), порт 20
( порт данных FTP) и 30000-31000
(диапазон пассивных портов), выполните следующие команды:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Чтобы избежать блокировки, откройте порт 22
:
sudo ufw allow OpenSSH
Перезагрузите правила UFW, отключив и снова включив UFW:
sudo ufw disable
sudo ufw enable
Чтобы проверить запуск изменений:
sudo ufw status
Status: active
To Action From
-- ------ ----
20:21/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
20:21/tcp (v6) ALLOW Anywhere (v6)
30000:31000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
Создание пользователя FTP
Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.
- Если у вас уже есть пользователь, которому вы хотите предоставить доступ по FTP, пропустите 1-й шаг.
- Если вы установили
allow_writeable_chroot=YES
в своем файле конфигурации, пропустите 3-й шаг.
-
Создайте нового пользователя с именем
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, например FileZilla .
Отключение доступа к оболочке
По умолчанию при создании пользователя, если это не указано явно, у пользователя будет SSH-доступ к серверу.
Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто напечатает сообщение, сообщающее пользователю, что его учетная запись ограничена только доступом по FTP.
Создайте /bin/ftponly
оболочку и сделайте ее исполняемой:
echo -e '#!/bin/shnecho "This account is limited to FTP access only."' | sudo tee -a /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-сервер в вашей системе Ubuntu 18.04.
In our previous tutorial, we saw how to change Apache web server default port. In this guide, we are going to learn how to change FTP default port in Linux. If you haven’t read our previous, go to the following link to learn how to change Apache webserver default port.
- How To Change Apache Default Port To A Custom Port
Change FTP Default Port To A Custom Port
Make sure you have installed VSFTPD server and its service is running.
Then edit VSFTPD configuration file and change the default port as described below.
On Debian / Ubuntu :
Edit /etc/vsftpd.conf
file,
$ sudo vi /etc/vsftpd.conf
On RHEL / CentOS / Fedora / AlmaLinux / Rocky Linux:
Edit /etc/vsftpd/vsftpd.conf
file,
$ sudo vi /etc/vsftpd/vsftpd.conf
Find the following line. If it is not found, add it.
listen_port=21
And change the FTP default port 21 to a custom port, for example 210.
listen_port=210
Save and close the file. Restart vsftpd service to take effect the changes.
In RHEL and its clones, make sure the port number 210 is not blocked in SELinux and Firewall.
$ sudo semanage port -a -t ftp_port_t -p tcp 210
If semanage command is not found, install the following package:
$ sudo yum install policycoreutils-python
To allow port 210 via firewall do the following steps.
In RHEL 7/ CentOS 7:
$ sudo firewall-cmd --permanent --add-port=210/tcp
$ sudo firewall-cmd --reload
In RHEL 6 / CentOS 6 :
$ sudo vi /etc/sysconfig/iptables
And add the new custom port line:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 210 -j ACCEPT
Save and exit the file and restart iptables service.
$ sudo service iptables restart
Finally restart vsftpd service.
$ sudo systemctl restart vsftpd
Or
$ sudo service vsftpd restart
Now verify the port using command:
$ sudo netstat -tulpn | grep :210
Sample output:
tcp6 0 0 :::210 :::* LISTEN 2610/vsftpd
If netstat command is not found in CentOS/RHEL, install the following package.
$ sudo yum install net-tools
Now, you can access the FTP server from all clients using URL: ftp <ftp-server-ip> <port-number>
Example:
$ ftp 192.168.1.150 210
Here, 192.168.1.150 is my FTP server’s IP address and 210 is the FTP custom port.
Sample output:
Connected to 192.168.1.150 (192.168.1.150). 220 (vsFTPd 3.0.2) Name (192.168.1.150:root): ostechnix 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
As you see in the above output, we have accessed the ftp server using the custom port 210. You can use any port number of your choice. But, just make sure that custom port is not used by any other services.
Access FTP server using FTP client or Web browser
Similar to CLI method, you need to mention the custom port number while accessing the FTP server via a FTP client or a web browser.
Open your FTP client, for example FileZilla, and enter username, password and custom port in the respective fields and then click the connect button.
To access the FTP server from a browser, the URL must be:
ftp://<IP-Address>:<port-number>
Or
ftp://<login>:<password>@IP-Address:<port-number>/
We will see how to change the SSH default port in our next article linked below.
- How to Change SSH Default Port To A Custom Port
sk
Senthilkumar Palani (aka SK) is the Founder and Editor in chief of OSTechNix. He is a Linux/Unix enthusiast and FOSS supporter. He lives in Tamilnadu, India.
FTP (File Transfer Protocol) is a network transmission standard that is used to transfer data from client to server and vice versa. It uses TCP (Transmission Control Protocol) which ensures that the data is actually arriving at its destination. TCP is what makes FTP reliable.
FTP is very helpful for businesses as it allows them to perform important functions such as the transfer of large and bulky files on a routine basis. These activities cannot be done over email or through other basic file-sharing programs. It is also used to upload and manage website files to the server.
The FTP is still a very popular way for transferring files but due to the security regions, many peoples prefer SFTP. Use this article to create SFTP only users without shell access.
In this write-up, we will be focusing on how to set up an FTP server with VSFTPD on Ubuntu 20.04.
Installing vsftpd on Ubuntu
VSFTPD is the default FTP server for most Linux distributions. We will start off by installing it on our system. Use the command given below to install VSFTPD.:
sudo apt update
sudo apt install vsftpd
Now verify the successful installation of VSFTPD by executing the following command:
sudo systemctl status vsftpd
How to Configure vsftpd on Ubuntu
Now we will configure the newly installed vsftpd. The configuration rules of vsftpd are stored in /etc/vsftpd.conf. Open the configuration file in any text editor. Here we will use nano to open the configuration file:
sudo nano /etc/vsftpd.conf
Update the following configuration settings:
-
FTP access
To only allow local users to access FTP server, make sure your configuration file matches the one given below:
anonymous_enable=NO local_enable=YES
-
FTP Passive connections
VSFTPD works on the active mode by default. To allow VSFTPD to work on passive mode copy the below-given lines into your configuration file:
pasv_min_port=40000 pasv_max_port=45000
You can give any range of ports to the configuration file. The system will connect a random port from the range you’ve chosen.
The connection is established by the server in active mode whereas in the passive mode the connection is established by the client’s side.
-
Enable Uploads
To allow the FTP user to modify the filesystem, search for the following line in the configuration file and uncomment it by removing the ‘#’ (hash) symbol from the beginning of the line:
write_enable=YES
-
Restrict FTP access
To allow only certain users to access VSFTPD, copy the below given lines at the end of the configuration file:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
These configuration settings are very basic. You can set the configuration rules according to your own needs.
Press Ctrl + X and then hit Enter to save and exit the text file. Now run the following command to restart the VSFTPD service:
sudo systemctl restart vsftpd
How to Configure the Firewall For FTP on Ubuntu
Now we will configure the firewall to allow FTP traffic. We will open ports 20 and 21, the default/recommended ports for FTP, and ports 40000:45000 for passive FTP. But first, let’s allow SSH by using the command given below otherwise we may get locked out of our server:
sudo ufw allow OpenSSH
If you get an error “ERROR: Could not find a profile matching ‘OpenSSH’” then you first need to install OpenSSH before running the above command. Use the following command to install OpenSSH on your system:
sudo apt install ssh
Once everything is set up, open the default ports 20 and 21 for FTP:
sudo ufw allow 20:21/tcp
Open the ports 40000:45000 for passive FTP as well:
sudo ufw allow 40000:45000/tcp
Now run the firewall by using the following command. Ignore, if it gives a warning about the disruption of SSH connection. Press y and hit Enter:
sudo ufw enable
The firewall is already active and enabled on my system.
You may run the following command to verify the firewall rules that were just added:
sudo ufw status
How to Create a user for FTP on Ubuntu
Use the “adduser” command to create a new user. We will use this user to login into FTP.
sudo adduser test_user
The terminal will ask you to set the password of the new user. It will also ask for a few other details. Just press Enter if you do not want to provide these details.
You can restrict this user’s SSH access if you only want them to log in through FTP. Use the nano editor to open the SSH configuration files:
sudo nano /etc/ssh/sshd_config
Now copy the following line and paste it into the configuration file to restrict the users access:
DenyUsers test_user
(Do remember to replace “test_user” with the actual name of your user)
Save and exit the configuration file and reboot the SSH service using the below-given command to let the changes take effect:
sudo systemctl restart ssh
Now add the user to the list of FTP users by running the following command:
echo "test_user" | sudo tee -a /etc/vsftpd.user_list
Next make a new directory for the user to use for uploading the files:
sudo mkdir -p /home/test_user/ftp/test_dir
Now give permissions to the new user according to your requirements. Here we are giving the following permission to the test_user:
sudo chmod 550 /home/test_user/ftp
sudo chmod 750 /home/test_user/ftp/test_dir
sudo chown -R test_user: /home/test_user/ftp
Here 550 gives the “read” and “execute” permission in the following way:
While 750 gives the “write” permission as well to the owner in the following way:
That’s it. Your FTP server has been fully set up.
Conclusion
FTP is used to transfer files between computers on a network. It is a protocol that dictates (instructs) how data is transferred between computers on the network. People still use FTB but it is not as secure as SCP or SFTP.
In this write-up, we focused on how to install, set up, and configure VSFTPD. Moreover, we comprehended how to configure firewalls and create a new user for FTP.
You may also like another tutorial, how to download and upload files using ftp command line.
The post How To Setup FTP Server with VSFTPD on Ubuntu 20.04 appeared first on TecAdmin.