Все ленты — последние статьи

*Простой FTP-сервер на базе Ubuntu.



Время от времени у каждого системного администратора возникает потребность в FTP-сервере, чаще всего это связано с необходимостью обеспечить обмен информацией в автоматическом режиме между приложениями, например при автообмене распределенной информационной базы 1С, или для доступа к файлам на веб-сервере. Сегодня мы расскажем, как меньше чем за 10 минут создать такой сервер на платформе Ubuntu.
Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный — низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

 

FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

Для нашего сервера мы будем использовать vsftpd — простой, быстрый и безопасный FTP сервер. Так как он будет обслуживать как внешнюю, так и внутреннюю сети, то имеет смысл добавить эту роль нашему роутеру. Установка сервера предельно проста:

sudo apt-get install vsftpd

Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf он имеет простую структуру и позволяет настроить сервер без какой либо инструкции при наличии минимальных знаний. Рассмотрим его основные параметры.

Сервер может быть запущен постоянно, как служба или стартовать при необходимости, нам больше подходит первый вариант:

listen=YES

Разрешим вход только локальным пользователям:

anonymous_enable=NO
local_enable=YES

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

write_enable=YES
local_umask=022

По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса используйте опцию:

use_localtime=YES

Включим лог загружаемых и скачиваемых файлов:

xferlog_enable=YES

В целях безопасности разрешим серверу устанавливать соединения для передачи данных только на порт 20:

connect_from_port_20=YES

Зададим таймаут неактивной сессии:

idle_session_timeout=600

Также в целях безопасности изолируем пользователя в его домашнем каталоге:

chroot_local_user=YES

Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

ftpd_banner=Welcome to Roga i Kopyta LLC FTP

Перезапускаем сервер:

sudo service vsftpd restart

и пробуем подключиться любым FTP-клиентом используя учетные данные существующего пользователя. Однако помните, что FTP — небезопасный протокол, поэтому не используйте для работы с сервером существующих пользователей, а заведите отдельных, включив их в группу ftp и ограничив в правах.

Как видим, мы действительно создали рабочий FTP-сервер менее чем за 10 минут.