: :

ПнВтСрЧтПтСбВс

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

Лол, куча ошибок орфографических