URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57981
[ Назад ]

Исходное сообщение
"Proftpd+виртуальный интерфейс"

Отправлено redmoon , 06-Июл-05 14:43 
ситуация следующая.
есть 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"
что делать ? может быть фтп сервер + виртуальный интерфейс недопустимая ситуация ?
натолкните.
заранее спасибо


Содержание

Сообщения в этом обсуждении
"Proftpd+виртуальный интерфейс"
Отправлено jonatan , 06-Июл-05 14:55 
1. Добавьте перед правилами
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

2. Проверьте наличие модуля
ip_conntrack_ftp


"Proftpd+виртуальный интерфейс"
Отправлено jonatan , 06-Июл-05 15:06 
Естественно в OUTPUT тоже должны быть разрешены исходящие пакеты.

"Proftpd+виртуальный интерфейс"
Отправлено redmoon , 06-Июл-05 15:14 
>1. Добавьте перед правилами
>iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
>
>2. Проверьте наличие модуля
>ip_conntrack_ftp
простите, не очень селен в юникс, только начинаю.
добавил "iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT" перед правилами, касающимися фтп,вот что получилось:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-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 -d 62.76.70.210 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j DROP
сделал iptables -F
iptables-restore /root/iptables.save
не помогло, таже картина:
# ftp ftp.myhost.ru
Connected to ftp.myhost.ru
220 ftp.myhost.ru FTP server ready
Name (ftp.myhost.ru:dead): dead
331 Password required for dead.
Password:
230 Now apload/download files
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -al
тут висим намертво.
Как проверить наличие модуля ?
вот что мне показал lsmod:
#lsmod
Module                  Size  Used by    Not tainted
ipt_state               1304   2  (autoclean)
ip_conntrack           28776   1  (autoclean) [ipt_state]
ide-cd                 32320   0  (autoclean)
cdrom                  32512   0  (autoclean) [ide-cd]
iptable_filter          2504   1  (autoclean)
ip_tables              14584   2  [ipt_state iptable_filter]
iscsi_module          146668   0
autofs                 12244   0  (autoclean) (unused)
eepro100               21556   2
mii                     4108   0  [eepro100]
appletalk              28292   0  (autoclean)
ipx                    23844   0  (autoclean)
microcode               4864   0  (autoclean)
nls_iso8859-1           3484   1  (autoclean)
nls_cp437               5116   1  (autoclean)
vfat                   12268   1  (autoclean)
fat                    38456   0  (autoclean) [vfat]
usb-ohci               21896   0  (unused)
usbcore                77440   1  [usb-ohci]
ext3                   68832   4
jbd                    51592   4  [ext3]
raid1                  15660   3
aic7xxx               134868   9
sd_mod                 12812  18
scsi_mod              112796   3  [iscsi_module aic7xxx sd_mod]
я так понял, что этого модуля среди них нет.Тогда можно ссылку на доку, о том, как его вкомпилить?
на оутпут стоит ACCEPT по дефолту.

"Proftpd+виртуальный интерфейс"
Отправлено jonatan , 06-Июл-05 15:27 
>сделал iptables -F
Этим Вы удалили все правила. Покажите iptables -nvL

>я так понял, что этого модуля среди них нет.Тогда можно ссылку на
>доку, о том, как его вкомпилить?
modprobe ip_conntrack_ftp


"Proftpd+виртуальный интерфейс"
Отправлено redmoon , 06-Июл-05 15:35 
>>сделал iptables -F
>Этим Вы удалили все правила. Покажите iptables -nvL
>
>>я так понял, что этого модуля среди них нет.Тогда можно ссылку на
>>доку, о том, как его вкомпилить?
>modprobe ip_conntrack_ftp
я знаю что ключиком -F я снес правила.
я не на лету их конфигурю, я правлю /root/iptables.save - конфих сохраненных правил.
а потом перезапускаю сам сервис iptables -F(сбрасываю) и iptables-restore /root/iptables  - восстанавливаю.
похоже вопрос снимается, я пассивный режим убрал при заходе по фтп на виртуальный интерфейс .. и меня пустило.

э-э-э-э-э ..
а почему тогда у меня они наглухо закрыты, а юзеры из интранет, и из интернет по крайней мере на физический(не виртульный) интерфейс нормально ходят по 21 порту ?


"Proftpd+виртуальный интерфейс"
Отправлено jonatan , 06-Июл-05 15:45 
>похоже вопрос снимается, я пассивный режим убрал при заходе по фтп на
>виртуальный интерфейс .. и меня пустило.
Разберитесь, как работаю активный и пассивным режимы ftp. Все проблемы от незнания протокола.

>э-э-э-э-э ..
>а почему тогда у меня они наглухо закрыты, а юзеры из интранет,
>и из интернет по крайней мере на физический(не виртульный) интерфейс нормально
>ходят по 21 порту ?
Скорее всего используют активный режим или для внутренних клиентов разрешены все соединения.


"Proftpd+виртуальный интерфейс"
Отправлено Alexs , 06-Июл-05 15:30 
А кто за вас будет открывать эти порты?
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]

Они нужны для передачи данных


"Proftpd+виртуальный интерфейс"
Отправлено jonatan , 06-Июл-05 15:31 
Достаточно того, что я написал. Тем более, что коносльный ftp по-умолчанию работает в пассивном режиме и 20-й порт не используется.