: | : |
‹ | › | |||||
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
2017-12-07 12:09:16 21451 1
Установка и настройка FTP сервера Proftpd на Debian 9
Для обмена файлами в интернете очень удобным является использование протокола ftp. Протокол построен на архитектуре «клиент-сервер» и использует разные сетевые соединения для передачи команд и данных между клиентом и сервером. Рассмотрим один из самых популярных FTP-серверов для сред Linux и Unix это Proftpd.
Установку и настройку будем производить на сервере c Linux операционный системой Debian 9 "Stretch"
Подключим репозитории Debian
Настройка репозиториев выполняется в конфигурационном файле пакетного менеджера /etc/apt/sources.list
cat /etc/apt/sources.list
# deb cdrom:[Debian GNU/Linux 9.1.0 _Stretch_ - Official amd64 #DVD Binary-1 20170722-11:31]/ stretch contrib main #deb cdrom:[Debian GNU/Linux 9.1.0 _Stretch_ - Official amd64 DVD #Binary-1 20170722-11:31]stretch contrib main deb http://security.debian.org/debian-security stretch/updates main contrib deb-src http://security.debian.org/debian-security stretch/updates main contrib # stretch-updates, previously known as "volatile" # A network mirror was not selected during install. The following entries # are provided as examples, but you should amend them as appropriate # for your mirror of choice. # deb http://deb.debian.org/debian/ stretch main contrib deb-src http://deb.debian.org/debian/ stretch main contrib deb http://deb.debian.org/debian/ stretch-updates main contrib deb-src http://deb.debian.org/debian/ stretch-updates main contrib
Синхронизируем репозитории
sudo apt-get update
Устанавливаем Proftpd
sudo apt-get install proftpd ftp
Конфигурационный файл /etc/proftpd/proftpd.conf
# Подключаем файл с модулями Include /etc/proftpd/modules.conf UseIPv6 off #Отключаем разрешение имен, увеличивает скорость работы. IdentLookups off ServerName "Debian 9 test ftp" # Указываем что сервер будет работать без xinetd ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" DenyFilter \*.*/ #Указываем директорию для пользователей при подключении DefaultRoot /ftp DefaultRoot /test test - # для пользователя test # будет папка /test вместо /ftp #Требовать от пользователя наличия сущкствующего shell RequireValidShell off # Порт для демона Port 21 # Количество одновременных подключений MaxInstances 30 # Пользователь и группа с правами которых будет запущен proftpd User proftpd Group nogroup # Маска для создания файлов и папок соответственно Umask 112 002 # разрешение перезаписи конфигурации AllowOverwrite on #Файлы логов TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log #Настройка квот и ratio <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> #Модуль delay снижает влияние от Timming Attack <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> # Настройки для ldap и sql #Include /etc/proftpd/ldap.conf #Include /etc/proftpd/sql.conf # FTPS подключения #Include /etc/proftpd/tls.conf # Подключение файлов виртуальных хостов #Include /etc/proftpd/virtuals.conf # Настройка для подключения анонимных пользователей # Указываем директорию для ананимных пользователей <Anonymous /ftp> # Права для анонимных пользователей User ftp Group nogroup # Алиас для анонимных пользователей UserAlias anonymous ftp # DirFakeUser on ftp DirFakeGroup on ftp # Требование существующего шела RequireValidShell off # Количество анонимных подключений MaxClients 10 # Ограничения для анонимных пользователей <Directory *> <Limit WRITE> # Право записи DenyAll # Запрет для всех </Limit> </Directory> </Anonymous> # Подключение файлов конфигураций Include /etc/proftpd/conf.d/
Создаем группу для доступа к ftp серверу
sudo groupadd ftp_users
Создаем конфигурационный файл для директорий и не анонимных пользователей
sudo touch /etc/proftpd/conf.d/test.conf
Вносим в него настройки
cat /etc/proftpd/conf.d/test.conf
#Директория /ftp <Directory /ftp > # созданные директории будут отображены с группой ftp_users DirFakeGroup on ftp_users # Права доступа для вновь созданных файлов и директорий соответственно Umask 112 002 <Limit ALL> #Ограничения на все операции DenyGroup !ftp_users # Запрет для все кто не входит в группу ftp_users </Limit> </Directory>
Полный список различных возможных секций можно посмотреть по ссылке
Создадим директорию для FTP сервера
sudo mkdir /ftp
Зададим на нее права
sudo chown ftp:ftp_users -R /ftp
sudo chmod -R 774 /ftp
Запускаем демона Proftpd и добавляем его в автозагрузку
sudo systemctl start proftpd
sudo systemctl enable proftpd
Проверяем подключение для ананимных пользователей
ftp localhost
Trying 127.0.0.1... Connected to localhost. 220 ProFTPD 1.3.5b Server (Debian 9 test ftp) [127.0.0.1] Name (localhost:root): ftp 331 Анонимное подключение, укажите ваш e-mail адрес в качестве пароля Password: 230 Анонимное подключение, ограничения применены Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 Команда PORT успешно обработана 150 Открываю режим ASCII данных для file list drwxrwxr-- 2 ftp ftp 4096 Nov 30 13:04 test -rwxrwxr-- 1 ftp ftp 0 Nov 30 13:04 test.txt 226 Передача завершена
Создаем двух пользователей test1 и test2 и задаем им пароли
useradd test1 -M
useradd test2 -M
passwd test1
passwd test2
Добавляем одного пользователя в группу ftp_users
usermod -aG ftp_users test2
Проверяем возможность подключения пользователя test2
ftp localhost
Trying 127.0.0.1... Connected to localhost. 220 ProFTPD 1.3.5b Server (Debian 9 test ftp) [127.0.0.1] Name (localhost:root): test2 331 Необходим пароль для пользователя test2 Password: 230 Пользователь test2 подключён Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 Команда PORT успешно обработана 150 Открываю режим ASCII данных для file list drwxrwxr-- 2 109 1001 4096 Nov 30 13:04 test -rwxrwxr-- 1 109 1001 0 Nov 30 13:04 test.txt 226 Передача завершена ftp> mkdir test2 257 "/test2" - Директория успешно создана ftp> ls 200 Команда PORT успешно обработана 150 Открываю режим ASCII данных для file list drwxrwxr-- 2 109 ftp_users 4096 Nov 30 13:04 test drwxrwxr-x 2 test2 ftp_users 4096 Nov 30 14:09 test2 -rwxrwxr-- 1 109 ftp_users 0 Nov 30 13:04 test.txt 226 Передача завершена
А теперь проверим, что пользователь test1 не сможет подключиться
ftp localhost
Trying 127.0.0.1... Connected to localhost. 220 ProFTPD 1.3.5b Server (Debian 9 test ftp) [127.0.0.1] Name (localhost:root): test1 331 Необходим пароль для пользователя test1 Password: 530 Некорректные данные аутентификации. Login failed. 421 Service not available, remote server has closed connection
Введите ответ:
+
=
Anon
2020-01-10 22:07:30
Лол, куча ошибок орфографических