большинство клиентов используют по умолчанию активный режим и ни в какую не хотят
переключаться в пассивный, если не выставлена галочка. Сам же сервер по умолчанию
работает в активном режиме и разработчиками не предусмотрено переключение режимов
его состояния по умолчанию, за исключением режимов передачи данных (binary/ascii).
Подсмотрев за своим хостером я увидел интересное поведение его Proftpd-сервера
Код: Выделить всё
----------
Connect to: (05.02.2010 11:42:26)
hostname=vh15.mirohost.net
username=megap
startdir=
vh15.mirohost.net=193.178.145.193
220 ProFTPD 1.3.1rc3 Server (ProFTPD Mirohost.net) [193.178.145.193]
USER megap
331 Password required for megap
PASS ***********
230 User megap logged in
SYST
215 UNIX Type: L8
FEAT
211-Features:
LANG en
MDTM
UTF8
REST STREAM
SIZE
211 End
Connect ok!
PWD
257 "/" is the current directory
Чтение каталога...
TYPE A
200 Type set to A
PORT 192,168,100,100,198,168
500 Illegal PORT command
PASV
227 Entering Passive Mode (193,178,145,193,202,27).
LIST
150 Opening ASCII mode data connection for file list
Загрузка
Ожидание ответа сервера...
226 Transfer complete
PORT 192,168,100,100,198,168
c локальным адресом 192.168.100.100 он выдаёт
500 Illegal PORT command
И автоматом сваливается в пассивный режим:
PASV
227 Entering Passive Mode (193,178,145,193,202,27).
Поискав в интернете я наткнулся на такое решение
- запретить команду PORT т.е. вообще запретить активный режим.
Код: Выделить всё
<Limit PORT>
DenyAll
</Limit>
Код: Выделить всё
Connect to: (05.02.2010 11:52:38)
hostname=78.24.78.122
username=test
startdir=
220 ProFTPD 1.3.2c Server (SolarStone FTP Server) [78.24.78.122]
USER test
331 Password required for rejki
PASS ***********
230 User rejki logged in
SYST
215 UNIX Type: L8
FEAT
211-Features:
XSHA256
MDTM
MFMT
UTF8
AUTH TLS
MFF modify;UNIX.group;UNIX.mode;
MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
LANG en-US*
XSHA1
PBSZ
PROT
REST STREAM
XCRC
XMD5
SIZE
211 End
Connect ok!
PWD
257 "/" is the current directory
Чтение каталога...
TYPE A
200 Type set to A
PORT 192,168,100,100,203,171
Код: Выделить всё
ServerName "SolarStone"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd.scoreboard
Port 21
Umask 022
MaxInstances 30
User ftp
Group ftp
PassivePorts 60000 65000
SQLAuthTypes Plaintext
SQLAuthenticate users
SQLConnectInfo ftp@localhost:3306 ftp ftp
SQLUserInfo `users_table` `username` `password` `uid` `gid` \
`homedir` `shell`
RequireValidShell off
SQLLogFile /var/log/proftpd.log
SQLLog PASS counter_login
SQLNamedQuery counter_login UPDATE "`last_login`=UNIX_TIMESTAMP(), \
`login_count`=`login_count`+1 WHERE \
`username`='%u'" `users_table`
SQLLog ERR_PASS counter_err
SQLNamedQuery counter_err UPDATE "`last_err_login`=UNIX_TIMESTAMP(), \
`err_login_count`=`err_login_count`+1 WHERE \
`username`='%U'" `users_table`
SQLLog RETR,STOR log_story_transfer
SQLNamedQuery log_story_transfer INSERT "'',\
UNIX_TIMESTAMP(),'%u',\
'%f', '%b', '%h', \
'%a', '%m', '%T'" \
`xfer_table`
SQLLOG ERR_RETR,ERR_STOR,ERR_DELE,ERR_RMD,ERR_RNTO\
log_err_modify
SQLNamedQuery log_err_modify INSERT "'',\
UNIX_TIMESTAMP(),\
'%u', '%f', '%h', \
'%a', '%m'" `xfer_errors`
DefaultRoot ~
<Limit PORT>
DenyAll
</Limit>
<Directory ~>
AllowOverwrite on
<Limit Write>
AllowAll
</Limit>
<Limit READ>
AllowAll
</Limit>
</Directory>