Страница 1 из 1

pure-ftpd и разграничение по IP

Добавлено: 2007-09-21 14:24:40
Zedik
хочу сделать разграничение обращения на фтп сервер по IP:
ftp://10.0.0.9 -> /var/ftp/software
ftp://194.80.50.40 -> /var/ftp/shareware
===
где то читал что нужно добавить линки /etc/~10.0.0.9 и /etc/~194.80.50.40 которые вели бы соответственно в нужные каталоги, но что то не выходит.
кто может подсказать?

FreeBSD 6.2 + pure-ftpd-1.0.21_1

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-21 19:21:29
Alex Keda
proftpd может

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-21 20:47:34
Zedik
lissyara писал(а):proftpd может
да и сабж реален...сейчас под линуксом крутится (до меня был поставлен)...да только вот сам никак не могу дальше разрулить...
сейчас ftp://194.80.50.40 -> /var/ftp/shareware правильно отрабатывает, а вот ftp://10.0.0.9 -> /var/ftp/software логиниится, но выдает пустоту...

пс. а чем proftpd лучше? он более гибкий в настройке? позволяет ли proftpd выставлять ограничения на размер поддиректорий?

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-26 19:59:31
kolesya

Код: Выделить всё

root@# cat pureftpd-mysql.conf.sample | grep IP
# Optional : MySQL server name or IP. Don't define this for unix sockets.
# \I is replaced by the IP address the user connected to.
# \R is replaced by the IP address the user connected from.
# \D is replaced by the remote IP address, as a long decimal number.
root@#
На мысли наводит ?

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-26 20:04:56
kolesya
Конфиги покажи ... (без конкретных адресов в конфиге(ах) )
pureftpd на системных учетках или ( mysql or postgres or <че_нить_другое> ) ?

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-27 8:18:53
Zedik
на мысль то наводит.....но пока только на мысль :twisted:
учетки хранятся в мускле.
pure-ftpd.conf

Код: Выделить всё

ChrootEveryone              yes
# TrustedGID                    100
BrokenClientsCompatibility  no
MaxClientsNumber            15
Daemonize                   yes
MaxClientsPerIP             5
VerboseLog                  no
DisplayDotFiles             yes
AnonymousOnly               no
NoAnonymous                 no
SyslogFacility              ftp
DontResolve                 yes
MaxIdleTime                 4
MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf
LimitRecursion              2000 8
AnonymousCanCreateDirs      no
MaxLoad                     4
PassivePortRange          60000 65000
AntiWarez                   yes
Umask                       133:022
MinUID                      1000
AllowUserFXP                no
AllowAnonymousFXP           no
ProhibitDotFilesWrite       no
ProhibitDotFilesRead        no
AutoRename                  no
AnonymousCantUpload         no
AltLog                     stats:/var/log/pureftpd.log
AltLog                     w3c:/var/log/pureftpd.log
MaxDiskUsage               99
CustomerProof              yes
PerUserLimits            2:5
IPV4Only                 yes
FileSystemCharset koi8-r
ClientCharset cp1251
pureftpd-mysql.conf

Код: Выделить всё

MYSQLSocket     /tmp/mysql.sock
MYSQLUser       ftproot
MYSQLPassword   11111
MYSQLDatabase   baseftp
MYSQLCrypt      md5
MYSQLGetPW      SELECT Password FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MYSQLGetDir     SELECT Dir FROM users WHERE User="\L" AND Status="1" AND IPServer="\I" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTAFS  SELECT QuotaFiles FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetQTASZ  SELECT QuotaSize FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioUL SELECT ULRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetRatioDL SELECT DLRatio FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
MySQLGetBandwidthDL SELECT DLBandwidth FROM users WHERE User="\L" AND Status="1" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
в данном случае ограничивается подключение на тот или иной IP. А мне хочется чтобы доступ был и по внутреннему и по внешнему IP для одного и того же юзера. но в зависимости на какой адрес он обращается, он отправляется в соответствующий каталог. а сейчас у меня по внешнему IP отправляется с каталог с данными,а при обращении по внутреннему IP он отправляется в какой то пустой каталог... :?

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-27 11:47:39
kolesya
не помню точно какая опция :? , но в конфиге пурфтп можно включить логирование SQL-запросов и ответов, которые отправляет и получает пурфтп.

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-27 19:53:00
kolesya
MYSQLGetDir SELECT Dir FROM users WHERE User="\L" AND Status="1" AND IPServer="\I" AND (Ipaddress = "*" OR Ipaddress LIKE "\R")
покажи под это дело записи по узеру скажем: EXAMPLER
считаем, что пользователь активный и имеет доступ "спереди" и "сзади" :D
типа результат

Код: Выделить всё

select * from users where user='EXAMPLER'

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-28 7:32:54
Zedik

Код: Выделить всё

mysql> select * from users where user='pain';
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
| User  | Password                         | Uid  | Gid  | Dir                     | QuotaFiles | QuotaSize | ULBandwidth | DLBandwidth | Ipaddress | Comment | Status | ULRatio | DLRatio | IPServer |
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
| pain | 111 | 1005 | 1005 | /var/ftp/data/pain |          0 |         0 |           0 |           0 | *         |         | 1      |       0 |       0 | 10.0.0.9 |
+-------+----------------------------------+------+------+-------------------------+------------+-----------+-------------+-------------+-----------+---------+--------+---------+---------+----------+
1 row in set (0.00 sec)
это я уже добавил ему IPServer, но в работе ничего не поменялось

Re: pure-ftpd и разграничение по IP

Добавлено: 2007-09-28 12:28:33
kolesya
если зайти так ftp://pain:111@10.0.0.9/ то ты будеш юзером pain и хомяком будет /var/ftp/software

а если ftp://pain:111@194.80.50.40/ то ты будеш анонимом,
см в конфиге

Код: Выделить всё

NoAnonymous                 no

Код: Выделить всё

select * from users where user='pain';
должен возвращать две записи (для твоей схемы)
где поле IPServer для юзера pain должны быть 194.80.50.40 и 10.0.0.9 :twisted: