Установка 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