2.5.11 Настройка ProFTPD
Скачать документ Установка и настройка proftpd
Создание отдельных пользователей для авторизации на FTP-сервере
Настройка анонимного пользователя
Создание виртуальных пользователей
Настройка прав доступа
Настройка ProFTPd с использованием TLS
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Сервер графический
- Версия ПО: proftpd-1.3.6e-1
ProFTPD — это FTP-сервер, который позволяет использовать виртуальных пользователей с сопоставимыми с UID идентификаторами системных пользователей, а также настраивать анонимный доступ, ограничивать права доступа и работать через протокол FTP с поддержкой TLS для безопасной передачи данных. Преимущества ProFTPD также включают гибкость настройки, возможность установки квот на дисковое пространство, ограничение скорости передачи данных, управление правами доступа.
Установка и настройка proftpd
Для установки proftpd перейдите в сеанс пользователя root:
su -
и выполните команду:
dnf install proftpd proftpd-utils
Запустите сервис proftpd и добавьте его в автозагрузку:
systemctl enable proftpd --now
Для проверки статуса сервиса proftpd выполните команду:
systemctl status proftpd ● proftpd.service - ProFTPD FTP Server Loaded: loaded (/usr/lib/systemd/system/proftpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2023-02-20 10:21:26 MSK; 36s ago Process: 1924238 ExecStartPre=/usr/sbin/proftpd --configtest (code=exited, status=0/SUCCESS) Main PID: 1924243 (proftpd) Tasks: 1 (limit: 2329) Memory: 38.5M CPU: 95ms CGroup: /system.slice/proftpd.service └─1924243 proftpd: (accepting connections) фев 20 10:21:24 localhost.localdomain systemd[1]: Starting ProFTPD FTP Server... фев 20 10:21:24 localhost.localdomain proftpd[1924238]: Checking syntax of configuration file фев 20 10:21:25 localhost.localdomain proftpd[1924238]: daemon[1924238]: processing configuration directory '/etc/proftpd/conf.d' фев 20 10:21:26 localhost.localdomain systemd[1]: Started ProFTPD FTP Server.
После запуска службы proftpd FTP-сервер сразу готов предоставлять доступ с аутентификацией от имен существующих локальных пользователей данного сервера. При этом предоставляется полный доступ к домашней директории пользователя. Произвести подключение можно с помощью файлового менеджера или ftp-клиента FileZilla.
Создание отдельных пользователей для авторизации на FTP-сервере
Добавьте группу ftpgroup и пользователя ftpuser:
groupadd ftpgroup useradd ftpuser -d /home/ftpuser -s /bin/false -g ftpgroup
Здесь:
ftpuser – имя пользователя;
-d /home/ftpuser – домашний каталог для пользователя ftpuser;
-s /bin/false – ключ указывает, что пользователю будет отключен shell в целях безопасности;
ftpgroup – группа пользователя.
Назначьте пароль для пользователя ftpuser командой:
passwd ftpuser
Выполните команду, которая добавит в /etc/shells запись /bin/false в качестве недействительной оболочки (shell). Это предотвратит непосредственный вход в систему пользователя ftpusers, но для входа по ftp этого будет достаточно:
echo '/bin/false' >> /etc/shells
Перезапустите службу proftpd для применения настроек:
systemctl restart proftpd
Настройка анонимного пользователя
Для активации анонимного доступа добавьте параметр PROFTPD_OPTIONS="-DANONYMOUS_FTP"
в файл /etc/sysconfig/proftpd.
Сервер proftpd сопоставляет анонимных клиентов (anonymous) с пользователем FTP. Пользователь с логином FTP имеет оболочку /sbin/nologin, которая на самом деле не является оболочкой (shell), и такому пользователю будет запрещено запускать сеанс командой строки. Однако его можно использовать в качестве пользователя на FTP-сервере.
Добавьте ложную оболочку /sbin/nologin в файл списка оболочек /etc/shells.
echo '/sbin/nologin' >> /etc/shells
Перезапустите службу proftpd для применения настроек:
systemctl restart proftpd
При подключении анонимному пользователю доступны два каталога — pub и uploads, которые находятся в корневой директории FTP-сервера /var/ftp/.
Директория /pub – общедоступный каталог FTP, который имеет права только на чтение.
Директория /uploads – имеет права на запись, но при этом просматривать содержимое директории запрещено.
Создание виртуальных пользователей
В качестве примера настроим доступ к FTP-серверу с возможностью авторизации под виртуальным пользователем. Хранить виртуальных пользователей можно в файле или базе данных.
Создайте домашний каталог для пользователя, при подключении виртуальным пользователем будет открываться именно эта директория, например:
mkdir /home/vftp1
После этого создайте файл с паролями и виртуальными пользователями, которые сопоставляются с локальными учетными записями по их UID и GID:
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=vftp1 --uid=48 --gid=48 --home=/home/vftp1 --shell=/sbin/nologin
Здесь:
/etc/proftpd/ftpd.passwd — полный путь до файла, в котором хранятся пользователи;
vftp1 — имя пользователя (логин);
uid и gid — идентификаторы пользователя и группы системной учетной записи, от которой будет выступать сервер;
/home/vftp1 — домашний каталог пользователя;
/sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.
Откройте файл конфигурации /etc/proftpd.conf и закомментируйте строку, которая начинается на «AuthOrder».
Создайте дополнительный конфигурационный файл в каталоге /etc/proftpd/conf.d (в нем находятся пользовательские конфигурационные файлы) и добавьте следующие строки:
nano /etc/proftpd/conf.d/virtual.conf
AuthUserFile /etc/proftpd/ftpd.passwd
AuthOrder mod_auth_file.c
Перезапустите службу proftpd для применения настроек:
systemctl restart proftpd
Теперь можно подключится к FTP-серверу от имени виртуального пользователя vftp1.
Настройка прав доступа
Разберем пример, когда к одной и той же папке необходимо будет предоставить разные права — одному пользователю только на чтение, другому — на чтение и запись.
Производим изменения в конфигурационном файле /etc/proftpd/conf.d/rights.conf, добавив следующее содержимое:
<Directory /var/www>
<Limit WRITE>
Order deny,allow
AllowUser vuser1
</Limit>
<Limit ALL>
AllowAll
</Limit>
</Directory>
где:
<Directory /var/www> — задаются права для директории /var/www;
AllowUser vuser1 — разрешение для vuser1 только права на чтение, для других пользователей запись и чтение файлов доступны.
Перезапустите службу proftpd для применения настроек:
systemctl restart proftpd
Настройка ProFTPd с использованием TLS
Протокол TLS — криптографический протокол, который обеспечивает защищённый обмен данными между сервером и клиентом.
В файле /etc/sysconfig/proftpd задайте значение для опции PROFTPD_OPTIONS: "-DTLS"
.
Создайте сертификат с помощью команды:
openssl req -x509 -days 1461 -nodes -newkey rsa:2048 -sha256 -keyout /etc/pki/tls/private/postfix.key -out /etc/pki/tls/certs/proftpd.pem -subj "/C=RU/ST=MSK/L=Murom/O=REDos Security/OU=IT Department/CN=192.168.1.240/CN=ftp"
Затем в файле /etc/proftpd/mod_tls.conf необходимо определить дополнительные опции и пути к сертификату, которые были указаны в генерации сертификата:
TLSEngine on
TLSRequired off
TLSProtocol SSLv23 TLSv1.2
TLSCertificateChainFile /etc/pki/tls/certs/proftpd.pem
TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
TLSRSACertificateKeyFile /etc/pki/tls/private/postfix.key
В итоге файл /etc/proftpd/mod_tls.conf должен выглядеть следующим образом:
В файле конфигурации /etc/proftpd.conf необходимо прописать строку Include /etc/proftpd/mod_tls.conf
, для того чтобы FTP-сервер использовал конкретные настройки конфигурации.
Перезапустите службу proftpd для применения изменений:
systemctl restart proftpd
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.