Настройка ftp сервера debian

Обновлено: 05.07.2024

FTP очень полезная вещь, он позволяет легко подключаться к удаленному серверу, для загрузки или скачивания данных.
Со всеми недостатками и изъянами в безопасности, FTP должен был отойти на второй план, как и протокол telnet, однако у него оказалось намного больше преимуществ, по этому он используется по сей день и довольно успешно. К нему появилось довольно много модификаций, которые позволяют например: заворачивать трафик в SSL/TLS для повышения безопасности переделываемых по сети данных, как это сделать можно ознакомиться в статье- Настрока ProFTPd для использования TLS Но на этот раз не о Proftpd.
Данная статья была вынесена в отдельный топик, для того чтобы ее было проще найти на сайте. Раньше она находилась в статье по настройке Nginx+Apache, но думаю что она будет намного полезнее в качетсве самостоятельного материала.
Переходим в режим супер пользователя root:
Для Debian:

Для Ubuntu


Нашей основной задачей является блокирование пользователя внутри своей домашней директории, для того, чтобы не допустить его переход в папки «соседей» по серверу. Для этого мы немного подредактируем конфигурационный файл vsftpd.conf.

Находим и редактируем следующие строчки:


напишем свой баннер для входа, хотя он и не обязателен( на работу он не влияет):


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


ну под данной записью добавим:


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


Запрещаем анонимный доступ, необходимо найти строку:

И привести ее к виду:


Ну и добавим работу в пассивном режиме:

Поддержка IPv6 в vsFTPd

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

Её необходимо за комментировать, чтобы она выглядела:

Также, нам необходимо найти строку:

И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6

Права доступа на файлы и директории

Параметр local_umask отвечает за то, какие права будут присвоены файлам, которые были закачаны через FTP, по умолчанию там установлено local_umask=022, маска расчитывается очень просто, по формуле 777-A=X
Где:
777-права полного доступа
А-права которые необходимо получить
Х-маска, которую необходимо выставить
Предположим, нам необходимо получить права 754 что соотвествует drwxr-xr--, тогда 777-754=23 получается local_umask=023.
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:


И меняем 022 на 023 или на ту которая необходима в вашей ситуации:

Авторизация vsftpd и /bin/false

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

Создадим для него пароль:

Рассмотрим это выражение более подробно.
Где:
username -имя пользователя(логин)
home-Директория где будет находиться его домашний каталог
ключ -m — указывает на то, что его домашней директории будет присвоено название которое было указано в username.
ключ -U -Указывает на то что необходимо создать одноименную группу.
-s /bin/false -что пользователю будет отключен шелл (это важный и тонкий момент!)
Назначение остальных ключей можно нагуглить за пару минут.

Если пользователю отключить шелл, то он не сможет залогиниться на FTP сервер, его будет просто отфутболивать.
Вдумчивое чтение документации по vsFTPd рассказало мне, что доступ к FTP могут получить пользователи которые имеют работоспособный шелл т.е. /bin/bash, для того чтобы пользователи с /bin/false могли авторизироваться на нашем ftp, нам необходимо отредактировать файл /etc/pam.d/vsftpd

Найти и закоментировать строку (она самая последняя)


чтобы она выглядела:


И перезапускаем vsftpd


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


там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.

На этом можно закончить.
Чтобы устранить проблему с настройкой vsFTPd на Ubuntu 12.04, воспользуйтесь заметкой: Ремонтируем vsFTPd в Ubuntu 12.04

Установка и настройка ftp-сервера vsftpd.

  1. Введение
  2. Установка
  3. Настройка
    1. Анонимный доступ
    2. Авторизованный доступ
    3. Содержание пользователей в «песочнице»
    4. SFTP - SSL
    1. Кодировки

    Введение

    Цель этой статьи - рассмотреть более подробно этапы внедрения сервера разделения файлов средством FTP, используя vsftpd (Very Secure FTP Daemon).

    Установка

    Установите vsftpd через Aptitude или ?apt-get :

    После завершения установки, сервер будет автоматически запущен, и начнёт слушать TCP порт 21. Проверить что сервер успешно запустился можно с помощью команды netstat:

    Если ваш ftp-сервер "vsftpd" находится не за firewall, то перед тем как настроить "vsftpd" для использования, будет разумно временно остановить его:

    Настройка

    Файл со значениями по умолчанию параметров настройки находится в /etc/vsftpd.conf

    • Логические параметры - основные параметры, которые могут содержать логические значения: либо YES либо NO;
    • Числовые параметры - параметры, содержащие различные значения в числах, т.н. время в секундах или номер порта для соединения;
    • Строковые параметры - содержат строку, т.н. путь к каталогу в файловой системе на диске: /var/run/vsftpd/;

    Отдельно стоит отметить тот факт, что параметры (и их значения) могут отсутствовать в файле с настройками, это означает, что используется значение по умолчанию, обозначаемое как "Default:" в "man vsftpd.conf". Многие, не зная этого, уверены, что параметрам требуется напрямую указывать значения, и поэтому их файл с настройками вырастает до огромных размеров, хотя, на самом деле, обычно необходимо записать в файл настроек "/etc/vsftpd.conf" всего лишь несколько параметров, для установки значений вместо значений по умолчанию, если значения по умолчанию остальных параметров настройки приемлемы, то значит они не нуждаются в повторном добавлении.

    Многие параметры настройки зависят от других параметров, например, если те параметры, от которых они зависят, отключены, то интересующие вас параметры настройки просто не будут работать. Некоторые параметры являются взаимоисключающими, то есть, это значит что они не будут работать в паре с определёнными другими установленными параметрами.

    Анонимный доступ

    По умолчанию разрешён только анонимный аккаунт, который имеет доступ к каталогу /srv/ftp/. Если вы хотите его отключить:

    Для того, чтобы изменить каталог по умолчанию, используйте параметр anon_root :

    Также Вы можете указать владельца загруженных на ftp-сервер "vsftpd" файлов: Полезным может оказаться факт указания точных прав существующего в операционной системе пользователя как владельца загруженных файлов :

    Авторизованный доступ

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

    Для того, чтобы разрешить таким (локальным) пользователям права на запись:

    Содержание пользователей в «песочнице»

    Пользовательские права могут иметь доступ к файлам всей системы, это всегда очень не желательно, и способствует компроментации машины; редактируя параметры Vsftpd.conf, пользователей можно поместить в «песочницу»:

    Их корень FTP будет тогда их личным каталогом.

    Пользовательский аккаунт из системы может использоваться не только для ftp, но и для других случаев; для того, чтобы авторизоваться в системе в совершенно другом месте, например: ssh, getty (логин терминала). Пользователь будет иметь в таком случае также доступ к оболочке системы shell. Вы можете настроить, приведённые в примере, службы для того, чтобы блокировать возможность авторизации через аккаунт пользователя на службе или поместить его в «песочницу», но универсальное решение состоит в том, чтобы отключить shell для аккаунта пользователя.

    Для этого, shell пользователя назначается в false, простой бинарник, который возвращает сигнал ошибки :

    Затем необходимо добавить false в список оболочек shell:

    SFTP - SSL

    Известные проблемы и их решения

    Кодировки

    Дополнительная информация

    Файл хорошо прокомментирован на английском языке, а также, все параметры хорошо задокументированы и находятся под тем же именем в руководстве на страницах man:

    Перевод файла "FAQ", содержащего часто задаваемые вопросы, из последней версии vsftpd доступен ?здесь

    Сама программа располагается в каталоге "/usr/sbin/vsftpd", возможно, в разных дистрибутивах файл vsftpd.conf находится в разных местах, узнать его расположение, к примеру, можно командой "whereis vsftpd".

    Перевод последней версии странички vsftpd_conf.html доступен здесь

    После установки следует обратить внимание на файлы, содержащие документацию в каталоге "/usr/share/doc/vsftpd", каталог "EXAMPLE" уже содержит различные примеры файла настроек "vsftpd.conf".

    Перевод различных примеров с документацией из каталога "EXAMPLE" последней версии vsftpd доступен здесь


    В этом руководстве мы покажем вам, как установить FTP-сервер в Debian 10. Для тех из вас, кто не знал, FTP означает «протокол передачи файлов» и позволяет передавать файлы на удаленный компьютер. Наиболее распространенным программным обеспечением FTP-сервера для Ubuntu является пакет vsftpd, что означает «очень безопасный демон FTP». Это пакет FTP по умолчанию для Ubuntu, а также для большинства других дистрибутивов Linux.

    Установите FTP-сервер в Debian 10 Buster

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

    Шаг 2. Установка FTP-сервера в системах Debian.

    Пакет vsftpd доступен в репозиториях Debian. Начнем с обновления нашего списка пакетов и установки демона vsftpd:

    После завершения установки вы можете проверить версию пакета vsftpd, выполнив следующую команду в Терминале:

    Шаг 3. Настройте FTP-сервер.

    Теперь мы выполним некоторые настройки, необходимые для настройки FTP-сервера в нашей ОС Debian:

    Добавьте / измените следующие параметры с этими значениями:

    После сохранения файла конфигурации перезапустите vsftpd, примените новые изменения:

    Шаг 4. Настройте брандмауэр.

    Чтобы открыть порт 21 (командный порт FTP), порт 20 ( порт данных FTP) и (диапазон пассивных портов), выполните следующие команды: 30000 - 31000

    Перезагрузите правила UFW, отключив и снова включив UFW:

    Шаг 5. Создайте пользователя FTP.

    Теперь мы создадим нового пользователя, которого будем использовать для входа в FTP. В этом примере мы создадим нового пользователя с именем chedelics:

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

    Шаг 6. Протестируйте FTP-сервер в Debian 10.

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

    Поздравляю! Вы успешно установили FTP-сервер . Благодарим вас за использование этого руководства для установки FTP-сервера в вашей системе Debian 10 Bustersystem. Для получения дополнительной помощи или полезной информации мы рекомендуем вам посетить официальный сайт vsftpd .

    В этой инструкции мы покажем как выполняется установка FTP сервера vsftpd в Debian 11.

    Шаг 1: Установка vsftpd в Debian 11

    Сначала откройте терминал и обновите списки пакетов на вашем сервере Debian.

    Пакет vsftpd размещен в официальных репозиториях Debian. Поэтому используйте диспетчер пакетов APT, как показано ниже.

    Эта команда устанавливает vsftpd наряду с другими зависимостями. После установки vsftpd запускается автоматически. Вы можете проверить это выполнив команду:

    Из данных вы можете видеть, что vsftpd работает, как и ожидалось.

    Проверка службы vsftpd в Debian 11

    Проверка службы vsftpd в Debian 11

    В случае если служба vsftpd не запущена, вы можете запустить ее вручную для этого введите.

    Затем включите запуск службы во время загрузки операционной системы.

    Шаг 2. Создание уникального пользователя FTP

    Создание пользователя FTP в Debian 11

    Создание пользователя FTP в Debian 11

    Шаг 3. Добавьте пользователя FTP в список разрешенных пользователей для входа

    Итак, выполните команду:

    Добавление пользователя FTP в файл списка пользователей vsftpd

    Добавление пользователя FTP в файл списка пользователей vsftpd

    Теперь давайте продолжим и настроим vsftpd.

    Шаг 4: Создание каталога пользователя FTP

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

    $ sudo mkdir -p /home/ftpuser/ftp_dir
    $ sudo chmod -R 750 /home/ftpuser/ftp_dir
    $ sudo chown -R ftpuser: /home/ftpuser/ftp_dir

    Шаг 5: Настройка vsftpd в Debian

    Для настройки vsftpd требуется несколько дополнительных манипуляций. И их надо выполнить, прежде чем мы сможем войти в систему и начать взаимодействовать с сервером. Для этого отредактируйте основной файл конфигурации – /etc/vsftpd.conf .

    Есть несколько настроек, которые вам необходимо сделать.

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

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

    write_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES

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

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

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

    Файл конфигурации должен содержать следующие строки:

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

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

    Шаг 5. Доступ к серверу vsftpd в Debian

    $ sudo ufw allow 20/tcp

    $ sudo ufw allow 21/tcp

    Затем перезагрузите брандмауэр, чтобы изменения вступили в силу.

    $ sudo ufw reload

    Теперь включите свой FTP-клиент, например FileZilla, и заполните данные следующим образом:

    Хост: sftp://сервер-IP

    Имя пользователя: пользователь ftpuser

    Пароль: Пароль пользователя ftpuser

    Подключение к ftp серверу vsftpd на Дебиан 11

    Подключение к ftp серверу vsftpd на Дебиан 11

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

    Безопасная передача файлов на сервер и с сервера с помощью SSL

    Безопасная передача файлов на сервер и с сервера с помощью SSL

    Так же можно сделать при помощи командной строки. Для этого выполните команду:

    Войдите на сервер vsftpd из командной строки

    Заключение

    В этой инструкции мы показали, как установить FTP сервер vsftpd в Debian 11. А так же показали как создать пользователя, настроить сервер и войти в систему с помощью FTP-клиента и командной строки.

    Читайте также: