Интернет Windows Android

Установка и настройка FTP-сервера в Linux. Установка и настройка FTP сервера Linux Как настроит фтп соединение на линукс

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

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

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

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

Apt-get install vsftpd

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

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

Listen=YES

Данная опция имеет взаимоисключающую запись, которую следует привести к виду:

Listen_ipv6=NO

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

Anonymous_enable=NO
local_enable=YES

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

Write_enable=YES
local_umask=022

Если требуется установить иной набор прав: 775 и 664, то umask должен быть равен 002.

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

Use_localtime=YES

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

Xferlog_enable=YES

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

Connect_from_port_20=YES

Следующие опции задают место и формат хранения логов:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

Зададим таймауты сессии:

Idle_session_timeout=600
data_connection_timeout=120

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

Chroot_local_user=YES
allow_writeable_chroot=YES

Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

Ascii_upload_enable=YES
ascii_download_enable=YES

Можно включить только одну опцию, для закачки или скачивания. Обратите внимание, что при передаче бинарного файла в режиме ASCII последний может быть поврежден.

Достаточно интересная опция:

Ls_recurse_enable=YES

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

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

Ftpd_banner=Welcome to Roga i Kopyta LLC FTP

В конце конфигурационного файла зададим настройки для пассивного режима, рекомендуется явно задать порты, чтобы была возможность указать их при форвардинге, если сервер стоит за NAT или в правилах брандмауера:

Pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999

Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию):

Service vsftpd restart

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

В случае появления ошибки, связанной с некорректной работой vsftpd и системы безопасности seccomp:

500 OOPS: prctl PR_SET_SECCOMP failed

добавьте в файл недокументированную опцию:

Seccomp_sandbox=NO

Однако помните, что FTP - небезопасный протокол, поэтому пускать на сервер любого локального пользователя, как это сделано сейчас, не самый лучший вариант. Чтобы избежать такой ситуации vsftpd имеет встроенный механизм контроля пользователей. Добавим в конфигурационный файл опцию:

Userlist_enable=YES

и создадим файл списка пользователей:

Touch /etc/vsftpd.user_list

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

Userlist_deny=NO

Теперь доступ к FTP-серверу будут иметь только явно указанные пользователи, их следует указывать в vsftpd.user_list по одному в строку, например:

Ivanov
petrov

Если не указано иное, то подключившись по FTP пользователи попадают в свой домашний каталог. Это не всегда удобно, часто нужно перенаправлять их в иную директорию. Если это общая для всех папка, скажем /var/ftp, то можно задать опцию:

Local_root=/var/ftp

Которая перенаправит всех пользователей в указанный каталог и изолирует их там.

Это самая простая ситуация, реальные задачи обычно сложнее, допустим нам надо установить пользователю Иванову в качестве корневой директории /var/www/example1.com , а Петрову /var/www/example2.com , чтобы каждый из них работал со своей папкой. Для этих целей можно использовать еще одну возможность vsftpd - пользовательские настройки, которые перекрывают настройки основного конфигурационного файла.

Для этого добавим опцию:

User_config_dir=/etc/vsftpd_user_conf

Затем создадим саму директорию

Mkdir /etc/vsftpd_user_conf

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

Создадим файл с настройками для Иванова:

Tocuh /etc/vsftpd_user_conf/ivanov

и внесем в него опцию:

Local_root=/var/www/example1.com

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

Если вам нужно скрыть реальных владельцев файлов и папок, то можно использовать опцию:

Hide_ids=YES

В этом случае вместо реальных владельцев и групп будет указано ftp:ftp, это может быть полезным в случае публичного сервера или наличия в списке пользователей посторонних лиц, которым вы не хотите раскрывать реальные имена пользователей вашей системы.

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

F TP (протокол передачи файлов) – это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее. Для более безопасной и быстрой передачи данных используйте SCP.

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и широко используемыми являются PureFTPd, ProFTPD и vsftpd. В этой статье мы будем устанавливать vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd для ограничения доступа пользователей к их домашнему каталогу и шифрования всей передачи с помощью SSL/TLS.

Хотя эта статья написана для Ubuntu 18.04, такие же инструкции применяются к Ubuntu 16.04 и любому дистрибутиву на базе Debian, включая Debian, Linux Mint и Elementary OS.

Предпосылки

Установка vsftpd на Ubuntu 18.04

Пакет vsftpd доступен в репозиториях . Чтобы установить его, просто выполните следующие команды:

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

Write_enable=YES

3. Chroot

Чтобы пользователи FTP не могли получить доступ к каким-либо файлам вне своих домашних каталогов, раскомментируйте настройку chroot.

/etc/vsftpd.conf

Chroot_local_user=YES

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

  • Метод 1. – Рекомендуемый способ разрешить загрузку – включить chroot и настроить FTP-каталоги. В этой статье мы создадим каталог ftp внутри home пользователя, который будет служить chroot и записываем каталог uploads для загрузки файлов.

    /etc/vsftpd.conf

    User_sub_token=$USER local_root=/home/$USER/ftp

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

    /etc/vsftpd.conf

    Allow_writeable_chroot=YES

4. Пассивные FTP-соединения

vsftpd может использовать любой порт для пассивных 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-сервер для его использования.

Вы можете использовать , подписанный доверенным центром сертификации, или создать самоподписанный сертификат.

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

В этой статье мы сгенерируем самоподписанный сертификат 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 disablesudo 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-й шаг.
  1. Создайте нового пользователя с именем newftpuser: sudo adduser newftpuser
  2. Добавьте пользователя в список разрешенных пользователей FTP: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Создайте дерево каталогов FTP и установите правильные разрешения: sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload.

На данный момент ваш FTP-сервер полностью работоспособен, и вы должны иметь возможность подключаться к вашему серверу с любым , который может быть настроен на использование шифрования TLS, например FileZilla.

Отключение доступа к оболочке

По умолчанию при создании пользователя, если явно не указано, у пользователя будет доступ к серверу SSH.

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

Создайте оболочку /bin/ftponly и сделайте ее исполняемой:

Echo -e "#!/bin/sh\necho "This account account is limited to FTP access only."" | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly

Добавьте новую оболочку в список допустимых оболочек в файл /etc/shells

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

Измените оболочку пользователя на /bin/ftponly:

Sudo usermod newftpuser -s /bin/ftponly

Заключение

В этой статье вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе Ubuntu 18.04.

Протокол передачи файлов (FTP) - это TCP протокол для передачи файлов между компьютерами. В прошлом он использовался также для загрузки [файлов в интернете], но, поскольку этот метод не использует шифрование, пользовательские данные как и содержимое файлов передаются в открытую и легко перехватываются. Поэтому, если вы здесь ищете способ безопасно передавать и загружать файлы, лучше обратитесь к статье по OpenSSH в разделе Удаленное администрирование .

FTP работает на основе модели клиент/сервер. Серверный компонент называется сервисом FTP . Он постоянно слушает FTP запросы от удаленных клиентов. При получении запроса он управляет входом и установкой соединения. На протяжении сессии он выполняет любые команды, переданные FTP клиентом.

vsftpd - установка FTP сервера

vsftpd - это сервис FTP , доступный в Ubuntu. Его легко устанавливать, настраивать и поддерживать. Для установки vsftpd вы можете выполнить следующую команду:

Sudo apt install vsftpd

Для запуска сервиса требуется добавить его в автозагрузку. Начиная с версии Ubuntu 15.04 используется Systemd , поэтому для добавления vsftpd в автозапуск надо ввести следующие команды:

Sudo systemctl start vsftpd sudo systemctl enable vsftpd

В Ubuntu Server может использоваться файервол ufw . Тогда вам потребуется разрешить порты 20 и 21

Sudo ufw allow 20/tcp sudo ufw allow 21/tcp

Конфигурационный файл содержит много параметров настройки. Информация по каждому параметру доступна в этом же файле. В качестве альтернативы вы можете посмотреть системное руководство по команде

Man 5 vsftpd.conf

для уточнения деталей по каждому параметру.

Доступ к FTP серверу может быть организован двумя способами:

В анонимном режиме удаленный клиент может получить доступ к FTP серверу, используя учетную запись пользователя по умолчанию с именем «anonymous» или «ftp» и передав адрес email в качестве пароля. В авторизованном режиме пользователь должен иметь учетное имя и пароль. Этот последний вариант крайне небезопасный и не должен использоваться за исключением специальных обстоятельств. Если вы хотите передавать файлы безопасно, смотрите SFTP в разделе по OpenSSH серверу. Пользовательский доступ к каталогам и файлам FTP сервера зависит от прав доступа пользователя, указанного при входе. Как правило, сервис FTP скрывает корневой каталог FTP сервера, подменяя его на домашний каталог FTP . Это скрывает корень файловой системы от удаленных сессий.

Настройка анонимного доступа по FTP

Настройка vsftpd по умолчанию не разрешает анонимную загрузку. Если вы хотите разрешить анонимную загрузку, измените в /etc/vsftpd.conf следующее:

Anonymous_enable=YES

В процессе установки создается пользователь ftp с домашним каталогом /srv/ftp. Это каталог по умолчанию для FTP .

Если вы желаете поменять его расположение, например, на /srv/files/ftp, просто создайте новый каталог и измените домашний каталог пользователя ftp:

Sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

После изменений перезапустите vsftpd:

Под конец скопируйте все файлы и каталоги, которые вы хотите сделать доступными для анонимного FTP в /srv/files/ftp (или /srv/ftp, если вы хотите оставить настройки по умолчанию).

По умолчанию анонимный пользователь не имеет возможности загружать файлы на FTP сервер. Для изменения этой настройки уберите комментарий на следующей строке и перезапустите vsftpd:

Anon_upload_enable=YES

Разрешение анонимному пользователю загружать файлы может оказаться серьезной угрозой безопасности. Лучше не разрешать анонимную загрузку файлов на сервера с прямым доступом из интернета.

Настройка авторизованного доступа по FTP

Прежде чем вносить какие-либо изменения в конфигурационный файл, рекомендуется скопировать образец для возможности отката изменений без переустановки пакета sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Для аутентификации локальных пользователей надо раскоментировать строчку

Local_enable=YES

По умолчанию vsftpd настроен на аутентификацию системных пользователей с возможностью получать файлы. Если вы хотите пользователям разрешить загружать файлы, измените в /etc/vsftpd.conf:

Write_enable=YES

после чего перезагрузите vsftpd:

Sudo service vsftpd restart

Теперь при входе системных пользователей по FTP они будут попадать в свои домашние каталоги, где они смогут скачивать, загружать [файлы], создавать каталоги и т.д.

Защита FTP

Ограничение пользователей

В /etc/vsftpd.conf существуют опции, помогающие сделать vsftpd более безопасным. Например, данная опция позволяет поместить локального пользователя в chroot() «заточение», выше которого (по дереву каталогов) он не сможет подняться.

Chroot_local_user=YES

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

Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

После снятия комментариев с этих опций, создайте /etc/vsftpd.chroot_list, содержащий список пользователей по одному на строку. Затем перезапустите vsftpd:

Sudo service vsftpd restart

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

Аналогично файл /etc/ftpusers содержит список пользователей, которым запрещен доступ по FTP . По умолчанию он включает root, daemon, nobody и т.п. Для запрета доступа по FTP для дополнительных пользователей, просто добавьте их в этот список.

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

Ответ: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

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

    Запретить запись в домашний каталог локальному пользователю (подходит не всем и не всегда)

sudo chmod a-w /home/user/ allow_writeable_chroot=YES

    Прописать /home каталогом, куда будут попадать локальные пользователи после входа на FTP сервер. Тогда каждый из них будет иметь возможность писать только в свой домашний каталог

local_root=/home

Шифрование

FTP может быть зашифрованным при использовании FTPS . В отличие от SFTP , FTPS - это FTP поверх SSL . SFTP - это сессия, подобная FTP , по зашифрованному SSH соединению. Основное отличие заключается в том, что пользователи SFTP должны иметь учетную запись с собственным окружением (shell account) вместо оболочки nologin. Предоставление всем пользователям доступа к оболочке может оказаться не лучшим решением для некоторых систем, таких как web сервер общего доступа. Однако есть возможность ограничить такие учетные записи только SFTP и запретить взаимодействие с оболочкой. Смотрите раздел по OpenSSH для дополнительной информации.

Для настройки FTPS, добавьте в конец файла /etc/vsftpd.conf следующее:

Ssl_enable=Yes

Также обратите внимание на опции сертификата и ключа:

Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

По умолчанию эти опции установлены в значения, предоставленные пакетом ssl-cert . Для рабочей среды они должны быть заменены на сертификат и ключ, созданные для определенного компьютера. Для дополнительной информации смотрите раздел Сертификаты .

Теперь перегрузите vsftpd и неанонимные пользователи будут использовать FTPS:

Sudo service restart vsftpd

Чтобы позволить пользователям с оболочкой /usr/sbin/nologin получить доступ к FTP , но не предоставлять shell доступ, отредактируйте /etc/shells, добавив к оболочке nologin:

# /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

Это необходимо, поскольку по умолчанию vsftpd использует авторизацию PAM, а файл настроек /etc/pam.d/vsftpd содержит:

Auth required pam_shells.so

Модуль PAM shells ограничивает доступ к оболочкам, перечисленным в файле /etc/shells.

Наиболее популярные клиенты FTP могут быть настроены на использование FTPS. FTP клиент командной строки lftp также имеет возможность использовать FTPS.

Это возможность передавать файлы с помощью file transfer protocol. Он используется для удобного обмена файлами по проводной и беспроводной местной сети. Этим локальный сервер может быть полезен как в работе, так и в домашних условиях. С использованием Ubuntu, FTP-сервер ещё более удобен, поскольку требует минимум сил и ресурсов для настройки и использования.

На базе Ubuntu можно установить ftp-сервер.


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

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

Переходим к практике. Демон Profpd

Для того чтобы установка FTP-сервера Ubuntu прошла удачно, мы используем так называемый «демон». Это программа, которая позволяет выполнять рутинные задачи, будучи запущенной в фоне. Демон, который нужен для FTP на Ubuntu - Proftpd. Его установка выполняется простой командой в Терминале :

«sudo apt-get install proftpd».

Когда установка будет завершена, потребуется обновить конфигурацию сервера и изменить базовые настройки. Это поможет конфигурировать процесс входа на сервер. Все нужные изменения требуется вносить в файле «/etc/proftpd/proftpd.conf». Его можно сразу открыть при помощи редактора nano.

Итак, настройка FTP-сервера Ubuntu началась. Прежде всего, изменим 2 нужных параметра.

В самый конец файла необходимо добавить строку:

«AuthUserFile /etc/proftpd/ftpd.passwd»

Именно в этом документе, который мы предложим вам добавить позднее, будут хранится основные параметры входа. Убираем символ комментария со строки «DefaultRoot» - «#». Теперь перейдём к правке файла «/etc/shells». В него нужно добавить строку «/bin/false». C помощью этих команд вы сможете добавлять новых пользователей в существующую группу:

«addgroup имя_пользователя группа», если вставить «имя_пользователя» = «ftp» и «группа» = «www-data», то становится возможным работать с файлами в «собственности» сервера.

Кроме того, установка FTP-сервера Ubuntu предусматривает команду «change owner»: «chown -R ftp:www-data». С её помощью можно сделать владельцем файлов пользователя «ftp». Группе пользователей «www-data» будет предоставлен групповой доступ к документам. Когда все настройки будут завершены, просто перезагрузите сервер:

«sudo /etc/init.d/proftpd restart»

Теперь нужно настраивать виртуальные учётные записи пользователей. Это необходимо делать по такой схеме:

«ftpasswd -passwd -file=/etc/proftpd/ftpd.passwd -name=(имя пользователя) -shell=/bin/false -home=/var/www/html -uid=(ID пользователя, можно узнать по команде «id ftp») -gid=(ID группы, допустим для группы «www-data» – 33)

«sudo nano /etc/dhcp3/dhcpd.conf»

В него нужно записать следующее:

«#Имя домена (внутренного).
option domain-name “имя_домена”;
#DNS сервер на подключаемом ПК.
option domain-name-servers IP_адрес;
#С этой строки нужно убрать комментарий «#».
authoritative;
#Желаемые данные подсети для сервера.
subnet 192.168.0.0 netmask 255.255.255.0 {
#Диапазон выдачи адресов.
range IP_адрес IP_адрес;
#Роутер с выходом в интернет. option routers IP_адрес;
#Загружаемый при начальной загрузке в сети файл.
filename = “tftp/pxelinux.0”;

Теперь осталось только перезагрузить DHCP-сервер:

«sudo /etc/init.d/dhcp3-server restart».

Как видите, настройка FTP-сервера Ubuntu не требует особых технических навыков. Кроме того, она довольно проста в исполнении для каждого, кто работал в Linux.

В завершение

В этой статье мы подробно и детально рассмотрели, как установить FTP-сервер на Ubuntu, а также уделили внимание настройке TFTP-сервера. Эти инструменты - прекрасный образец того, насколько Убунту гибка и функциональна. Если у вас всё же появились вопросы по её использованию и настройке - не стесняйтесь задавать их в комментариях к этой статье. А также читайте другие материалы на страницах нашего сайта.

F ile T ransfer P rotocol, т. е. FTP – протокол передачи файлов и, как понятно из полного названия, предназначен для передачи файлов между удалёнными компьютерами через сеть. Несмотря на то, что сам протокол FTP является на сегодняшний день не самым совершенным из-за того, что передаваемые данные не шифруются, однако это не делает его устаревшим. Кроме того всё-таки к FTP возможно применять криптографическую защиту на основе протокола SSL, что и делает FTP достойным инструментом для передачи файлов.

Поскольку FTP работает по схеме клиент-серверного взаимодействия, то умелая и надёжная реализация протокола (да и вообще системы) в состоянии обеспечить ему надёжную защиту, высокую скорость и, как следствие - популярность, что и можно наблюдать на сегодняшний день, ведь большинство крупных проектов, таких как ftp.gnu.org , ftp.suse.com , ftp.redhat.com , ftp.gnome.org и т. д., используют для распространения программного обеспечения со своих серверов именно FTP. Надо заметить, что такой популярностью FTP обязан, в большей степени, одной из своих многочисленных реализаций - vsFTPd. Это FTP- сервер, поддерживающий работу с самыми современными технологиями по защите данных - SSL и IPv6, его реализация совмещает в себе высокую надёжность, стабильность, скорость работы и передачи данных, а также гибкую настройку работы сервера и широкий функционал. Разработчиком vsFTPd является Крис Эванс - профессиональный исследователь в сферах защиты данных и информационной безопасности. vsFTPd является FTP-сервером по-умолчанию практически во всех Linux-системах, поскольку, как уже упоминалось, помимо надёжности и высокой скорости работы, обладает большими функциональными возможностями, самыми значимыми из которых являются:

  1. Работа с виртуальными пользователями.
  2. Работа с виртуальными IP-адресами.
  3. Конфигурирование пользователей.
  4. Поддержка
  5. SSL-шифровние для защиты передаваемых данных.
  6. Контроль полосы пропускания.

В данной статье рассматривается установка и настройка FTP-сервера на примере vsFTPd, который, кстати, является свободно распространяемым программным обеспечением (ПО) с открытым исходным кодом. Официальная страница проекта: https://security.appspot.com/vsftpd.html .

Установка vsFTPd

Установить Vsftd в Debian-ориентированных дистрибутивах Linux позволяет команда:

$ sudo apt-get install vsftpd

Также полезно будет установить и простой FTP-клиент для тестирования соединения и передачи файлов:

$ apt-get install ftp

Для дистрибутивов на основе RPM-пакетов, CentOS, RedHat:

$ yum install vsftpd $ yum install ftp

Обычно после установки демон vsFTPd автоматически запускается, убедиться в этом можно с помощью следующих команд:

$ systemctl status vsftpd

$ service vsftpd status

Запуск, перезапуск и остановка сервера:

$ systemctl start vsftpd $ systemctl restart vsftpd $ systemctl stop vsftpd

Для включения демона vsftpd в автозагрузку используется команда:

$ systemctl enable vsftpd

Аналогично и с командой service.

Если vsFTPd используется в серверных дистрибутивах, в которых часто работает фаервол, например ufw, то ещё может понадобиться разрешить использование портов 20 и 21:

$ ufw allow 20/tcp $ ufw allow 21/tcp

Настройка vsFTPd

Конфигурационным файлом для настройки vsFTPd является файл vsftpd.conf, который обычно находится в каталоге etc/. Ознакомиться с его одержимым можно командой cat:

$ cat /etc/vsftpd/vsftpd.conf

На всякий случай полезно перед редактированием оригинального файла настроек сделать его резервную копию:

$ sudo cp /etc/vsftpd.conf vsftpd.conf.backup

FTP-сервер vsFTPd предусматривает два основных варианта работы: с анонимными и авторизованными пользователями. Первый вариант считается «более безопасным», но только потому, что для обеспечения надёжной защиты практически ничего настраивать и не нужно. Но при грамотной организации авторизованного доступа, предполагающего работу с FTP локальных пользователей системы, можно обеспечить безопасность ничуть не хуже, чем при использовании анонимного доступа.

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

Работа vsFTPd в данном режиме заключается в том, что действия с файлами на удалённом сервере производятся одним определённым по умолчанию пользователем, например, пользователем с именем «ftp » или «anonymous », при этом в качестве пароля используется e-mail.

Чтобы включить анонимный доступ по FTP нужно в фале vsftpd.conf определить значение «YES» для соответствующей директивы:

Anonymous_enable=YES

Теперь для управления файлами будет использоваться определённый каталог (обычно это /srv/ftp) и определённый пользователь - обычно ftp.

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

$ sudo mkdir /srv/share/ftp $ sudo usermod -d /srv/share/ftp ftp

Если нужно, чтобы анонимные пользователи могли ещё и загружать файлы на удалённый сервер, то это позволит сделать директива:

Anon_upload_enable=YES

Теперь можно скопировать необходимые для анонимного доступа файлы в домашнюю папку пользователя ftp и перезапустить демон vsftpd:

$ systemctl restart vsftpd

Обычно этого набора настроек достаточно для организации анонимного FTP-доступа. Для проверки соединения можно выполнить команду ftp address_host:

$ ftp 127.0.0.1

$ ftp localhost

что в случае успешного выполнения даст примерно такой вывод:

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

Local_enable=YES

Write_enable=YES

Теперь нужно перезапустить vsftpd для активации сделанных изменений:

$ systemctl restart vsftpd

Ограничение пользователей в своих домашних каталогах

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

Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

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

Chroot_local_user=YES

которая «запирает» в chroot() локальных пользователей и выше своих домашних каталогов они подняться не смогут, то в этом случае пользователи в файле vsftpd.chroot_list ограничиваться своими домашними каталогами не будут, в отличии от тех, кто в этот список не внесён.

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

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Лучшим способом исправить эту ошибку является указание некоего общего корневого каталога, куда при подключении будут попадать все пользователи, имея доступ лишь к своим домашним поддиректориям, например:

Local_root=/home

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

Allow_writeable_chroot=YES

Но всё же это стоит делать лишь тогда, когда есть чёткое понимание, зачем это нужно для конкретной ситуации.

Защита данных с помощью SSL

Чтобы иметь возможность шифровать передаваемые данные, следует настроить vsFTPd в режиме FTPS. Это та же самая передача данных по FTP, но организованная поверх SSL – протокола. Шифрующего и проверяющего данные с помощью сертификатов и ключей.

Для включения режима FTPS нужно задействовать следующую директиву:

Ssl_enable=Yes

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

Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Эти сертификат и ключ необходимо заменить. Для использования FTPS необходимо использовать сертификат и ключ. Cгенерированные (или полученные) для конкретного сервера или компьютера.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .