Hi-Tech Arduino Компьютеры Интернет
HV-Lab Reference Linux Форум
Справочники Libraries Windows Галерея
Электроника Hardware Hardware Загрузки
Печатные платы Forum Программирование Мини-чат
[ Февр 26, 07:42 ] admin: Форум перешел в разряд архивного.
[ Февр 24, 19:02 ] admin: переехали на новый сервер. Грядут перемены.
[ Фев 20, 08:38 ] кулибин: Переход на SSL был непрост (особенно с абсолютными путями на изображения, но мы его осуществили)
RSS статьи
 
Статьи

Статьи->Linux->Настройка FTP сервера ProFTPd [ Поиск ]

Настройка FTP сервера ProFTPd - простой сервер с надежной защитой
Отправил: кулибин, Воскресенье, 05 Апреля 2009 07:29
Сервер гудит третий месяц, шлюз работает.. Чего-то не хватает для полного счастья. Например нормального доступа по FTP. Около года назад я затрагивал поднятие FTP-сервера proftpd, однако после той статьи вопросов по настройке было намного больше чем ответов. Так и быть — посвящаю этому вопросу целую статью.
Для начала немного теории.

FTP- чрезвычайно древний протокол передачи файлов. Был разработан в далеком 1971 году задолго до появления HTTP. С его помощью можно получить список каталогов и файлов сервера и скачать/загрузить один из них. В отличие от множества протоколов занял целых два порта: 20 порт для передачи данных и 21 — для передачи служебной информации. При работе без ssl-шифрования логин и пароль передаются по сети открытым текстом и при использовании в вашей локальной сети сниффера легко ловятся. Поставим задачу сделать TLS-авторизацию.

Установка
Установка сервера, как обычно, незатейлива. В Gentoo Linux ставится командой:

#emerge proftpd openssl

Второй пакет пропишем, если только он уже не установлен в вашей системе. На любые другие системы сервер можно поставить из исходников стандартным набором команд
#./configure&& make&& make install
Основной конфигурационный файл - /etc/proftpd.conf
Он достаточно хорошо документирован, и его тестовый набор конфигов более-менее подходит для первого запуска, однако мы файл полностью перепишем.
Если вам требуется полный список доступных директив — то предлагаю вам отправиться на официальный сайт: http://www.proftpd.org/docs/directives/linked/by-name.html
По сути, все что нам необходимо — это давать пользователям возможность залазить в свои домашние папки. Если у вас proftpd используется для загрузки файлов на сервер для Apache, то довольно просто использовать для этих целей специально отведенного пользователя, домашней папкой которого является нужный нам каталог.

#nano -w /etc/proftpd/proftpd.conf

#Отображаемое при подключении имя сервера
ServerName "server.ru"
#тип запуска сервера. Бывает stabdalone и inetd
ServerType standalone

# Выключаем строчку, информирующую о типе FTP сервера

ServerIdent off

#Прослушиваемый порт.

Port 21

#Маска прав доступа при копировании файлов. Работает как «777-umask”

Umask 022

#Тайм-ауты логина, отсутствия передачи и т.п.

TimeoutLogin 50
TimeoutIdle 600
TimeoutNoTransfer 600
TimeoutStalled 600

#пользователь и группа, под которой будет работать сервер. У пользователя не должно быть домашней папки и доступа к консоли.

User proftpd
Group proftpd

#Ставим ограничения на количество подключений:

#Всего:

MaxClients 20 «Too many connections!»
С одного IP
MaxClientsPerHost 5 "Too many connections from your IP!"

#На количество попыток входа

MaxLoginAttempts 10 «Too many login attempts!»

#Максимальное количество одновременно запущенных копий сервера. Требуется для предотвращения DDOS-атак.

MaxInstances 10

#Сделаем файл приветствия при подключении и входе. Разумеется, надо эти файлы создать

DisplayConnect /etc/proftpd/ftp_connect.msg

DisplayLogin /etc/proftpd/ftp_login.msg

#Директивы, отвечающие за TLS аутендификацию.

TLSEngine on

TLSLog /var/log/proftpd/tls.log

TLSProtocol SSLv23

TLSOptions NoCertRequest

TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem

TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem

TLSVerifyClient off

TLSRequired on

#Разрешаем докачку файлов с сервера

AllowRetrieveRestart on

#и на сервер

AllowStoreRestart on

#В зависимости от того, разрешена у вас докачка или нет, настроим директиву, которая отвечает за автоматическое удаление недогруженного файла.

DeleteAbortedStores off

#Разрешаем перезаписывать файлы

AllowOverwrite on

#Разрешаем использование файла .ftpaccess наподобие .htaccess у Apache

AllowOverride on

#Запрещаем заходить пользователю root — для безопасности.

RootLogin off

#Запираем пользователя в его домашнем каталоге

DefaultRoot ~

#Включаем отображение символических ссылок:

ShowSymlinks on

#Если у вас в системе установлен ClamAV, то прописав:

ClamAV on

#мы укажем серверу проверять на вирусы загруженные файлы.

#Лимитируем время процессора, место в ОЗУ и число открытых файлов.

RLimitCPU 600 600
RLimitMemory 64M 64M
RLimitOpenFiles 1024 1024

#Формат логов

LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"

#пути к логам.

SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog
#Различные логи для удобства чтения
ExtendedLog /var/log/proftpd_access.log WRITE,READ write
ExtendedLog /var/log/proftpd_auth.log AUTH auth

#Настроим ограничение скорости для пользователей группы likers например в 300кб:

TransferRate RETR,STOR,APPE 300 group likers

#Создадим список черных и белых IP.

UseHostsAllowFile /etc/proftpd/proftpd.allow

UseHostsDenyFile /etc/proftpd/proftpd.deny

#создадим анонимный ftp-доступ.

User ftp
UserAlias anonymous ftp
Group ftp
AllowRetrieveRestart on
AllowStoreRestart on

#Ограничим скорость анонимусам.

TransferRate RETR,STOR,APPE 100

#Запрещаем какие-либо действия. Пусть только качают.

DenyAll
Теперь создадим каталог для ssl-ключей:

#mkdir /etc/proftpd/ssl

и Создадим ключ:

#openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

При этом мы попадем в мастер создания ключей:
2-х буквенный код страны:
Country Name (2 letter code) [AU]: RU
Штат, мы его указывать не будем.
State or Province Name (full name) [Some-State]:
определим наш город
Locality Name (eg, city) []: nnov
Название нашей организации
Organization Name (eg, company) [Internet Widgits Pty Ltd]: RadioLokN
Аббревиатура компании?
Organizational Unit Name (eg, section) []:RLN
Common Name (eg, YOUR name) []: radiolok
Email Address []: E-mail
Собственно базовая настройка завершена. В сети гуляет пособие по настройке связки proftpd+MySQL, которая дает возможность управлять пользователями сервера редактируя базу данных. Мы пошли по более простому пути.
Директива DefaultRoot ~ выполняет функцию по запиранию пользователя его в домашнем каталоге. Следовательно, если нам надо посылать пользователя foma в его домашний каталог /home/test1.ru, то сервер будет это делать сам.
Создадим каталог:

#mkdir /home/test1.ru

Для создания нового пользователя воспользуемся командой adduser.

#adduser -d -G users,proftpd foma

После чего заходим под этим пользователем и ставим необходимый пароль:

#su foma

$passwd

Меняем владельца папки:

#chown -R foma:users /home/test1.ru

Осталось запустить сервер и проверить его работоспособность:
в Gentoo:

#/etc/init.d/proftpd start

Либо в RPM-base системах service proftpd start.
Консоль не выдала сообщения об ошибках? Тогда все отлично и можно проверить работу сервера.
В случае если вы пользуетесь TotalCommander, придется его немного доработать. С сайта www.openssl.org загружаем openssl_win32 библиотеку, устанавливаем и кидаем dll-библиотеки в папку с total commander.

Теперь в свойствах подключения ставим галочку SSL/TLS. Заметили, что префикс теперь не ftp:// а ftps:// ? Пробуем подключиться. Работает? Ну тогда все просто замечательно, мы увеличили защищенность нашего сервера. Не забудьте только пользователям вашего сервера скачать, чтобы галочку поставили, а то жалобами завалят в миг.
Артем Кашканов

 

 


Голосов Голосов: 0 - В среднем:

Добавить комментарий Оценить
Комментарии

Статистика
Всего 205 статей в базе
Наиболее просматриваемые: Arduino и сеть RS485.
Лучшие по оценкам: РЦВМ1 - Релейная Цифровая Вычислительная Машина

Пользователи в разделе статьи: 3 (0 Пользователи 3 Гости и 0 Скрытые пользователи)
Видимые пользователи:


 
 

MKPortal©2003-2008 mkportal.it
MultiBoard ©2007-2009 RusMKPortal
Страница сгенерированна за 0.0122 секунд с 24 обращениями в базу данных

Intel Core i5-3450 2Gb RAM 100Gb HDD 100Mbps Ethernet

© Artem Kashkanov 2005-2016