Документация по ОС FreeBSD Воскресенье, 27.11.2022, 07:24
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » FTP

ProFTPD в FreeBSD
Перед нами стоят четыре задачи :

Сделать безопасный доступ на FTP сервер администраторам
Сделать безопасный доступ на FTP сервер для пользователей держащих домашние странички на сервере www.matrix.ru.
Сделать виртуальный FTP сервер для клиентов www.client.com
Сделать безопасный анонимный FTP cервер www.guest.com.

Выбор операционной по мнению автора лежит на FreeBSD в силу ее надежности и корректной реализации chroot-ed. Итак приступим. Если Вы счастливый обладатель какого нибудь доступа в интернет то заходим в /usr/ports/ftp/ProFTPD набираем make , идем пить кофе, выпив кофе подходим к клавиатуре набираем make install и через 10 секунд ftp сервер готов.

Сравните как просто ;). В портах FreeBSD находятся ссылки на сервер разработчиков и на свежие патчи к ProFTPD что намного предпочтительнее именно так ставить FTP демон чем через /stand/sysinstall - но если у вас нет и-нета то тогда именно так и придется поступать. Теперь займемся конфигурированием. По умолчанию конфигурационный файл находится в /usr/local/etc/proftpd.conf а скрипт запуска в standalone режиме /usr/local/etc/rc.d/proftpd.sh.
По поводу запуска ProFTPD есть два нюанса - можно запустить его в standalone режиме (как запускают обычную программу) а можно и через демон inetd. При запуске proftpd через inetd вы получаете экономию памяти, при запуске как standalone вы получаете большую гибкость но в любом случае не запускайте его под root-om.

Первым делом создайте группу и пользователя ftp, под этим аккаунтом Вы будете запускать ProFTPD. Этот аккаунт не должен иметь shell-a и home directores. Предположим, что файлы вашего www сервера уже уже находятся на диске в отдельном разделе /clients/sites и /clients/pages. Первый каталог нужен для виртуальных серверов а второй для хранения виртуальных страничек клиентов. Начинаем заполнять файл /usr/local/etc/proftpd.conf. Сразу оговоримся что реальный сервер мы не выставляем на всеобщее обозрение как ftp.server.com (ограничивая доступ только локальным администраторам), сервер нашего сайта имеет имя ftp.company.com (или www.company.com) , а виртуальный сервер нашего клиента ftp.client.com (или www.client.com). Заносим данные о нашем боевом сервере в /usr/local/etc/proftpd.conf:
 
# Имя хоста на котором работает данный сервер, его администратор и тип запуска
ServerName ftp.server.ru ServerAdmin ftp@server.ru
 
# Выключаем строчку, информирующую о типе FTP сервера
ServerIdent Off
ServerType inetd
 
# Порт сервера
Port 21
 
# Ограничиваем время работы на ftp сессии и период бездействия
TimeoutIdle 600
TimeoutNoTransfer 900
 
# Устанавливаем маску для вновь создаваемых файлов и каталогов
Umask 022
MaxClients 50
MaxLoginAttempts 30
 
# Пользователь под которым работает FTP-демон
User ftp
Group ftp
 
# Лог передаваемых файлов и дополнительный для параноиков ;)
TransferLog /var/log/ftp/server.log
ExtendedLog /var/log/ftp/server.log
 
# Нижеописанные директивы нужны на случай прорыва chroot.
# Запишем их для всего сервера в директиве Global
# Если администраторам необходимо работать с этими каталогами, то
# Достаточно просто указать вместо "DenyAll" - "DenyUser !admin" DenyAll
# Ограничиваем доступ к /var DenyAll
# Ограничиваем доступ к /usr DenyAll
# Домашний каталог по умолчанию берется от home
# пользователя из /etc/passwd, но здесь мы ограничиваем доступ только администраторам
# на уровень выше, чем обычным пользователям и запрещаем его всем кроме
# нижеуказанных логинов администраторов
DefaultRoot /clients/~ DenyUser !admin1, admin2
 
# Ограничиваем доступ к нашему серверу только по IP
# хостов администраторов Order Allow,Deny Deny from all Allow from 192.168.1.1,192.168.1.2 Как Вы видите, синтактис конфигурационного файла очень подож на директивы, используемые в WEB сервере Apache.
# На этом конфигурирование базовго хоста ftp.server.com  закончено.
 
# Теперь начинаем конфигурирование нашего виртуального ftp сервера ftp.client.com (дающий доступ к файлам на
# www.company.com) . Этот сервер служит основным для задания путей в домашних страничках пользователей,
# например, предполагая что файлы и их расположение
# ftp.company.com полностью совпадает с www.company.com
# что дает указывать например в броузере http://www.company.com/~petya
# и попадать на homepage пользователя petya.
# Включаем информационную строку о типе сервер, здесь может быть что
# угодно вплоть до ftp Microsoft FTP Server 4.0 ;)
ServerIdent On "The FTP Server our Company"
ServerAdmin webmaster@company.ru ServerName www.company.com
MaxClients 50
MaxLoginAttempts 10
TimeoutIdle 600
TimeoutNoTransfer 900
TransferLog /var/log/ftp/company.log
ExtendedLog /var/log/ftp/company_extended.log
DefaultRoot ~
User ftp
Group ftp
 
# Разрешаем доступ к каталогам,
# где хранятся homepage пользователей AllowAll Теперь конфигурируем виртуальные сервера наших клиентов. Предполагам что владелец виртуального сервера имеет login name - "client".
ServerIdent On "The Client Virtual Site"
ServerName "FTP Server"
MaxClients 5
MaxLoginAttempts 3
DefaultRoot /clients/sites/www.client.com/
TransferLog /var/log/ftp/www.client.com.log
ExtendedLog /var/log/ftp/www.client.com_all.log
TimeoutLogin 200
TimeoutIdle 600
TimeoutNoTransfer 900
User client
Group client
 
# Разрешаем доступ к каталогу, где находятся html сервера и ограничивая доступ всем кроме
# учетной владельца данного сайта. DenyAll ! client Теперь приступим к созданию конфигурации анонимного сервера. Предполагаем что он будет размещать файлы в /clients/public в подкаталогах "uploads" и "pub" :
ServerIdent On "The Anonymous Virtual Site"
ServerAdmin webmaster@guest.com
ServerName "FTP Server"
 
# Здесь число клиентов можно и побольше
MaxClients 20
MaxLoginAttempts 3
TransferLog /var/log/ftp/www.client.com.log
ExtendedLog /var/log/ftp/www.client.com_all.log
TimeoutLogin 200
TimeoutIdle 600
TimeoutNoTransfer 900
User ftp
Group ftp
DefaultRoot /clients/public
 
# Записываем файлы сообщений которые появляются при входе в систему DisplayLogin welcome.msg DisplayFirstChdir .message
 
# Заполняем директивы для uploads каталога
# Разрешаем всем доступ Allow ALL
# Запрещаем запись
Deny All
IgnoreHidden on
DenyAll
IgnoreHidden on
Allow All
IgnoreHidden on
Deny All
IgnoreHidden on
AllowALL I
gnoreHidden on
 
Вот и готов файл конфигурации FTP сервера. После внесения изменений в конфигурационный файл не забывайте давал команду kill -HUP pid_proftpd или /usr/local/etc/rc.d/proftpd.sh stop , proftpd.start.
 
Если у Вас включён ipfw, то в его правилах вы должны указать следующее:
 
ipfw add pass tcp from any to any 20
ipfw add pass tcp from any 21 to any
ipfw add pass tcp from any to any 21
ipfw add pass tcp from any 21 to any
 
При этом мы предполагаем что мы запретили прохождение всех пакетов во всем протоколам, разрешив только явно указанные нами, что в принципе является хорошим тоном.

Автор: Michael Vlasov
Категория: FTP | Добавил: oleg (01.12.2007)
Просмотров: 1981 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2022