■Zebedee 事務所から自宅 FTP サーバへ接続

事務所から自宅の FTP サーバへ、インターネットを経由して Zebedee で接続することができました。その手順を記しておきます。

サーバは Vine Linux 4.2 、ホスト名「lina」。クライアントは Windows 2000 Pro SP4 、ホスト名「office」です。使用した Zebedee は 2.4.1A-0vl2 。
クライアント office からインターネットを介して、自宅の FTP サーバ lina へ接続するために、この間を Zebedee で暗号化します。


1. サーバ側の設定

FTP サーバ proFTPd の設定は当初のままで変更ありません。ip_conntrack_ftp や ip_nat_ftp も必要ありません。
データコネクションに関しては、ゲートウェイ ftpgw.tcl にポートを指定するだけで良いようです。

Zebedee とゲートウェイは次のように起動します。

$ zebedee -s -r 2121,30000-30029
$ tclsh /usr/bin/ftpgw.tcl -p 30000-30029

30000-30029 はパッシブモードで使用するデータコネクションのポートです。FTP サーバの接続数がディフォルトの 30 になっていますので、それに合わせた数にしてみましたが、意味あるのかどうか定かではありません。

lina のファイアウォールはポート 11965/TCP だけを開放しておけば OK です。
なお、自宅 LAN 内ではポートモードで FTP サーバに接続するので、FTP のチェックは入れたままにしています。

ルーターは、ホスト lina に対して 11965/TCP をアドレス変換するように設定します。FTP(20-21) ポートは塞いでしまいます。フィルタも 11965 を通すようにしておきます。


2. クライアント側の設定

クライアント側は次のように起動します。

>"C:¥Program Files¥Zebedee¥zebedee.exe" -d 2121,30000-30030:hoge.domain.net:2121,30000-30030

hoge.domain.net は自宅 FTP サーバのホスト名です。
-d オプションは、以前と同じように、Zebedee をフォアグラウンドで動かすために指定しています。コマンドプロンプトの窓に接続の状況が表示され、コマンドプロンプトを閉じれば Zebedee も終了します。クライアント側は、FTP を使用するときだけトンネルを繋げばいいので、-d を付けたほうが良いように思います。

FTP クライアントは、ホスト名を「localhost」にし、ポートは「2121」を指定します。そしてパッシブモードで接続します。


これで事務所〜自宅間が暗号化できたので、ひとまず安心して FTP が使えます。しかし、速度は半分程度に落ちてしまいました。まぁ実務的にはさほど問題ないんでいいんですけど。

■Zebedee FTP ルーター越え試行錯誤

家の LAN 内ではうまくいった Zebedee によるトンネルを経由した FTP ですが、事務所からのインターネットを介したテストではまったくうまくいきませんでした。接続はできるのですが、ファイル一覧の取得がまったくできない状態です。
LAN 内で netstat -na コマンドでポートの状態を確認すると、制御コネクションは 11965 で繋がっていますが、データコネクションはまったく別なポートで直接繋がっていました。これがルーターを越えなければデータのやりとりはできません。

じゃ、データコネクションもトンネルを通すために、とりあえずパッシブモードでルーター越えできるように proFTPd を設定してみようとやってみたのですが、さんざん試行錯誤した結果、どうもうまくありません。
まず、FTP クライアントをパッシブモードにして接続してみましたが、もちろんこれはまったくダメ。
proftpd.conf に「PassivePorts 30000 30029」と書いてみたら、そのポートで繋がるけれど、すぐダメになる。そりゃそうだ、ポートを開けなくちゃいけないなってんで、ルーターにアドレス変換を追加して、ファイアウォールに穴開けて、お、うまくいったと思ったら、やっぱりなんだか不安定。ちょくちょくデータが止まってしまう。
なんだかよくわからないんだけど、ip_conntrack_ftp とか ip_nat_ftp とかをロードしないといけないってんでやってみたけれど、まったく改善せず。
そうかそうか、パッシブモードなんだから、FTP サーバから接続先を指定してやらないといけないんだと、「MasqueradeAddress hoge.domain.net」と書いてみたら、なぜだかわからないがルーターが暴走してしまう。
ルーターが暴走しちゃうと VNC も繋がらないし、もう事務所からはどうにもならないので、帰宅。そんな日々が続く……

どうやら、わが家の FTP サーバはパッシブモードで動かすことはできないのかな、と諦めかけたその時! ふっとひらめいた!!

トンネルを介したとき、FTP はルーターを越える必要がないんじゃないのか?!

ルーターを越えなければならないのはトンネルの 11965 だけで、FTP サーバはトンネルの出口とさえ繋がればいいのだからね。

で、やってみた。

サーバ側は「zebedee -s -r 2121,30000-30029」で起動し、ゲートウェイは「tclsh ftpgw.tcl -p 30000-30029」で待ち受け開始。
クライアント側は「zebedee 2121,30000-30029:remhost:2121,30000-30029」とします。

そいで、パッシブモードで接続して、netstat -na してみた。
結果は、サーバクライアント間はポート 11965 のみが繋がっていて、21 とか 2121 とか、データコネクションの 30000 いくつといったポートはすべて自分自身の中で繋がっているだけ。
これなら、ルーターを越すのはトンネルの 11965 のみで良いはずです。

今夜のところは LAN 内でのテストだけ。インターネットを介したテストは、明日事務所からもう一度やってみます。

■Zebedee VNC と FTP を使う

蛇足的ですが。

VNC と FTP の両方を Zebedee を通して利用するために、次のように起動することにします。


■サーバー

$ zedebee -s -r 2121,5900
$ tclsh /usr/bin/ftpgw.tcl


■クライアント

>"C:¥Program Files¥Zedebee¥zebedee.exe" -d 2121,5901:lina:2121,5900


これで、クライアントのポート 2121 はターゲットの 2121 へ、5901 は 5900 へ繋がることになり、VNC も FTP も利用できるようになりました。

■Zebedee FTP サーバへ接続する(成功)

この問題を克服するのを助けるために、ftpgw.tcl というFTPゲートウェイのスクリプトが Zebedee パッケージには含まれている。
(「Zebedee --- シンプルでフリーでセキュアなトンネルプログラム」より)

ということなので、やってみます。

まず、/usr/bin/ftpgw.tcl を一部変更します。

# vi /usr/bin/ftpgw.tcl

次の行を変更します。

set FtpdHost mail.todo.gr.jp;# Host on which ftpd is running
       ↓
set FtpdHost lina        ;# Host on which ftpd is running

FTP サーバは Zebedee と同じホストで動いていますから、自分自身を指定しています。
:wq で保存終了。

ftpgw.tcl を起動すると、コマンドプロンプトが出なくなるので、先に Zebedee を起動します。

$ zebedee -s -r 2121

この場合はホストを指定する必要はありません。
次に、ftpgw.tcl を起動します。

$ tclsh /usr/bin/ftpgw.tcl

これで、FTP ゲートウェイが 2121 を待ち受けるようになりますが、GNOME 端末を閉じてしまうと停止するので、そのままにしておきます。

クライアント側を起動します。

>"C:¥Program Files¥Zebedee¥zebedee.exe" -d 2121:lina:2121

FTP クライアントソフトでポートを 2121 にして、ホスト windy に接続します。
これで、リストの取得なども正常に行えるようになりました。

残念ながら今は FTP サーバがパッシブモードで動いていませんので、コントロールコネクションのみの保護となります。データコネクションも保護するためにはパッシブモードを使えるようにしないといけないですね。今後の課題です。

■Zebedee FTP サーバへ接続する(失敗)

Zebedee を利用して FTP サーバへ接続してみましょう。
Zebedee --- シンプルでフリーでセキュアなトンネルプログラム」の「FTPの通信を安全にする(Securing FTP traffic)」を参考にします。


FTP サーバはホスト lina で稼動していますので、次のように Zebedee を起動します。

$ zebede -s -r ftp lina

-s はサーバモードのオプション、-r はポートの指定のオプションです。最後の lina はターゲットホストで、Zebedee が FTP サーバと同じホストであっても、明示的に書かなければならないそうです。localhost ではダメってことですね。

次にクライアント側を次のように起動します。

>"C:¥Program Files¥Zebedee¥zebedee.exe" -d 10000:lina:ftp

FTP クライアントソフトでは、ポートを 10000 に変更してホスト名 windy に接続します。

ところが。

これでトンネルを通して FTP サーバに接続することはできましたが、操作しているうちに動かなくなってしまいました。どうやら
FTPのコントロールコネクションとデータコネクションが同じ所から来ているかどうかチェックするFTPサーバがあるが、そういうサーバに対しては上記の手法はうまくいかない。
(「Zebedee --- シンプルでフリーでセキュアなトンネルプログラム」より)

ということのようです。

■Zebedee クライアント (Windows2000)側 の設定

次にクライアント側に Zebedee をインストールします。


1. Zebedee のダウンロードとインストール

Windows 用の Zebedee は Wintons on the World-Wide Web からダウンロードできます。
「Zebedee Secure Tunnel」に入り、「Download」から zbd241Asetup.exe をダウンロードします。

ダウンロードしたファイルを実行すれば、インストールは完了です。


2. Zebedee の起動

ここでは、UltraVNC を使用してサーバ lina をリモート操作することにしますので、クライアントポート(トンネルの入口)を 5901とし、リモートマシン lina に接続、ターゲットポート(トンネルの出口)は VNC(vino)が使用している 5900 とします。

方法はいくつかあります。
まずは、コマンドプロンプトから起動する方法。コマンドプロンプトを起動し、次のように入力します。

>"C:¥Program Files¥Zebedee¥zebedee.exe" -d 5901:lina:5900

ここで -d オプションを付けているのは、Zebedee をバックグラウンドで動かさないためです。実行するとコネクション待ちになり、コマンドプロンプトを閉じると Zebedee は終了します。
-d をつけないと、実験的に Zebedee を起動するたびに複数のプロセスが動いてしまうことになります。バックグラウンドで動いてしまった Zebedee は、タスクマネージャからプロセスの停止をしないと終了できないようです。

同じコマンドを「ファイル名を指定して実行」に入力しても OK です。

毎回コマンドを入力するのは面倒なので、ショートカットを作りましょう。
デスクトップを右クリックして「新規作成」「ショートカット」を選択します。項目の場所として上のコマンドを入力します。「次へ」をクリックして、ショートカットの名前を適当に入れて「完了」です。


3. VNC ビューアの起動

通常通りに VNC ビューアを起動し、VNC サーバとして「localhost:1」を入力します。「接続」ボタンを押せば、サーバ lina に入ることができます。
「lina:0」では接続できないことを確認しておきましょう。もし繋がってしまうようなら、ファイアウォールの設定を見直します。


これで、クライアント・サーバ間が暗号化されました。
ただ、このトンネルは認証がありませんので、Zebedee を使えば誰でも入ることができます。トンネル自体にも認証が必要にもできるようなので、次はそのように改善したいと思います。

■Zebedee サーバ (Vine Linux) 側の設定

俺が試行錯誤した先の記事を踏まえて(^_^;) Zebedee のインストールを始めましょう。

サーバは Vine Linux 4.2 、ホスト名「lina」。クライアントは Windows 2000 Pro SP4 、ホスト名「windy」です。使用した Zebedee は 2.4.1A-0vl2 。
クライアント windy から UltraVNC を使用して、サーバ lina をリモート操作するために、この間を Zebedee で暗号化します。


1. Zebedee のインストール

「Synaptic パッケージマネージャ」を起動し「再読込」します。「zebedee」で検索すると zebedee が出てきますのでインストールします。


2. ファイアウォールの設定

「セキュリティレベルとファイアウォールの設定」を起動し、「その他のポート」をクリックします。「追加」ボタンを押してポートに「11965」を追加します。プロトコルは「tcp」です。
ポート 11965 は、Zebedee がトンネルに使用しているポート番号です。
なお、5900 のポートは削除して塞いでしまいましょう。でないと、暗号化なしで繋がってしまい、意味がありません。


3. Zebedee の起動

GNOME 端末を起動して Zebedee をサーバモードで起動します。

$ zebedee -s -r 5900

「-r 5900」で VNC のポートを指定していますが、これが無いときはすべてのポートが対象になります。

サーバ側の設定はこれだけです。

■Zebedee トンネル開通

Windows の UltraVNC は DSM プラグインを使用して暗号化されていますが、Vine Linux の VNC(vino)は暗号化されていません。また、FTP サーバも暗号化されていないわけで、セキュリティ的にアブナイ状態です。
で、トンネリングツールの Zebedee を使用して Linux サーバのセキュリティ向上を図ろう、という企画です(^_^)

しかしまぁ毎度のことだけれども、インターネットを徘徊してその方法を探すわけですが、どこもみんな内容が難しい。理解できん。書いてあるとおりにやってみるけど、うまくいかない……

それでも、あちこちのサイトを参考に試行錯誤の結果、ついに Linux と Windows の間にトンネルが開通しました。バンザイ!

結果的に最も参考になったサイトは、「Zebedee --- シンプルでフリーでセキュアなトンネルプログラム」でした。この中の「基本的な使い方」だけで十分です。開通してしまえば、なんとゆーことはない、実に簡単です。

でまず、当初、俺が見舞われたいくつかのエラーについて書いておきます。これらの解決にかなり時間がかかってしまいました。


■サーバ側で出たエラー

Linux に Zebedee をインストールしてからサーバモードで起動すると、次のようなエラーが出ました。

$ zebedee -s
zebedee(2803/16384): ERROR: can't resolve host or address 'localhost'
zebedee(2803/16384): ERROR: listener bind failed: (Address already in use)
zebedee(2803/16384): ERROR: server can't listen on port 11965

1 行目のエラーですが、「localhost」というホスト名が解決できないようです。
これは、「ネットワークの管理」の「ホスト」タブを開き、IP アドレス 127.0.0.1 の別名に「localhost」を追加してやることで解決します。要するに、自分自身に「localhost」という名前をつけてやるってことですね。

2 行目と 3 行目のエラーは、これがなかなかわからなかったのですが、Zebedee が使用する 11965 のポートがすでに使われいるのか開けないのか、そんなことのようです。
これ、なんとゆーことのない凡ミスです。すでに Zebedee が動いているのに、もう一度起動しようとしていたためでした。
一旦「killall zebedee」で終了してから、もう一度起動したら、エラーは消えました。


■クライアント側で出たエラー

エラーというか、トンネルの考え方を勘違いしていたという話です。
クライアントのアプリケーションは、トンネルの入口のポートに接続しなければなりません。サーバ側のアプリケーションのポートでも、Zebedee が使っている 11965 でもありません。

Windows の コマンドプロンプトから、次のように Zebedee をクライアントモードで起動します。

>"C:¥Program Files¥Zebedee¥zebedee.exe" remhost:5900

「remhost」はサーバのホスト名、「5900」 はVNC(vino) が使用しているポートです。
起動すると次のように表示されます。

zebedee(1708/1684): Listening on local port 1366

これは、トンネルの入口のポートが 1366 だよという意味ですから、クライアントアプリケーションはこのポートへ接続しなければなりません。
したがって、VNC ビューアの起動は次のようになります。

>"C:¥Program Files¥UltraVNC¥vncviewer.exe" localhost:1366

ポイントは「localhost:1366」です。トンネルの入口は、自分自身のポート 1366 ですから、ここへ接続することになります。あとは、Zebedee がトンネルを通ってサーバへ運んでくれます。サーバ側では Zebedee がサーバ・アプリケーションへ繋いでくれます。

で、トンネルの入口のポートをいちいち確認しなければならないのは面倒なので、Zebedee を次のように起動することにします。

>"C:¥Program Files¥Zebedee¥zebedee.exe" 5901:remhost:5900

最初の「5901」でトンネルの入口のポートをして指定しています。こうすれば、VNC ビューアは「localhost:1」というふうにディスプレイ番号を指定して接続できるようになります。
もちろん、ポートを 5900 にして、ディスプレイ番号を 0 でもかまわないですよ。ここでは同じポート番号だと勘違いするので、あえて異なったポート番号にして説明しているだけです。


ちなみに、このトンネルは他のクライアントからでも利用できます。Zebedee クライアントのホスト名を「clihost」とすると、他のパソコンから「clihost:1」へ接続することでトンネルを通して remhost へ接続することができます。
つまり、Zebedee クライアントと、クライアント・アプリケーションは同一のマシンでなくても良いってことですね。

■Vine Linux 4.2 root になれるユーザーの制限

ディフォルトの設定では、su コマンドを使用して root のパスワードを入力すれば誰でも root になれます。セキュリティ向上のために、root になれるユーザーを制限する設定をしてみます。

まず、/etc/group の wheel の行に、root になれるユーザー hogehoge を追加します。

# vi /etc/group
wheel:x:10:root,hogehoge

次に、/etc/login.defs に次の行を追加します。

# vi /etc/login.defs
SU_WHEEL_ONLY yes

そして最後に、/etc/pam.d/su の次の行頭の # を削除して有効にします。

# vi /etc/pam.d/su
auth required pam_wheel.so use_uid

これで su コマンドで root になろうとしてパスワードを入力しても、

su: パスワードが違います

と表示されて root になれません。
なお、この設定で GNOME でも root のパスワードが受け付けられなくなります。

■Vine Linux 4.2 FTP 禁止ユーザーの設定

FTP サーバに関するメモです。

FTP専用のユーザを作成しましたので、通常サーバにログインしているユーザを FTP サーバにはログインできないようにします。
FTP サーバへのログインの禁止を設定しているのは /etc/ftpusres というファイルですので、ここに禁止ユーザー hogehoge を追記します。

# vi /etc/ftpusers
root
 :
 :
hogehoge

<< | 2/4PAGES | >>

■calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>

■search this site.

■recommend

毎日貯まるポイントサイト ECナビ

■recommend



■Twitter

■recommend

■recommend

■selected entries

■categories

■archives

■recent comment

■recent trackback

■links

■profile

■others

■mobile

qrcode

■powered

無料ブログ作成サービス JUGEM