
Ubuntu日本語フォーラム
ログインしていません。
目的
1 : FTPクライアントを使ってサーバにアクセスしてきたユーザーが、サーバ側で指定したディレクトリから上位を見れない、遡れなくする方法
2 : FTPクライアントを使ってサーバにアクセスしてきたユーザーが、指定したディレクトリ内にある.(ドット)で始まるファイル/ディレクトリを見れない、操作できなくする方法
環境
Ubuntu 10.04LTS server
vsftp 2.2.2-3ubuntu6.2( ←どうやって調べていいのか分からなかったのでSynapticパッケージマネージャに表示されている情報を掲載します )
現状
下記にvsftpd.confの設定内容を記します。
これらの設定で私としては、目的「1」「2」の両方を実行することができると思っていたのですが、実際にはユーザーは上位を見ることができる&上位へ移動することもできる。さらに、ドットで始まるファイルが表示されている状態です。
ネットでlocal_rootやchroot_local_userなどについて調べてみましたが、掲載されている内容が同一でなく逆に何が正しいのか分からなくなりました。。。
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=welcome
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list#
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
local_root=/home/share/
ssl_enable=YES
force_local_logins_ssl=YES
force_local_dada_ssl=YES
hide_file={*.txt,*.doc}
deny_file={*.txt,*.doc}
なお、上記のvsftpd.conf以外にvsftpd.chroot_listとvsftpd.user_listの両方にはこの設定を反映させたいユーザー名が既に記してあります。
見にくい点、分かりにくい点があるかもしれませんが、どうぞお願いします。
オフライン
①は、
chroot_list_enable=YES local_root=/ルートディレクトリに見せたいディレクトリ名 chroot_list_file=/etc/vsftpd.chroot_list #chrootしたいユーザーIDリスト
なお、CentOS(Fedora)とUbuntuでは/etc以下のディレクトリ構成が違いますので、HPがどちらのディストリでFTPを実現しているか確認を。
オフライン
funatogawaさんへ
返答ありがとうございます。なるほど、CentOS(Fedora)の場合は/etc以下の構成が異なるんですか、知りませんでした。。。
その辺をふまえてネット検索してみます。
頂いた返答内容について2点(A、B)質問があります。
A : 「 local_root=/ルートディレクトリに見せたいディレクトリ名 」とありますが例えば /home のディレクト内にある shareというディレクトリ( /home/share )をrootディレクトリとして表示させたい場合は下記の方法であっていますか?
local_root=/home/share
B : 「 chroot_list_file=/etc/vsftpd.chroot_list 」で指定しているvsftpd.chroot_listの記入内容について ( ←念の為、確認します。このvsftpd.chroot_listの場所は/etcディレクトリ内です。 )
chrootしたいユーザー名が仮にtarouだとすると、vsftpd.chroot_listの一番上、左端にtarouとだけ記入しています。
他に記入するべきものはあるのでしょうか?次に記す例のような記入にはしていません。 【例: 'tarou' tarou; tarou. 】
よろしくお願いします。
オフライン
大まかな説明はこちら(ただし、rootでログインしているが、推奨しません。sudoをつけてください)。
Vsftpd のインストールと設定
ただし、エディター起動は
gksudo gedit /etc/vsftp.conf
ftpサーバーのリスタートは
sudo service vsftpd restart
というように、gksudoやsudoを付けてください。
また、ftpを使うためには、サーバーにユーザとして登録されている必要があります。
そのなかで、利用者を限定するときは、
userlist?enable=YES userlist_file=/etc/user_list userlist_dany=NO
また、パスワードが平文で流れないように、SSLも設定します。
SSL/TLS の設定
詳しくはこちら。http://manpages.ubuntu.com/manpages/nat … onf.5.html
http://manpages.ubuntu.com/manpages/gut … onf.5.html
(ひどい日本語だ。英語版のほうが読みやすい。)
FCの場合(vsftpd.confの書き方はubuntuと同じです。)
http://pocketstudio.jp/linux/?FC4%2Fvsf … D%F8%B5%BB
A chrootで、rootを指定しなければ各ユーザーのホームです。が、ホームは個々のユーザーだけが利用可能です。利用者全員のホームに「~/share」をつくってもみんなで利用というわけにはいきません。
B 1行にユーザーIDだけです。
ubuntuの場合は、デフォルトでanonymous login onlyになっていますので、注意してください。
オフライン
funatogawaさんへ
再び返答して頂きありがとうございます。また、いろいろと参照サイトや設定など教えて下さりありがとうございます。紹介していただいたサイトを全て見て見ました。
現在、FTPサーバではデータ転送を強制的にSFTPのみで行えているので、自分としてはSSL関係は無事に意図した設定ができていると考えています。
また、こちらで制限したユーザー以外はアクセスできなくなっているのでuserlist関係も無事に設定できていると同様に考えています。自分としてはあと一歩でこのFTPサーバを公開しようと思っているのですが、やはりFTPクライアントでサーバに接続するとルートディレクトリの上層部に戻れる&見える状態です。
ひょっとして、現在の私の設定(このフォーム最下部に記します)で本来なら目的(これも下に記します)の動作が得られるはずなのに、何らかの原因でダメなのだとしたら、vsftpの再インストールまたはubuntu自身の再インストールも視野に入れています。
【 目的 】
FTPクライアントを使ってサーバにアクセスしてきたユーザーが、サーバ側で指定したディレクトリ( local_root )から上層部へ行けなく&見れなくする
現在のsftpd.confの設定内容は下記の通り
※ SSL関係、userlist関係、基本的なデータ転送関係は無事に動作しているのでその辺の項目は省きます。
※ 仮に私が勝手に記載していない項目て、原因追求の判断材料として必要なものがあった場合は
お手数ですが一番最初の投稿を参照していただけると、欠けた情報の補填ができると思います。
local_root=/home/share/
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
なお、/etcにあるvsftpd.chroot_list内にはchrootをさせたいユーザー名を記載してあります。
※最初の投稿では、chroot_local_user=YES となっていましたが、紹介してもらったサイトを参照してchroot_local_user=NO が正しいと判断し今はその様にしています。
【 現状 】
サーバにアクセスしたユーザーは " / " まで戻ることができまた/から下層の全てのファイル・ディレクトリを見ることができます。
どうぞ、よろしくお願いいたします。
オフライン
chroot_local_user=YES のときは、chroot がデフォルトで chroot_list_file で指定したファイルに書かれたユーザーは chroot されない
chroot_local_user=NO のときは、chroot しないのがデフォルトで chroot_list_file で指定したファイルに書かれたユーザーは chroot される
chroot_list_enable は chroot_list_file の有効 (YES) ・無効 (NO) を指定する
chroot_list_file に指定するファイルには、ユーザー名を改行で区切って書く
chroot_local_user と chroot_list_enable は YES 以外は、コメントアウトを含めて全部 NO とみなされる
オフライン
ryさんへ
頂いた内容を踏まえて現在の設定を確認すると
本来なら目的の処理(chroot_list_fileにあるユーザーをchrootさせる)ができているはず、ということがわかりました。
返答ありがとうございます。
オフライン
当初、FileZillaなどのFTPクライアントからサーバへSFTP接続できていたため、SSH関係の設定は無事にできていると思っていましたが、どうも設定変更が必要なのかもしれません。
最下部に紹介してある3つのサイトで「 SFTP + chroot 」の関係が出てきます。それらの内容を自分なりに理解すると
【 SFTP接続でサーバにアクセスされた場合、vsftpで設定したchroot機能は働かず /(ルート) 以下が丸見えになる 】 でした。
サイトではパッチやいろいろな設定方法が紹介されています、その内容をゆっくり噛み砕きながら現在自分のサーバで試している状態です。
ただ、内容が難しいのでどなたかこの設定方法をもう少し初心者レベルで紹介しているサイトをご存知でしたら、教えて頂けると大変助かります。
3つのサイト
◆http://centossrv.com/vsftpd.shtml
(↑このページの一番下にあります)
◆http://centossrv.com/patio/patio.cgi?mode=view&no=1126
(↑この投稿を見つけたのが始まりでした)
◆http://linux.kororo.jp/cont/server/openssh_chroot.php
(↑このサイトではこの問題の処置としてパッチを利用しているようです)
オフライン
もしかすると
Seki4 による投稿:
【 SFTP接続でサーバにアクセスされた場合、vsftpで設定したchroot機能は働かず /(ルート) 以下が丸見えになる 】
FTP
http://ja.wikipedia.org/wiki/File_Transfer_Protocol
と
SFTP
http://ja.wikipedia.org/wiki/SSH_File_Transfer_Protocol
がごっちゃになっていませんでしょうか?
「FileZillaなどのFTPクライアントからサーバへ『SFTP接続』」した際は
・「File Transfer Protocol」ではなく「SSH File Transfer Protocol」というそれぞれ別のものを使い接続を試みます。
・サーバ側で動くプログラムはvsftpdではありません。
(ssh関連パッケージに含まれる、sftp-server という名前のプログラム)
・設定ファイルももちろんvsftpdとは違うものです。
また、『SFTP接続』」は「File Transfer Protocol」に暗号化を加えたもの(SSL/TLSなど)とも違いますし、
例えば
http://centossrv.com/vsftpd.shtml
の一番下に書いてあることは
「FTPとSFTPは違うものなのでプログラムも違うから、FTPを行うプログラムvsftpdの設定をした後にSFTPを行うプログラムも別途設定すべし」
という事です。
状況を推測するに
・vsftpdは設定して動作させているが、使われていない
・サーバとクライアントは『SFTP接続』で接続している
・使っていないvsftpdの設定を編集し続けていた
と思われます。
なお、「SFTPでchroot」については
http://linux.kororo.jp/cont/server/openssh_chroot.php
の情報は古く、現在のUbuntuでは使いません(使えません)
http://d.hatena.ne.jp/rougeref/20080627/p1
などご覧下さい。
オフライン
ackさんへ
まさにおっしゃる通りです( ;∀;) 記載されている「現状推測」などはそのものズバリです。
>また、『SFTP接続』」は「File Transfer Protocol」に暗号化を加えたもの(SSL/TLSなど)とも違いますし、
はい、思いっきりそう思っていました。
紹介して頂いたサイトを参照しながら再度諸々を設定し直してみます。
ackさんを始め返答してくださった方々へ感謝致します。また、私の誤解が招いたゴタゴタに付き合っていただきありがとうございました。
最後に、ackさんが紹介してくださったサイトで設定をし直すのに何の問題も無さそうなのですが、できれば回答者の方々を始めこの質問をご覧になっている方でこの「SFTPによるchroot設定方法」について述べられているいいサイトをご存知でしたら、記載していただけると大変助かります。もちろん自分でもネット検索するつもりですが、ackさんの返答にもあるように、私のような初心者にはどの情報が依然として利用でき、どの情報が今では使われていない、または使えない情報なのかの判断が難しいからです。
よろしくお願いします。
オフライン
こんにちわー
解決した感がありますが FTPS (≠ SFTP) で vsftpd に繋ぐというのも一応あります
というか Seki4 さんが #1 で設定されていた方法って FTPS ですね
Filezilla で FTPS (TLS) で繋ぐなら
Protocol: FTP
Encryption: Require explicit FTP over TLS
にすれば #1 の設定でほぼ OK ではないかと思います
では~
オフライン
favicon.icoさんへ
おっしゃるとおり#1での設定はFTPS用の設定ですね。いろいろごっちゃになっていました。 情報を上げていただきありがとうございます。
オフライン