ситуация следующая.
есть linux-машина, на ней крутиться proftpd только для внутренней сети. Эта машина подключена к миру.
возникла необходимость:
поднять на этой машине виртуальный интерфейс, и разрешить вход по фтп на этот интерфейс, только пользователю dead не только с внутреней сети, но и ИЗ МИРА.
172.23.1.x - внутренняя сетка.
62.76.70.х - внещние (белые) ип-адреса.
62.76.70.1 - адресс физической сетевой карты в машине. (eth0)
62.76.70.210 - виртуальный ип-адресс машины, весящий на той же сетевой карте.(eth0:1)
мои действия:
делаю интерфейс:
/sbin/ifconfig eth0:1 62.76.70.210 netmask 255.255.255.252 up
вот конфиг iptables, который фильтрует, так что бы на этот фтп был доступ только своим (ДО):
-A INPUT -s 172.23.1.0/255.255.255.0 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s 62.76.70.0/255.255.255.0 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j DROP
Вот после, для пользователя dead:
-A INPUT -s 62.76.70.0/255.255.255.0 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s 62.76.70.0/255.255.255.0 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp -d 62.76.70.210 --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j DROP
вот конфиг ProFTPd до:
ServerName "WarFTPd"
ServerType standalone
DefaultServer on
ServerIdent off
RootLogin on
Port 21
AllowForeignAddress on
Umask 022
MaxInstances 30
User ftp
Group ftp
MaxClients 30 "Too many connection"
#MaxClientsPerHosts 4 "%m clients already connect from your host, more clients can't connect!!!"
MaxLoginAttempts 3 "Too many tries to connect"
DisplayConnect /etc/proftpd/ftp_connect.msg
AllowOverride on
AllowOverwrite on
AccessDenyMsg "ATTENTION!!! ALL CONNECTIONS LOGED"
AccessGrantMsg "Now apload/download files"
DisplayGoAway "Good bye!!!"
TimeoutIdle 180
TimeoutLogin 120
TimeoutNoTransfer 360
TimeoutStalled 640
DefaultRoot / root
DefaultRoot ~
UseReverseDNS off
IdentLookups off
DenyFilter \*.*/
PathDenyFilter "(^|/)[-]"
TransferLog /var/log/proftpd/proftpd-transfer.log
SystemLog /var/log/proftpd/proftpd-error.log
ExtendedLog /var/log/proftpd/proftpd-extended.log read,write
###########################################
<Directory /home/ftp>
<Limit READ WRITE>
Order allow,deny
</Limit>
</Directory>
<Directory ~/*>
AllowOverwrite on
<Limit SITE_CHGRP SITE_CHMOD>
IgnoreHidden off
Order deny,allow
................
................
</Limit>
</Directory>
<Anonymous /home/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
RequireValidShell no
PathDenyFilter "(^|/)[-.]"
<Directory /home/ftp>
<Limit WRITE>
Order allow,deny
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/incoming>
<Limit READ>
Order allow,deny
Allow from 62.76.70.,172.23.1.
Deny from all
</Limit>
<Limit WRITE MKD DELE RMD>
Order allow,deny
Allow from 62.76.70.,172.23.1.
Deny from all
</Limit>
</Directory>
</Anonymous>
#############################################
<Global>
<Limit LOGIN>
IgnoreHidden off
Order Allow,Deny
Allow from 62.76.70.,172.23.1.
Deny from all
</Limit>
<Limit SITE_CHGRP SITE_CHMOD>
Order deny,allow
................
................
</Limit>
</Global>
вот после:
<Directory /home/ftp>
<Limit READ WRITE>
Order allow,deny
</Limit>
</Directory>
<Directory ~/*>
AllowOverwrite on
<Limit SITE_CHGRP SITE_CHMOD>
IgnoreHidden off
Order deny,allow
................
AllowUser dead
................
</Limit>
</Directory>
<Anonymous /home/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
RequireValidShell no
PathDenyFilter "(^|/)[-.]"
<Directory /home/ftp>
<Limit WRITE>
Order allow,deny
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/incoming>
<Limit READ>
Order allow,deny
Allow from 62.76.70.,172.23.1.
Deny from all
</Limit>
<Limit WRITE MKD DELE RMD>
Order allow,deny
Allow from 62.76.70.,172.23.1.
Deny from all
</Limit>
</Directory>
</Anonymous>
#############################################
<Global>
<Limit LOGIN>
IgnoreHidden off
Order Allow,Deny
Allow from 62.76.70.,172.23.1.
AllowUser dead
Deny from all
</Limit>
<Limit SITE_CHGRP SITE_CHMOD>
Order deny,allow
................
AllowUser dead
................
</Limit>
</Global>
все запускаем:
и проверяем из мира:
$ftp
$ftp> open ftp.myhost.ru (этому домену соответ)
user:dead
password:xxxxxxxxx
login OK!
ftp>ls -l
и все... и так висит намерово.
В логах вот что :
Jul 06 13:57:16 ftp.myhost.ru proftpd[9283] myhost.ru (172.23.1.99[172.23.1.99]): USER dead: Login successful.
Jul 06 13:58:17 ftp.myhost.ru proftpd[9267] myhost.ru (172.23.1.16[172.23.1.16]): FTP session closed.
то есть .. никакой ругани.
Пробовал зайти через тотал командер из мира, он висит на этапе "ENTER TO PASV MODE"
что делать ? может быть фтп сервер + виртуальный интерфейс недопустимая ситуация ?
натолкните.
заранее спасибо