FTP

Как настроить FTP с TLS в Ubuntu

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

Установка VSFTPD

VSFTPD (Very Secure FTP Daemon) - это программа, используемая для настройки FTP на сервере. В этом руководстве VSFTPD будет использоваться для настройки FTP-сервера на машине. Перед установкой VSFTPD обновите репозитории на своем сервере, выполнив следующую команду.

[электронная почта защищена]: ~ $ sudo apt-get update -y

Затем установите VSFTPD с помощью следующей команды.

[электронная почта защищена]: ~ $ sudo apt-get install vsftpd -y

Наконец, проверьте установку, проверив версию vsftpd с помощью следующей команды.

[электронная почта защищена]: ~ $ vsftpd -v

Приведенная выше команда выведет версию vsftpd, если установка прошла успешно.

FTP в активном режиме

В активном режиме FTP-клиент запускает сеанс, устанавливая управляющее TCP-соединение с любого случайного порта на клиентском компьютере на порт 21 сервера. Затем клиент начинает прослушивать случайный порт X для подключения к данным и сообщает серверу через соединение TCP Control, что клиент ожидает подключения к данным на порту X. После этого сервер устанавливает соединение для передачи данных со своего порта 20 на порт X на клиентской машине.

Проблема может возникнуть, если клиент находится за брандмауэром, а порт X заблокирован. В этом случае сервер не может установить соединение для передачи данных с клиентом. Чтобы избежать этой проблемы, FTP-сервер в основном используется в пассивном режиме, который мы обсудим позже в этой статье. По умолчанию VSFTPD использует пассивный режим, поэтому нам придется изменить его на активный режим.

Сначала откройте файл конфигурации VSFTPD.

[электронная почта защищена]: ~ $ sudo nano / etc / vsftpd.conf

Добавьте следующую строку в конец файла.

pasv_enable = НЕТ

Кроме того, убедитесь, что для параметра connect_from_port_20 установлено значение YES.'Эта опция гарантирует, что соединение для передачи данных установлено через порт 20 сервера.

Затем создайте каталог, который FTP-сервер будет использовать для хранения файлов. В этом руководстве мы настроим / home / ubuntu / ftp / в качестве корневого пути для FTP-сервера.

[электронная почта защищена]: ~ $ sudo mkdir / home / ubuntu / ftp

Теперь укажите этот каталог в файле конфигурации, изменив параметр local_root. Следующий параметр настроит корневой путь сервера.

local_root = / домашний / ubuntu / ftp

Параметр write_enable должен быть включен, чтобы пользователи могли писать на FTP-сервер.

Каждый раз, когда вы меняете файл конфигурации, всегда перезагружайте сервер.

[электронная почта защищена]: ~ $ sudo systemctl restart vsftpd

Установка пароля для пользователя

Клиент FTP подключается к серверу, используя имя пользователя и пароль. Установите пароль для вашего пользователя на машине, используя следующую команду.

[электронная почта защищена]: ~ $ sudo passwd ubuntu

Приведенная выше команда запросит пароль для пользователя ubuntu.

Настройка брандмауэра для активного режима

Если FTP используется в активном режиме, FTP-сервер будет использовать два порта для связи с клиентом, порты 21 и 22. Порт 21 используется для передачи команд клиенту, а порт 20 используется для передачи данных на любой случайный порт клиента. Мы будем использовать ufw для настройки брандмауэра на сервере. Установите ufw с помощью следующей команды.

[электронная почта защищена]: ~ $ sudo apt-get install ufw

Теперь на стороне сервера мы откроем порты 20, 21 и 22 (для SSH-соединения).

[электронная почта защищена]: ~ $ sudo ufw разрешить с любого порта на любой протокол TCP

Включите и проверьте статус ufw, используя следующие команды.

[электронная почта защищена]: ~ $ sudo ufw enable
[электронная почта защищена]: ~ $ sudo ufw status

ПРИМЕЧАНИЕ: если вы настраиваете свой FTP-сервер в облаке, вам также необходимо разрешить порты 20, 21 и 22 в группе безопасности.

ПРЕДУПРЕЖДЕНИЕ: Всегда включайте порт 22 вместе с необходимыми портами перед включением ufw в удаленной системе. По умолчанию UFW блокирует трафик с порта 22, поэтому вы не сможете получить доступ к своему удаленному серверу с помощью SSH, если вы включите ufw, не разрешая трафик с порта 22.

Установка FTP-клиента

Теперь наш сервер настроен в активном режиме, и мы можем получить к нему доступ со стороны клиента. Для клиентского приложения мы будем использовать FileZilla, клиентское приложение ftp. Установите FileZilla, используя следующую команду.

[электронная почта защищена]: ~ $ sudo apt-get install filezilla -y

Откройте приложение FTP-клиента и введите общедоступный IP-адрес и другие учетные данные FTP-сервера.

Когда вы нажмете «Quickconnect», вы подключитесь к FTP-серверу и автоматически попадете в каталог, указанный в параметре «local_root» в файле конфигурации «/ home / ubuntu / ftp».

Проблемы в активном режиме

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

FTP в пассивном режиме

В пассивном режиме клиент создает контрольное соединение с сервером на 21-м порту сервера. Затем клиент отправляет специальную команду PASV, чтобы сообщить серверу, что соединение для передачи данных будет установлено клиентом, а не сервером. В ответ клиент получает IP-адрес сервера и случайный номер порта (этот номер порта будет настроен на сервере). Клиент использует этот IP-адрес и номер порта для создания соединения для передачи данных с сервером. В пассивном режиме и данные, и управляющие соединения устанавливаются клиентом, поэтому межсетевой экран не нарушает связь между клиентом и сервером.

Откройте файл конфигурации FTP в вашем любимом редакторе.

[электронная почта защищена]: ~ $ sudo nano / etc / vsftpd.conf

Установите для параметра 'pasv_enable' значение 'YES' в файле, чтобы сервер мог взаимодействовать с клиентом в пассивном режиме. Кроме того, установите параметр 'local_root', чтобы указать корневой каталог сервера, и установите для параметра 'write_enable' значение 'YES', чтобы пользователи могли загружать файлы на сервер.

Как обсуждалось ранее, соединение для передачи данных устанавливается клиентом, и сервер отправляет свой общедоступный IP-адрес и случайный порт клиенту для создания соединения для передачи данных. Этот случайный порт на сервере можно указать из диапазона портов в файле конфигурации.

Соединение для передачи данных между сервером и клиентом будет установлено на порту между 1024 и 1048. После изменения файла конфигурации перезапустите FTP-сервер.

[электронная почта защищена]: ~ $ sudo systemctl restart vsftpd

Настройка межсетевого экрана в пассивном режиме

Если мы используем FTP в пассивном режиме, соединение для передачи данных будет установлено через любой порт от 1024 до 1048, поэтому необходимо разрешить все эти порты на FTP-сервере.

[электронная почта защищена]: ~ $ sudo ufw разрешить с любого на любой порт proto tcp

После разрешения всех портов на брандмауэре активируйте ufw, выполнив следующую команду.

[электронная почта защищена]: ~ $ sudo ufw enable

Всегда разрешайте порты на сервере перед включением брандмауэра; в противном случае вы не сможете получить доступ к своему серверу через SSH как ufw, который по умолчанию блокирует порт 22.

Тестирование соединения

Теперь мы настроили FTP-сервер в пассивном режиме и можем проверить ftp-соединение с клиентским приложением. Для этого откройте FileZilla в своей системе.

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

Настройка SSL-сертификатов на FTP-сервере

По умолчанию FTP-сервер устанавливает соединение между клиентом и сервером по незащищенному каналу. Этот тип связи не следует использовать, если вы хотите обмениваться конфиденциальными данными между клиентом и сервером. Для связи по защищенному каналу необходимо использовать SSL-сертификаты.

Создание сертификатов SSL

Мы будем использовать SSL-сертификаты для настройки безопасной связи между клиентом и сервером. Мы сгенерируем эти сертификаты с помощью openssl. Следующая команда сгенерирует сертификаты SSL для вашего сервера.

[защита электронной почты]: ~ $ sudo openssl req -x509 -nodes -day 365 -newkey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / и т.д. / SSL / частный / vsftpd.pem

Когда вы запустите указанную выше команду, вам будет задано несколько вопросов. После того, как вы ответите на эти вопросы, сертификаты будут сгенерированы. Проверить наличие сертификатов можно в терминале.

[электронная почта защищена]: ~ $ sudo ls / etc / ssl / private /

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

Теперь наши сертификаты готовы к использованию. Мы настроим vsftpd.conf ', чтобы использовать сертификаты SSL для связи. Откройте файл конфигурации с помощью следующей команды.

[электронная почта защищена]: ~ $ sudo nano / etc / vsftpd.conf

Добавьте следующие строки в конец файлов. Эти изменения гарантируют, что FTP-сервер будет использовать недавно сгенерированные сертификаты SSL для безопасного взаимодействия с клиентом.

ssl_enable = ДА
force_local_data_ssl = НЕТ
force_local_logins_ssl = НЕТ
ssl_tlsv1 = ДА
ssl_sslv2 = НЕТ
ssl_sslv3 = НЕТ
rsa_cert_file = / и т.д. / SSL / частный / vsftpd.pem
rsa_private_key_file = / и т.д. / SSL / частный / vsftpd.pem

Перезапустите FTP-сервер, чтобы применить эти изменения.

[электронная почта защищена]: ~ $ sudo systemctl restart vsftpd

После перезапуска сервера попробуйте подключиться к серверу с помощью клиентского приложения FileZilla. На этот раз клиентское приложение спросит вас, доверять ли этим сертификатам.

Если у вас есть сертификаты от доверенного центра сертификации, это предупреждение не должно появляться. Мы сгенерировали наши сертификаты с помощью openssl, который не является доверенным центром сертификации, поэтому в нашем случае он запросил аутентификацию сертификата. Теперь мы можем общаться между клиентом и сервером по защищенному каналу.

Анонимная конфигурация

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

Приведенная выше конфигурация устанавливает корневой путь для анонимных пользователей как '/ home / ubuntu / ftp / anon', и он не запрашивает пароль, когда анонимный пользователь входит в систему.

ПРИМЕЧАНИЕ: Убедитесь, что на FTP-сервере существует путь / home / ubuntu / ftp / anon.

Теперь перезапустите FTP-сервер.

[электронная почта защищена]: ~ $ sudo systemctl restart vsftpd

После перезапуска сервера мы попытаемся подключиться к серверу через браузер Google Chrome. Перейдите по следующему URL-адресу.

ftp: // 3.8.12.52

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

Настроить локальный доступ

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

Сначала перезапустите FTP-сервер.

[электронная почта защищена]: ~ $ sudo systemctl restart vsftpd

После перезапуска сервера попробуйте получить доступ к FTP-серверу локально с помощью интерфейса командной строки. Войдите на свой удаленный сервер с помощью SSH.

[электронная почта защищена]: ~ $ ssh ubuntu @ 3.8.12.52 -i

Теперь выполните следующую команду для локального входа на FTP-сервер с помощью интерфейса командной строки.

[электронная почта защищена]: ~ $ ftp localhost

Когда вы запустите указанную выше команду, она выдаст ошибку 500.

Заключение

Протокол передачи файлов уже много лет используется для передачи файлов и документов через Интернет. VSFTPD - один из пакетов, используемых в качестве FTP-сервера на вашем компьютере. VSFTPD содержит различные конфигурации, которые вы можете использовать для настройки вашего FTP-сервера. В этом руководстве показано, как настроить FTP-сервер с TLS для повышения безопасности. Чтобы узнать больше о конфигурациях FTP, перейдите по следующей ссылке.

http: // vsftpd.звери.org / vsftpd_conf.html

Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...