Kiev1.org Карта сайта Файлы Фотографии Киева
  
Реклама:






Разделы
 
 Sysadmin
 Антиглобалисты
 Ереси и секты
 Катастрофы
 Компьютерные новости
 Непроверенное
 О проекте
 О фотогалерее
 Политика и власть
 Православие
 Предприятия Украины
 Протесты Людей против нового мирового концлагеря
 Разное
 Россия
 Старец Паисий 1924-1994
 Стояние за Истину
 Суды в Украине
 Тайна беззакония
 экуменизм


Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться - самое главное думать своей головой и не верить легкомысленно всему что говорят, особенно советское телевидение
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"

Маленькие ньюансы при установке и настройке ProFTPD (на базе FreeBSD)



Не долго думая, решил написать о настройке FTP Server'a. Для того кто только что поставил себе proftpd я думаю это будет полезно. Тут нет замороченных конфигураций, все лишь как сделать удобный и полезный ftp server в своей локальной сети.
В моем представлении это должно выглядеть примерно так: все пользователи локальной сети имеют RW в incoming и только RO в остальные директории. А те кто имеют системного пользователя на сервере должны свободно входить на машину с любой точки мира, правда корневой директорией должна быть его homedir. Хотя бы потому что протокол ftp ни сколько не секурный(security) :(
И так скачиваем себе последнюю версию proftpd с домашнего сайта.
Распаковываем. Собираем. Инсталим.
Сервер будем запускать в режиме standalone(автономный), без использования TCP-wrapper'сов (inetd xinetd и тд) хотя в них есть всои плюсы.
И так начнем сразу с конфига ($prefix/etc/proftpd.conf):

root@ftp:/usr/local/proftpd/etc# egrep -v '#|^ *$' proftpd.conf

ServerName "ftp.mydomain.ru"
ServerAdmin "Administrator@mydomain.ru"
ServerIdent on "My FTP Server"
ServerType standalone
Umask 022
Port 21
User nobody
Group nogroup

<Limit LOGIN>
AllowUser user1
AllowUser user2
DenyAll
</Limit>

<Anonymous /home/ftp>
User ftp
Group wheel
UserAlias anonymous ftp
UserAlias guest ftp
MaxClients 50
DisplayLogin welcome.msg
DisplayFirstChdir .message

<Limit LOGIN>

Order Allow,Deny
Allow from 192.168., <other good IPs>
Deny from all
</Limit>

<Directory *>
AllowOverwrite on
<Limit READ>
AllowAll
</Limit>
<Limit WRITE STOP>
Order Allow,Deny
Allow from <administrator's_ip_addr>
Deny from all
</Limit>
</Directory>

<Directory incoming>
<Limit READ WRITE STOR>
AllowAll
</Limit>
</Directory>

</Anonymous>

<Global>

AllowChmod on
DefaultRoot ~
DefaultChdir ~

<Directory ~/*>
<Limit All>
AllowAll
</Limit>
</Directory>
</Global>
root@ftp:/usr/local/proftpd/etc#

И что же это все означает?
Подробнейшую информацию по конфигу можно найти так же на домашнем сайте.

В начале конфига Limit LOGIN, сюда не входят пользователи типо: ftp, anonymous и guest. Еще вариант ограничения по пользователям приведен ниже.

service ftp
{
log_type = FILE /var/log/ftp.log
socket_type= stream
wait = no
user = root (ну или кто там)
server = /usr/sbin/proftpd
server_args = .....
only_from = IP1 IP2
log_on_success = PID HOST DURATION
log_on_failure = HOST USERID
access_times = 9:00-21:00
}

brain.msk.ru
-------------------------------------
Маленькие ньюансы при установке и настройке ProFTPD (на базе FreeBSD):


1. Многие администраторы, прежде чем установить новый-свежий продукт,
проверяют его. В случае proftpd, либо должен быть остановлен
предыдущий демон ftpd, либо следует использовать директивы ниже, чтобы
демон слушал, например порт 8041:
Port 0
Bind 159.93.17.121
SocketBindTight on
Port 8041
* Port 0 - отказ от прослушивания 21'ого порта в сумме с нижними
директивами
* Bind 159.93.17.121 - привязка на конкретный ip
* SocketBindTight on - позволяет отказаться от открытия by-default
порта 21
* Port 8041 - командный порт, который будет слушать proftpd

2. В стандартный набор модулей ProFTPD (всегда включенных) входят
следующие:
* mod_auth - реализация таких команд как: USER, PASS, ACCT, REIN
* mod_core - реализация команд FTP: CWD, CDUP, MKD, PWD, RMD,
DELE...
* mod_log - реализация сбора статистики, syslog
* mod_ls - встроенная реализация команд FTP: LIST, NLST и STAT
* mod_site - встроенная реализация команд FTP: SITE, HELP и CHMOD
* mod_unixpw - интерфейс к password-auth OS Unix
* mod_xfer - реализация команд FTP: STOR, RETR, APPE, REST...

Модуль PAM подключается в том случае, если система имеет поддержку
pam:
* mod_pam - интерфейс к системе авторизации PAM (Pluggable
Authentication Modules)

Модуль для отображение фалов readme - директива "DisplayReadme"
* mod_readme

3. Дополнительные модули:
* mod_linuxprivs - реализация дополнительной схемы security POSIX
1e, только для Linux
* mod_quota - дисковые квоты
* mod_ratio - система реализации коэффициента upload/download
* mod_wrap - использование доступа с учетом ограничений tcp-wrappers

Дополнительные модули авторизации, интерфейс на основе DB:
* mod_ldap
* mod_sql
* mod_sql_mysql
* mod_sql_postgres

4. В ProFTPD реализована технология chroot не в полном смысле этого
понятия, а лишь частично, те позволяет нам в качестве корневой
директории сделать директорию реального пользователя или
ftp/anonymous.
Данная технология позволяет запускать демон proftpd под указанным в
настройках, директивы User и Group, пользователем с его uid/gid. А
также изменять "корневую директорию" с помощью директив:
* DefaultRoot - в конфигурации server config, ,
* <Anonymous root-directory> - в конфигурации server config,,

Так к примеру, мы можем за"chroot"ить всех локальных пользователей
указав в конфигурации серверной части:
DefaultRoot ~

5. Если у вас возникли проблемы с авторизацией anonymous или локальных
пользователей, с учетом директив User и Group, проверьте чтобы эти
пользователи не присутствовали в ftpusers или проверьте правильность
вашей конфигурации PAM в соответствии с рекомендациями из дистрибутива
ProFTPD или документацией PAM. Если ProFTPD собран с поддержкой pam,
для проверки, отключите его в конфигурации:
AuthPAM off
AuthPAMAuthoritative off

достаточно одной директивы AuthPAM off. Можно переопределить ресурс в
pam конфигурации с помощью директивы AuthPAMConfig.

Примечание: Читайте внимательно документацию, или посмотрите чем
инициализируется pamconfig в proftpd-sources/modules/mod_pam.c:
static char * pamconfig = "ftp";

Значит авторизационная конфигурация PAM для ProFTPD в /etc/pam.conf
или /etc/pam.d - будет именоваться ftp by default, а изменить ее
название можно с помощью AuthPAMConfig.

Проверку ftpusers можно отключить директивой UseFtpUsers off.
Дополнительно для безпарольного входа под anonymous или ftp,
воспользуйтесь директивами:
AnonRequirePassword off (значение по-умолчанию)
RequireValidShell off
UserAlias anonymous ftp

Иногда может вылезти несоответствие указанных внутри <Anonymous ~ftp>
значений User и Group и реальных uid/gid директории ~ftp и ее
содержимого.
Кроме того не забудьте проверить не установлены ли в конфигурациях
server и global:
<Limit LOGIN>
DenyAll
<Limit>

Если установлены, то в директиве <Anonymous> добавьте:
<Limit LOGIN>
Order Allow,Deny
Allow from ip-address1,...
Deny from all
<Limit>

или
<Limit LOGIN>
AllowAll
<Limit>

6. Чтобы предотвратить попытку положить или взломать демон proftpd
командой "ls */../*/../*/...", включите директиву фильтра DenyFilter
*.*/. Можно использовать эту директиву для дополнительной фильтрации.
Например:
DenyFilter *.*/

7. Если пользователи жалуются на длительную авторизацию - вход по ftp,
воспользуйтесь директивой UseReverseDNS off, дополнительно к ней можно
использовать директиву IdentLookups off.
Например:
UseReverseDNS off

или
UseReverseDNS off
IdentLookups off

8. Конкретный пример настройки ProFTPD во FreeBSD:

Лучший вариант, собрать proftpd из портов системы:
cd /usr/ports/ftp/proftpd
make
make install
rm -rf work

Если мы хотим собрать proftpd с нужными нам модулями, необходимо
посмотреть Makefile и при необходимости, поправить под свои нужды.
Пример сборки без поддержки PAM:
cd /usr/ports/ftp/proftpd
make WITHOUT_PAM=yes
make install
rm -rf work

Далее отредактировать файл конфигурации

/usr/local/etc/proftpd.conf
под свои нужды.

Допустим у нас имеется пользователь ftp с uid=ftp и gid=operator, а
запустить демон proftpd мы хотим с USER nobody и Group nogroup, тогда,
возможно придется сделать в секции Anonymous USER ftp и Group operator
(по-умолчанию во FreeBSD пользователь ftp имеет uid=ftp,
gid=operator).

Соответственно удалить из файла /etc/ftpusers пользователей с именами
nobody, ftp. Или, как вариант изменить uid/gid пользователя ftp на
uid=ftp и gid=ftp, не забыв создать группу ftp и поменять владельца
группы в директории ~ftp.

Пример рабочей конфигурации ProFTPD 1.2.4 в FreeBSD:
Примечание: демон стартует как nobody на порту 8041, в секции
Anonymous ~ftp, uid=ftp, gid=operator, домашняя директория
пользователей является корнем DefaultRoot ~.
* Файл конфигурации proftpd

9. Проверка правильности синтаксиса конфигурации и работы ProFTPD. Для
проверки правильности файла конфигурации, необходимо запустить демон
со следующими ключами:
./proftpd -t

Для определения с поддержкой каких модулей собран наш вариант proftpd,
необходимо запустить демон с ключами:
./proftpd -l

Для запуска демона в тестовом режиме, с выдачей диагностики на экран:
./proftpd -n -d 9 -c /path/proftpd.conf

где -n - указывает что мы запускаем демон в режиме foreground
-d 9 - указывает что в отладочном режиме с максимальным уровнем
отладки 9.
-c /path/proftpd.conf - указывает заданный файл конфигурации.
_________________________________________________________________

Copyleft Andrey Lavrentyev

_________________________________________________________________

Пример конфигурации:


# This sample configuration file illustrates configuring two
# anonymous directories, and a guest (same thing as anonymous but
# requires a valid password to login)

ServerName "ProFTPD Server"
ServerType standalone

# Port 21 is the standard FTP port.
Port 1021

# If you don't want normal users logging in at all, uncomment this
# next section
#<Limit LOGIN>
# DenyAll
#</Limit>

# Set the user and group that the server normally runs at.
#User root
#Group wheel
User nobody
Group nogroup

#--lavr/pam
#AuthPAMAuthoritative on
#PersistentPasswd on
#AuthPAM off
#AuthPAMConfig ftp

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 10

# Set the maximum number of seconds a data connection is allowed
# to "stall" before being aborted.
TimeoutStalled 300

# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message

#
# Logging options
#
TransferLog /var/log/proftpd/xferlog
#
# Some logging formats
#
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"

# Our "basic" anonymous configuration, including a single
# upload directory ("uploads")
#<Anonymous ~ftp>

<VirtualHost 159.93.17.121>

<Anonymous ~ftp>

#--lavr; this msg for <VirtualHost>, <Anonymous>, <Global>
AccessGrantMsg "Anonymous access granted for %u."

# User nobody
# Group nogroup

User ftp
Group operator

#--lavr don't check /etc/shells & ftp-shell
RequireValidShell off

#--lavr: AnonRequirePassword off for <Anonymous>, default=off
AnonRequirePassword off

#--lavr: AllowRetrieveRestart on [default] for <VirtualHost>, <Anonymous>, <Directory>

#--lavr: AnonRatio foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess

#--lavr: Bind address for server config, <VirtualHost>
#--lavr: ByteRatioErrMsg foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#--lavr: Class "name" limit|regex|ip value for server config, <VirtualHost>
# see example:
#Classes on
#Class local limit 100
#Class default limit 10
#Class local regex .*foo.com
#Class local ip 172.16.1.0/24
#
#--lavr: Classes on|off for server config, <VirtualHost>
#
#--lavr: DefaultQuota foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: DefaultRoot directory [group-expression] for server config, <VirtualHost>, <Global>
#--lavr: DefaultServer on|off for server config,<VirtualHost>
#
#--lavr: DeferWelcome on|off for server config, <VirtualHost>, <Global>
#
#--lavr: Deny ["from"] "all"|"none"|host|network[,host|network[,...]]
# for <Limit>
#
#--lavr: DenyAll for <Directory>, <Anonymous>, <Limit>
#
#--lavr: DisplayConnect filename - when connect
#
#--lavr: DisplayGoAway filename - when limit or deny
#%T Current Time
#%F Available space on file system
#%C Current working directory
#%R Remote host name
#%L Local host name
#%u Username reported by ident protocol
#%U Username originally used in login
#%M Max number of connections
#%N Current number of connections
#%E Server admin's e-mail address
#%x The name of the user's class
#%y Current number of connections from the user's class
#%z Max number of connections from the user's class
#
#--lavr: DisplayLogin filename for server config, <VirtualHost>, <Anonymous>
#
#--lavr: DisplayQuit filename for server config, <VirtualHost>, <Anonymous>
#
#--lavr: DisplayReadme filename or pattern for server config, <VirtualHost>, <Anonymous>
#
#--lavr: ExtendedLog filename [[command-classes] format-nickname] for
# server config, <VirtualHost>, <Anonymous>
# classes: NONE=No commands; AUTH=Authentication commands (USER, PASS)
# INFO=Informational commands (PWD, SYST, etc)
# DIRS=Directory commands (LIST, CWD, MKD, etc)
# READ=File reading (RETR)
# WRITE=File/directory writing or creation
# MISC=Miscellaneous commands (SITE, etc)
# ALL=default
#
#--lavr: FileRatioErrMsg foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: HostRatio foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: IdentLookups on|off for server config, <VirtualHost>, <Global>
# try to define remote-user name
#
#--lavr: <Limit command|command-group [command2 ..]> for
# server config, <VirtualHost>, <Directory>,<Anonymous>, <Global>, .ftpaccess
# command:
# CWD (Change Working Directory)
# MKD (MaKe Directory)
# RNFR (ReName FRom), RNTO (ReName TO
# DELE (DELEte)
# RMD (ReMove Directory)
# RETR (RETRieve)
# STOR (STORe)
# additional command-group:
# READ;WRITE;DIRS;ALL;LOGIN
#
#--lavr: LeechRatioMsg foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: LogFormat nickname "format-string"
# default: LogFormat default "%h %l %u %t "%r" %s %b"
#
#--lavr: LoginPasswordPrompt on|off for server config, <VirtualHost>, <Anonymous>,<Global>
#
#--lavr: MaxClients number|none [message] for server config, <Anonymous>, <VirtualHost>;<Global>
#
#--lavr: MaxClientsPerHost number|none [message]
# for server config, <Anonymous>, <VirtualHost>,<Global>
#
#--lavr: MaxInstances number - how many process-ftpd in standalone
#
#--lavr: MaxLoginAttempts number for server config, <VirtualHost>, <Global>
# how many attempts for login-authenticate
#
#--lavr: Order allow,deny|deny,allow for <Limit>
# examp: Order allow,deny:
# 1. Check Allow directives. If one or more apply, exit with result:
# ALLOW
# 2. Check Deny directives. If one or more apply, exit with result:
# DENY
# 3. Exit with default implicit ALLOW
# examp: Order deny,allow
# 1. Check Deny directives. If one or more apply, exit with result:
# DENY
# 2. Check Allow directives. If one or more apply, exit with result:
# ALLOW
# 3. Exit with default implicit: DENY
#
#--lavr: PersistentPasswd on|off see Guide
#
#--lavr: Port port-number for server config, <VirtualHost>
#
#--lavr: RateReadBPS byte_per_sec-number for server config, <VirtualHost>, <Anonymous>,<Directory>, <Global>
#
#--lavr: RateReadFreeBytes number of bytes for server config, <VirtualHost>, <Anonymous>,<Directory>, <Global>
#
#--lavr: RateReadHardBPS on/off for server config, <VirtualHost>, <Anonymous>,<Directory>, <Global>
#
#--lavr: RatioFile foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: Ratios foo1 foo2 foo3 for <Directory>, <Anonymous>, <Limit>,.ftpaccess
#
#--lavr: ServerIdent On|Off [identification string]
#
#--lavr: SocketBindTight on|off
#
#--lavr: SyslogFacility facility-level
# mode=AUTH[AUTHPRIV],CRON,DAEMON,KERN,LPR,MAIL,NEWS,USER,UUCP,LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,LOCAL6,LOCAL7
#
#--lavr: SystemLog filename|NONE
#
#--lavr: TimeoutIdle seconds - default=600
#
#--lavr: TimeoutLogin seconds - default=300
#
#--lavr: TimeoutStalled seconds - default=0
#
#--lavr: TimeoutNoTransfer seconds - default=600
#
#--lavr: UseFtpUsers on|off - see /etc/ftpusers
#
#--lavr: UseReverseDNS on|off

# Allow logins if they are disabled above.
#--lavr: Allow ["from"] "all"|"none"|host|network[,host|network[,...]]
# see example, use in <Limit>
# <Limit LOGIN>
# Order Allow,Deny
# Allow from
# 128.44.26.,128.44.26.,myhost.mydomain.edu,.trusted-domain.org
# Deny from all
# </Limit>
#<Limit LOGIN>
#--lavr: AllowAll in <Directory>, <Anonymous>, <Limit>, .ftpaccess
# AllowAll
#</Limit>
<Limit LOGIN>
# Order allow,deny
# Allow from all
# Deny from .microsoft.com, .msn.com
AllowAll
</Limit>

# Maximum clients with message
MaxClients 10 "Sorry, max %m users -- try again later"

# User ftp
# Group ftp

# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp

# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>

# An upload directory that allows storing files but not retrieving
# or creating directories.
<Directory incoming/moviez/incoming/*>

# Normally, we want files to be overwriteable.
AllowOverwrite on

Umask 000

<Limit READ DIRS>
AllowAll
</Limit>

<Limit STOR MKD RMD>
AllowAll
</Limit>
</Directory>

<Directory incoming/raid/*>

# Normally, we want files to be overwriteable.
AllowOverwrite on

Umask 000

<Limit READ>
DenyAll
</Limit>

<Limit STOR MKD RMD>
AllowAll
</Limit>
</Directory>

</Anonymous>
</VirtualHost 159.93.17.121>

Автор: Андрей Лаврентьев (lavr@unix1.jinr.ru), unix1.jinr.ru/~lavr/
--------------------------------
Этих ссылок мне хватило, чтобы разобраться с ProFTPd

www.proftpd.org (Английский)
Официальный сайт программы, на котором можно найти всё. (Доки, FAQ, инструкции, новые версии программы). Конечно, только для тех, кто хоть немного дружит с английским.

unix1.jinr.ru/~lavr/local/proftpd.html (Русский)
Маленкие рекоммендации по настройке ProFTPD и пример конфигурации ProFTPD-1.2.4 для FreeBSD

www.castaglia.org/proftpd/ (Английский)
Еще один английский сайт. Много полезных данных по pfoftpd и ссылок на буржуйские ресурсы собранных TJ Saunders

brain.msk.ru/proftpd_conf.html (Русский)
Поверхностная настройка proftpd

secnet.on.ufanet.ru/proj/fb2.html (Русский)
Сервер FTP: ProFTPd и как его устанавлить... (последняя редакция 2001-03-08)

solaris.opennet.ru/base/net/proftpd.txt.html (Русский)
OpenNET: статья - proftpd в incoming создавать только один уровень каталогов (ftp )

bsd.opennet.ru/base/net/adv_proftpd.txt.html (Русский)
OpenNET: статья - Маленькие ньюансы при установке и настройке ProFTPD (ftp example virtual)

linuxland.itam.nsc.ru/noties/ProFTPd.html (Русский)
ProFTPD in FreeBSD. В данной статье речь пойдет о настройке популярного FTP-демона ProFTPD под FreeBSD

На сервере www.sysadmins.ru - это русский форум для системных администраторов, в форуме "UNIX" в поиске нужно набрать proftpd - выйдет список с вопросами и ответами по ProFTPd

Также можно юзать Яндекс по слову ProFTPd

proftpd.conf (Русский)
Мой пример конфиг файла для FreeBSD 4.5

..... это далеко не все ссылки по этой теме, но их вполне достаточно, чтобы решить все проблемы и вопросы по работе с FTP сервером ProFTPd. Но лучше, конечно же читать доки. В них есть все, что нужно.

gross.unact.ru
============





Внимание! Читая пророчества на этом сайте помните что достоверность трудно проверить и все может во времени изменяться
"О дне же том, или часе, никто не знает, ни Ангелы небесные, ни Сын, но только Отец (Мк. 13, 32)"