CentOS6にftpproxyをインストールした時の備忘録です。

■検証環境


■説明
ftpproxyを使用してFTPのProxyサーバを構築します。
FTPのクライアントソフトにはFFFTPを使用します。
FTP接続は、ftpproxyを経由してftp serverにアクセスします。
ftpproxyはxinetd(スーパーサーバ)で動作させるので、xinetdをインストールします。

■ftpproxy公式
http://www.ftpproxy.org/

- ダウンロード先
http://www.ftpproxy.org/download/

■FFFTP公式
http://www2.biglobe.ne.jp/~sota/ffftp.html

■OS , その他バージョン
- ftpproxy
OS : CentOS6.0 64bit
ftpproxy : 1.2.3

- ftp server
OS : CentOS6.0 64bit
vsftpd : 2.2.2-6.el6_0.1.x86_64

(1)必要なパッケージをインストール

[root@ftp-proxy ~]# yum -y install xinetd

(2)ftpproxyをダウンロード
[root@ftp-proxy ~]# wget http://www.ftpproxy.org/download/ftpproxy-1.2.3.tgz

(3)ftpproxyインストール
[root@ftp-proxy ~]# tar zxvf ftpproxy-1.2.3.tgz
[root@ftp-proxy ~]# cd ftpproxy-1.2.3
[root@ftp-proxy ftpproxy-1.2.3]# make
[root@ftp-proxy ftpproxy-1.2.3]# mkdir /usr/local/man/man1 -p
[root@ftp-proxy ftpproxy-1.2.3]# make install

(4)ftpproxy設定
[root@ftp-proxy ~]# vi /etc/xinetd.d/ftpproxy
service ftp
{
        disable = no
        socket_type = stream
        wait        = no
        user        = nobody
        server      = /usr/local/sbin/ftp.proxy
        server_args = -e -m
}

[root@ftp-proxy ~]# vi /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
↓ # 変更
*.info;mail.none;authpriv.none;cron.none;ftp.none                /var/log/messages

# --以下を追加--
# ftpproxy.
ftp.*                                                   /var/log/ftp
[root@ftp-proxy ~]# service rsyslog restart
システムロガーを停止中:                                    [  OK  ]
システムロガーを起動中:                                    [  OK  ]

[root@ftp-proxy ~]# vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
↓ # 修正
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron /var/log/ftp {

(5)起動
[root@ftp-proxy ~]# service xinetd start
xinetd を起動中:                                           [  OK  ]
[root@ftp-proxy ~]# chkconfig xinetd on
[root@ftp-proxy ~]# chkconfig ftpproxy on
[root@ftp-proxy ~]# chkconfig ftpproxy --list
ftpproxy        on
[root@ftp-proxy ~]# lsof -i:21
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  1669 root    5u  IPv6  11415      0t0  TCP *:ftp (LISTEN)
※21ポートでLISTENしていること

(6)FFFTPの設定

※新規で起動したと想定します。



 

 





「Firewall Type」は、「USER user@host」
「Firewall Hostname」は、「IP or domain」
「Port」は、「21」

に設定する。

テスト接続してみる。


ftpproxyのログ
Nov 23 20:20:35 ftp-proxy ftp.proxy[8852]: connected to client: 192.168.0.4, interface= 192.168.0.51:21
Nov 23 20:20:35 ftp-proxy ftp.proxy[8852]: info: monitor mode: on, ccp: <unset>
Nov 23 20:20:35 ftp-proxy ftp.proxy[8852]: monitor: server not responding
Nov 23 20:20:36 ftp-proxy ftp.proxy[8857]: connected to client: 192.168.0.4, interface= 192.168.0.51:21
Nov 23 20:20:36 ftp-proxy ftp.proxy[8857]: info: monitor mode: on, ccp: <unset>
Nov 23 20:20:36 ftp-proxy ftp.proxy[8857]: connected to server: 192.168.0.30
Nov 23 20:20:36 ftp-proxy ftp.proxy[8857]: login accepted: test@192.168.0.30
Nov 23 20:20:36 ftp-proxy ftp.proxy[8857]: cwd: /home/test

ftp serverのログ
Wed Nov 23 20:20:36 2011 [pid 26835] CONNECT: Client "192.168.0.51"
Wed Nov 23 20:20:36 2011 [pid 26834] [test] OK LOGIN: Client "192.168.0.51"

ftp serverのログを見ると接続元がftpproxyになっていることが分かる。

ファイルをアップロードしてみる。

ftpproxyのログ
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: connected to client: 192.168.0.4, interface= 192.168.0.51:21
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: info: monitor mode: on, ccp: <unset>
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: connected to server: 192.168.0.30
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: login accepted: test@192.168.0.30
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: cwd: /home/test
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: STOR /home/test/abc.txt: 11 bytes
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: 221 QUIT
Nov 23 20:22:42 ftp-proxy ftp.proxy[8995]: +OK: proxy terminating

ftp serverのログ
Wed Nov 23 20:22:42 2011 [pid 26845] CONNECT: Client "192.168.0.51"
Wed Nov 23 20:22:42 2011 [pid 26844] [test] OK LOGIN: Client "192.168.0.51"
Wed Nov 23 20:22:42 2011 [pid 26846] [test] OK UPLOAD: Client "192.168.0.51", "/home/test/abc.txt", 11 bytes, 1.47Kbyte/sec

問題無くアップロードされている。

一応、SRPMも作ってみた。

■ftpproxy.src.rpm
ftpproxy-1.2.3-1.el6.src.rpm
MD5(ftpproxy-1.2.3-1.el6.src.rpm)= 7e655e8e08af05feb575362f81524d85

(1)ftpproxy-1.2.3-1.el6.src.rpmをダウンロード
[root@ftp-proxy ~]# wget http://www.kurobuti.com/download/ftpproxy/ftpproxy-1.2.3-1.el6.src.rpm
[root@ftp-proxy ~]# openssl md5 ftpproxy-1.2.3-1.el6.src.rpm
MD5(ftpproxy-1.2.3-1.el6.src.rpm)= 7e655e8e08af05feb575362f81524d85

(2)ftpproxy-1.2.3-1.el6.src.rpmをインストール
[root@ftp-proxy ~]# rpm -ivh ftpproxy-1.2.3-1.el6.src.rpm
   1:ftpproxy               ########################################### [100%]

(3)ftpproxyのrpmパッケージ作成
[root@ftp-proxy ~]# cd rpmbuild/SPECS/
[root@ftp-proxy SPECS]# rpmbuild -bb ftpproxy.spec

(4)ftpproxy-1.2.3-1.el6.x86_64.rpmのインストール
[root@ftp-proxy SPECS]# cd ../RPMS/x86_64/
[root@ftp-proxy x86_64]# rpm -ivh ftpproxy-1.2.3-1.el6.x86_64.rpm
準備中...                ########################################### [100%]
   1:ftpproxy               ########################################### [100%]
※xinetdはインストール済みのこと

(5)起動
[root@ftp-proxy ~]# service xinetd start
xinetd を起動中:                                           [  OK  ]
[root@ftp-proxy ~]# chkconfig xinetd on
[root@ftp-proxy ~]# chkconfig ftpproxy on
[root@ftp-proxy ~]# chkconfig ftpproxy --list
ftpproxy        on
[root@ftp-proxy ~]# lsof -i:21
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xinetd  1768 root    5u  IPv6  10087      0t0  TCP *:ftp (LISTEN)
※ftpproxyのログを「/var/log/messages」から「/var/log/ftp」に出力する場合は、手動で設定してください。デフォルトは「/var/log/messages」です。


11月 23, 2011 at 8:35 pm by 黒ぶちメガネ
Category: Linux, proxy