vine-users ML アーカイブ



[vine-users:056491] FTP ポート変更して ls コマンドが機能しなくなりました

  • From: "KM" <MK278@xxxxxxxxxxx>
  • Subject: [vine-users:056491] FTP ポート変更して ls コマンドが機能しなくなりました
  • Date: Sun, 1 Dec 2002 19:28:15 +0900
KMと申します。vine2.5を使用しています。

ADSL
|
ppp0
vine2.5(foo.mydomain.co.jp)

としています。/etc/xinetd.d/proftpを
service ftp
{
 disable = no
 flags  = REUSE
 socket_type = stream
 wait  = no
 user  = root
 server  = /usr/sbin/in.proftpd
 log_on_success  += DURATION USERID
 log_on_failure += USERID
 nice = 10
}

/etc/proftpd.confを
#ServerType standalone
ServerType inetd
DefaultServer on
Port 21 is the standard FTP port.

として/etc/hosts.allowは
in.proftpd: ALL

にして外部ホストからもこのFTPサーバにアクセスできました。それでポート番号を
変更してみました。

/etc/servicesを
ftp-data 20/tcp
ftp-data 20/udp
ftp 21/tcp
ftp 21/udp

↓

ftp-data 1029/tcp
ftp-data 1029/udp
ftp 1030/tcp
ftp 1030/udp

と書き換えて

/etc/proftpd.confを
#ServerType standalone
ServerType inetd
DefaultServer on
# Port 21 is the standard FTP port.
Port 1030
#Port 21
PassivePorts 1029 1029

iptablesを
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 0/0 --dport 1030 -i ppp0 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp ! --syn --sport 1030 -d 0/0 -o ppp0 -j
ACCEPT
/sbin/iptables -A INPUT -p tcp ! --syn -s 0/0 --dport 1029 -i ppp0 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 1029 -d 0/0 -o ppp0 -j ACCEPT

としました。

/etc/shut.msgを削除して外部ホストにリモートログインして

$ ssh gaibu.host.co.jp
% ftp foo.mydomain.co.jp 1030
200 PORT command successful

FTPログインできましたがやはり、lsコマンドで止まってしまいます。
ローカル上でだと
$ ftp localhost 1030
とするとログインでき、lsコマンドも使えました。

どうしてlsコマンドが使用できないのでしょうか?


スタンドアロンでproftpdを起動してデバッグモードにしてみました。
# proftpd -n -d9

そして外部ホストからアクセスしてみるとログインしてlsコマンドを使用すると

% ftp foo.mydomain.co.jp 1030
Connected to foo.mydomain.co.jp.
220 ProFTPD 1.2.5rc1 Server (ProFTPD Basic Configuration)
[foo.mydomain.co.jp]
Name (foo.mydomain.co.jp:hoehoe): user01
331 Password required for user01.
Password:
230 User user01 logged in.

ftp> ls
200 PORT command successful.
425 Can't build data connection: Connection timed out

となりました。この際のエラー出力は下記のようになりました。
# proftpd -n -d9
:
(中略)
:
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - USER user01: Login
successful.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_readme
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_linuxprivs
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - Linuxprivs:
capabilities '= cap_net_bind_service+ep'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
POST_CMD command 'PASS (hidden)' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PASS (hidden)' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PASS (hidden)' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'PWD' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'PWD' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - in
dir_check_full(): path = '/home/user01', fullpath = '/home/user01'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PWD' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching LOG_CMD
command 'PORT xxx,xxx,xxx,xxx,152,159' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'NLST' to mod_core
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching PRE_CMD
command 'NLST' to mod_ratio
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching CMD
command 'NLST' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - in
dir_check_full(): path = '/home/user01/rpm', fullpath = '/home/user01/rpm'.
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
LOG_CMD_ERR command 'NLST' to mod_log
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - dispatching
LOG_CMD_ERR command 'NLST' to mod_ls
foo.mydomain.co.jp (gaibu.host.co.jp[xxx.xxx.xxx.xxx]) - FTP no transfer
timeout, disconnected.