- Настройка ftp linux debian
- Введение
- Установка
- Настройка
- Анонимный доступ
- Авторизованный доступ
- SFTP — SSL
- Известные проблемы и их решения
- Кодировки
- Дополнительная информация
- Ссылки
- Sysadminium
- Реализуемая схема
- Установка и настройка FTP сервера
- Создание FTP-пользователей
- Включение TLS
- Подключение к серверу (FTP-клиенты)
- Формат логов
- Итог
Настройка ftp linux debian
Установка и настройка ftp-сервера vsftpd.
Введение
Цель этой статьи — рассмотреть более подробно этапы внедрения сервера разделения файлов средством FTP, используя vsftpd (Very Secure FTP Daemon).
Установка
Установите vsftpd через Aptitude или ?apt-get :
После завершения установки, сервер будет автоматически запущен, и начнёт слушать TCP порт 21. Проверить что сервер успешно запустился можно с помощью команды netstat:
# netstat -npl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 22468/vsftpd
Если ваш ftp-сервер «vsftpd» находится не за firewall, то перед тем как настроить «vsftpd» для использования, будет разумно временно остановить его:
Настройка
Файл со значениями по умолчанию параметров настройки находится в /etc/vsftpd.conf
- Логические параметры — основные параметры, которые могут содержать логические значения: либо YES либо NO;
- Числовые параметры — параметры, содержащие различные значения в числах, т.н. время в секундах или номер порта для соединения;
- Строковые параметры — содержат строку, т.н. путь к каталогу в файловой системе на диске: /var/run/vsftpd/;
Отдельно стоит отметить тот факт, что параметры (и их значения) могут отсутствовать в файле с настройками, это означает, что используется значение по умолчанию, обозначаемое как «Default:» в «man vsftpd.conf». Многие, не зная этого, уверены, что параметрам требуется напрямую указывать значения, и поэтому их файл с настройками вырастает до огромных размеров, хотя, на самом деле, обычно необходимо записать в файл настроек «/etc/vsftpd.conf» всего лишь несколько параметров, для установки значений вместо значений по умолчанию, если значения по умолчанию остальных параметров настройки приемлемы, то значит они не нуждаются в повторном добавлении.
Многие параметры настройки зависят от других параметров, например, если те параметры, от которых они зависят, отключены, то интересующие вас параметры настройки просто не будут работать. Некоторые параметры являются взаимоисключающими, то есть, это значит что они не будут работать в паре с определёнными другими установленными параметрами.
Символ решётки «#» — переводит автоматически следующую за ним всю строку, в комментарий, не используемый программой vsftpd.
Анонимный доступ
По умолчанию разрешён только анонимный аккаунт, который имеет доступ к каталогу /srv/ftp/. Если вы хотите его отключить:
Для того, чтобы изменить каталог по умолчанию, используйте параметр anon_root :
Если вы хотите оставить анонимный доступ, то Вам возможно потребуется установить следующие параметры:
anon_upload_enable=YES anon_mkdir_write_enable=YES
- anon_upload_enable — разрешает или запрещает запись в каталог анонимного пользователя (значение переменной anon_root) (по умолчанию выключено(NO));
- anon_mkdir_write_enable — разрешает в том же самом каталоге создание каталогов (по умолчанию выключено(NO));
Также Вы можете указать владельца загруженных на ftp-сервер «vsftpd» файлов: Полезным может оказаться факт указания точных прав существующего в операционной системе пользователя как владельца загруженных файлов :
chown_uploads=YES chown_username=username
Авторизованный доступ
Для того, чтобы разрешить авторизацию существующих в операционной системе пользователей, раскомментируйте:
Для того, чтобы разрешить таким (локальным) пользователям права на запись:
Пользовательские права могут иметь доступ к файлам всей системы, это всегда очень не желательно, и способствует компроментации машины; редактируя параметры 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 доступен здесь
Ссылки
- vsftpd — Официальный сайт «Very Secure FTP Daemon»
- vsftpd — manpage of VSFTPD.CONF — Официальный сайт «vsftpd», Руководство по VSFTPD.CONF
Sysadminium
В этой статье я покажу как создать FTPS сервер на Linux (Debian 11) с отдельными каталогами для разных пользователей.
Реализуемая схема
В этой статье я покажу процесс подготовки FTPS сервера на Linux, при этом каждый пользователь будет видеть только свой каталог.
Установка и настройка FTP сервера
Я буду использовать Very Secure FTP Daemon (vsftpd), устанавливаем пакет:
После установки, у вас появится новая служба — vsftpd.service:
# systemctl status vsftpd.service ● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-12-09 13:14:31 MSK; 26s ago Process: 1135 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 1136 (vsftpd) Tasks: 1 (limit: 4915) Memory: 1.0M CGroup: /system.slice/vsftpd.service └─1136 /usr/sbin/vsftpd /etc/vsftpd.conf
Перед настройками сервера, сделаем резервную копию конфига:
# cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
# nano /etc/vsftpd.conf anonymous_enable=NO # запрещаем вход анонимных пользователей local_enable=YES # разрешаем вход по ftp для локальных пользователей write_enable=YES # разрешаем писать на ftp (загружать или удалять файлы) local_umask=077 # маска для вновь создаваемых файлов xferlog_enable=YES # записывать в лог файл все транзакции по передаче файлов xferlog_std_format=YES # использовать стандартный формат лога xferlog_file=/var/log/vsftpd.log # файл лога connect_from_port_20=YES # исходящие с сервера FTP-соединения по 20 порту вместо случайного listen=YES # ожидать входящие соединения listen_ipv6=NO # для ipv6 не ожидать входящие соединения pam_service_name=vsftpd # использовать PAM библиотеки userlist_enable=YES # разрешим вход только для перечисленных пользователей userlist_file=/etc/vsftpd.userlist # перечислим пользователей в этом файле userlist_deny=NO # пользователи, которые есть в списке не будут отбрасываться chroot_local_user=YES # пользователи ограничены только своей домашней папкой
Различные опции хорошо описаны здесь, на русском языке.
После настройки перезапустим службу:
# systemctl restart vsftpd.service
По желанию, проверим слушает ли наш ftp сервер входящие соединения:
# ss -ltupn | grep vsftpd tcp LISTEN 0 32 0.0.0.0:21 0.0.0.0:* users:(("vsftpd",pid=1273,fd=3))
Создание FTP-пользователей
Создадим первого и второго пользователя и запишем их в userlist. Все остальные, локальные пользователи, не смогут подключаться по протоколу FTP:
# adduser ftp_user1 # adduser ftp_user2 # nano /etc/vsftpd.userlist ftp_user1 ftp_user2
Включение TLS
Сейчас уже можно подключиться к нашему FTP-серверу, но логины и пароли, при этом, будут передаваться открытым текстом. Чтобы этого избежать включим поддержку TLS, превратив FTP-сервер в FTPS-сервер.
Создадим самоподписанный ssl сертификат на 10 лет:
# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
# nano /etc/vsftpd.conf ssl_enable=YES # включим ssl rsa_cert_file=/etc/ssl/private/vsftpd.pem # путь к файлу ключа rsa_private_key_file=/etc/ssl/private/vsftpd.pem # путь к файлу сертификата allow_anon_ssl=NO # запретим анонимные подключения по ssl force_local_data_ssl=YES # разрешим передачу данных только по ssl force_local_logins_ssl=YES # разрешим подключаться только по ssl ssl_tlsv1=YES # разрешим алгоритм tlsv1 ssl_sslv2=NO # запретим устаревший sslv2 ssl_sslv3=NO # запретим устаревший sslv3
Затем перезапустим службу:
# systemctl restart vsftpd.service
Подключение к серверу (FTP-клиенты)
Для подключения можно использовать FileZilla, WinSCP, или обычный Windows Проводник.
Я покажу как подключиться к FTP серверу с помощью приложения FileZilla. После запуска приложения вы увидите такое окно:
Слева будет локальная файловая система, а справа удалённая. Вы можете совершить быстрое подключение, указав: хост, имя пользователя, пароль и порт. Или можете сохранить подключение, чтобы использовать его в последующем несколько раз. Для того, чтобы сохранить подключение, откройте менеджер сайтов, выбрав в меню «Файл / Менеджер сайтов«. Каждый сайт — это сохранённое подключение. Создавая новый сайт вы можете указать ip-адрес, порт, логин и пароль и другое:
Дальше, используя созданные сайты, вы сможете подключаться к различным FTP серверам.
Формат логов
Далее я подключился с помощью FileZilla к своему FTP серверу. И выполнил некоторые действия:
В журнале (/var/log/vsftpd.log) появились следующие записи:
Mon Dec 12 15:06:29 2022 1 192.168.0.5 6 /user2/test.txt a _ o r ftp_user2 ftp 0 * c Mon Dec 12 15:25:39 2022 1 192.168.0.5 7254 /user2/report.json b _ i r ftp_user2 ftp 0 * c Mon Dec 12 15:27:53 2022 1 192.168.0.5 6 /user2/test.txt a _ i r ftp_user2 ftp 0 * c
Здесь видна следующая информация:
- дата и время транзакции, а также ip-адрес клиента ( Mon Dec 12 15:06:29 2022 1 192.168.0.5 );
- размер файла в байтах и сам файл ( 7254 /user2/report.json );
- режим передачи: (a — ASCII, b — двоичный), символ (_) — означает, что не было произведено никаких специальных операций, и направление передачи (o — файл скачали, i — файл загрузили) — ( a _ o ) или ( b _ i );
- символ (r) — означает что пользователь был зарегистрирован в системе, дальше идёт имя пользователя ( r ftp_user2 ).
Логирование желательно включать, чтобы в случае чего знать, кто и что делал с файлами по FTP.
Итог
Из статьи вы узнали как подготовить FTPS сервер на Linux. Я все действия выполнял на системе Debian 11, но на Ubuntu 22.04 всё делается аналогично. Показал как защитить сервер с помощью TLS протокола, как использовать userlist, для создания списка разрешённых пользователей.
В этой статье я покажу как создать ftps сервер на Linux (Debian 11) с отдельными каталогами для разных пользователей