Открыть ftp порт linux

How to Change FTP Port in Linux

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.

Change FTP Port in Debian & Ubuntu

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.

Change FTP Port in CentOS & RHEL

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

Confirm FTP Port

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.

Читайте также:  Upgrading firefox on linux

Источник

Как установить FTP сервер vsftpd и настроить на Ubuntu 20

Установка и настройка vsftpd на Ubuntu 20

Vsftpd это один из самых популярных сервисов для работы по FTP на Linux. Существуют похожие сервисы для работы с FTP — это PureFTPd и ProFTPD. В этой статье мы рассмотрим установку этого сервиса на Ubuntu и настройку SSL/TLS подключения, пользователей, папок и портов.

Установка и минимальная настройка

Для установки сервиса у вас должны быть права sudo. Следующей командой мы выполним установку:

Включим сервис и проверим его работу:

sudo systemctl enable --now vsftpd systemctl status vsftpd

Запуск сервера FTP sftpd на Ubuntu 20

Если у вас отключен фаервол или разрешено FTP подключение — вы уже сможете выполнить подключение использовав учетные данные вашего пользователя. При подключении вы окажетесь в домашнем каталоге своего пользователя с возможностью перехода в другие.

Разрешение активного и пассивного режима в фаерволе

У вас могут быть запрещены порты для подключения к FTP. Что бы разрешить этот тип соединения откройте на Ubuntu порты:

sudo ufw allow 20/tcp sudo ufw allow 21/tcp sudo ufw allow 10100:10110/tcp sudo ufw status

Включение правил для фаервола для сервера FTP sftpd на Ubuntu 20

Номера портов зависят от типа подключения, которые вы планируете использовать. FTP сервера работают в двух режимах:

  • активный — клиент передает данные для сессии, а сервер по этим данным сам устанавливает сессию/подключение;
  • пассивный — клиент передает данные для сессии и сам устанавливает сессию/подключение.

В активном режиме клиент выполняет подключение на 21 порт сервера и сообщает по какому порту к нему можно подключится. Сервер подключается к порту клиента, но уже с 20 порта.

В пассивном режиме клиент так же подключается на 21 порт, но теперь уже сервер сообщает номер порта для установки сессии. Клиент сам устанавливает сессию по этому порту. Номер портов, которые может использовать сервер, устанавливается в настройках. Мы, в примере выше, открыли порты с 10100 по 10110 для этого. Пассивный режим является более безопасным и рекомендуемым.

По умолчанию режим всегда активный. Если вы хотите это изменить, то вам нужно зайти в файл конфигурации vsftpd:

Добавите следующие строки (измените номера портов, если вы планируете использовать другие):

pasv_enable=YES pasv_min_port=10100 pasv_max_port=10110

Включение пассивного режима FTP sftpd на Ubuntu 20

Перезапустите сервис и проверьте его работу:

sudo systemctl restart vsftpd.service systemctl status vsftpd.service

Перезапуск сервиса FTP vsftpd Ubuntu 20

В клиенте FileZilla, например, есть возможность автоматического переключения между пассивным и активным методом передачи. Пассивный режим стоит предпочтительным умолчанию. Если у вас не удастся подключение — то вы можете попробовать явно установить этот режим в одной из настроек:

Включение пассивного режима на FileZilla

Разрешения

По умолчанию вы подключаетесь к своему домашнему каталогу и у вас нет прав на запись и удаление. Директива, которая дает такое право, закомментирована в файле конфигурации по следующему пути:

Читайте также:  How to install yarn on linux

Если вам нужно такое право вы можете снять комментарий или просто добавить следующую строку:

Добавление права на запись в FTP сервере vsftpd Ubuntu 20

Каждое изменение этого файла нуждается в последующем перезапуске сервера vsftpd:

sudo systemctl restart vsftpd.service systemctl status vsftpd.service

Каталоги

С настройками установленными по умолчанию вы можете переходить по всем каталогам на которые у вас есть права. Что бы запретить эту возможность вам нужно изменить файл конфигурации. Первое — снимем комментарий со следующей строки:

Если мы попробуем подключиться не сделав дополнительные настройки, то получим ошибку:

Эта ошибка связана с разрешением на запись в каталог куда подключается пользователь. Исправляется это добавлением этой строки:

allow_writeable_chroot=YES

Добавление записи при chroot_local_user в Ubuntu 20

После этого вы сможете подключиться к вашему домашнему каталогу.

Если вы хотите установить другую папку для подключения — это можно сделать через следующую инструкцию (в моем случае папка заменена на /var/www/):

Каталоги могут быть динамическими, т.е. привязаны к разным учетным данным. Например у меня есть пользователи site1 и site2 и они должны подключаться к аналогичным директориям в /var/www. Это можно сделать так:

user_sub_token=$USER local_root=/var/www/$USER/

Смена директорий в FTP сервере vsftpd на Ubuntu 20

Если у вас не будет создана папка для пользователя — появится ошибка:

Похожая ошибка может произойти из-за отсутствия прав на чтение директории.

Перезапустите сервис что бы изменения вступили в силу.

Используем Django, Postgresql и Nginx в контейнерах Docker

Пользователи

В файле конфигурации ‘/etc/vsftpd.conf’ по умолчанию прописаны настройки запрещающие подключение анонимным пользователям (без пары логин/пароль) и разрешающие локальным. Эти настройки изменить в следующих директивах:

anonymous_enable=NO local_enable=YES

Включение анонимных и локальных пользователей в vsftpd на Ubuntu 20

Вы можете создать отдельный файл, где опишите пользователей которым запрещено подключаться к FTP серверу. Мы должны разрешить использование списка пользователей и указать путь до файла где они будут находиться:

userlist_enable=YES userlist_file=/etc/vsftpd_user_list

В моем примере создан файл ‘/etc/vsftpd_user_list’ и в нем мы описываем логины пользователей с новой строки.

Если в файл конфигурации vsftpd добавить следующую строку, то список пользователей станет тем кому разрешено подключаться, а не запрещено:

Использование списка пользователей vsftpd на Ubuntu 20

sudo systemctl reload vsftpd.service systemctl status vsftpd.service

Отдельная учетная запись

В примерах выше рассматривались случаи, когда пользователи подключающееся в vsftpd так же имели права подключаться через ssh. Это не всегда является желательным случаем и вы можете это запретить. Один из способов — просто создать пользователя, который вместо shell будет запускать /sbin/nologin (запрещающее вход пользователя):

sudo usermod testuser -s /sbin/nologin

Второй способ — создать отдельную точку входа для FTP пользователей. Создадим файл с сообщением если такие пользователи будут пробовать зайти в систему:

echo -e '#!/bin/sh\necho "FTP access only."' | sudo tee -a /bin/ftponly sudo chmod a+x /bin/ftponly

Добавим новую оболочку в файл /etc/shells:

echo "/bin/ftponly" | sudo tee -a /etc/shells

Изменим у существующего пользователя оболочку:

sudo usermod testuser -s /bin/ftponly

Этого же пользователя нужно добавить в список разрешенных пользователей, если вы его ведете.

Читайте также:  Linux skype не видит камеру

Теперь, при попытке входа используя ssh у вас будет появляться следующее сообщение:

Блокировка FTP пользователей для доступа через ssh

SSL/TLS

По умолчанию подключение к FTP серверу не шифруется, а это сильно упрощает перехват ваших личных данных злоумышленниками. Что бы этого избежать вы можете зашифровать соединения. Подобные соединения шифруются сертификатами. Такой сертификат можно сделать самому, а можно купить. Минус в самодельном сертификате будет в том, что вы потеряете одну из степеней проверки сертификата (это можно исправить, но не описано в рамках этой статьи).

В Ubuntu уже должен быть установлен openssl сервер — вы это можете проверить с помощью следующей команды:

Проверка установки openssl

С помощь следующей команды мы создадим ключ сроком в 10 лет по пути ‘/etc/vsftpd.pem’. У вас так же появятся дополнительные параметры, которые вы можете заполнить по желанию:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Создание сертификата для FTP сервера vsftpd

Далее нам нужно открыть файл конфигурации vsftpd:

И указать в нем путь созданного файла с ключами. Обратите внимание, что эти строчки у вас уже будут в файле и вам нужно заменить значения на ваши. Если вы этого не сделаете, а просто добавите новые значение шифрование не сработает:

rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Включение работы ssl/tls для работы в vsftpd

sudo systemctl reload vsftpd.service

После этого, при подключении к FTP (на моем примере клиент FileZilla), появится следующее окно:

Запрос сертификата в FileZilla

Сертификат помечается неизвестным т.к. его не получается проверить (описано в начале главы), но соединение будет зашифрованным.

Вы можете установить дополнительные параметры для работы с ssl:

# Запрещаем анонимные подключения через SSL allow_anon_ssl=NO # Требует использования SSL для входа и передачи данных force_local_data_ssl=YES force_local_logins_ssl=YES 

По умолчанию, при включении ssl через ssl_enable, преимущество всегда у TLS v1. С помощью следующих инструкций вы можете отключить более старые протоколы, что бы они не использовались:

ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO

Implicit и explicit FTP

Пример выше демонстрировал работу FTP на тех же портах, что и при обычном подключении (20,21). Такой вид подключения называется explicit (явный). Такой способ говорит о том, что ваш FTP клиент обязан сам запросить шифрование иначе соединение будет обычным.

В vsftpd предусмотрена возможность использования зашифрованного подключения используя другой порт. Такое подключение называют Implicit (не явный), и оно будет срабатывать в любом случае. Для такого подключения, обычно, используется 990 порт и вы должны открыть его на фаерволе:

И установить настройки в файле конфигурации:

implicit_ssl=YES listen_port=990

После перезагрузки сервиса у вас будет работать только 990 порт.

Источник

Оцените статью
Adblock
detector