Amazon EC2、DebianでFTP(vsftpd)設定

2009/04/06

エンジニアではない、ただのWebデザイナーの私なのですが、
[Enter] + [Y] を連打してたら、Amazon EC2、Debianを設定 できちゃったので、
次はいよいよ、FTPの設定をしてみます。

まずは、vsftpのインストールと、FTPの設定から。

  1. EC2へSSHログイン
    # ssh -i EC2key.pem root@ec2-XXXX.amazonaws.com
  2. vsftpdをインストール
    # apt-get install vsftpd
  3. [Y/n]? と聞かれるので
    # Y
  4. FTPコマンドをインストール
    # apt-get install ftp
  5. [Y/n]? と聞かれるので
    # Y
  6. FTPランレベルを確認
    chkconfig --list vsftpd
    コマンドが使えないって言われる。(´・ω・) 
  7. chkconfigコマンドをインストール
    # aptitude install chkconfig
  8. [Y/n]? と聞かれるので
    # Y
  9. FTPランレベル確認に再挑戦
    chkconfig --list vsftpd
    vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off となればOK
  10. OS再起動時に自動的にvsftpdを実行させる
    # chkconfig vsftpd on
  11. 21 番ポートが LISTEN されているか確認
    # netstat -lnptg
    tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1965/vsftpd となればOK
  12. 使われていないポートを確認する
    # cat /proc/sys/net/ipv4/ip_local_port_range
    32768 61000が開いてると言われるのでメモ



次は、設定ファイル「vsftpd.conf」の変更。場所は、/etc/の中に格納されています。

  1. etcディレクトリに移動する
    # cd etc
  2. 念のため、vsftpdの設定ファイ「vsftpd.conf」のバックアップ作成
    # cp -p vsftpd.conf vsftpd.conf.backup
  3. nanoエディタで「vsftpd.conf」を編集
    # nano /etc/vsftpd.conf
  4. 14行: listen=YES
    23行: anonymous_enable=NO
    26行: local_enable=YES
    29行: write_enable=YES
    33行: local_umask=022
    52行: connect_from_port_20=NO
    62行: xferlog_file=/var/log/vsftpd.log
    65行: xferlog_std_format=NO
    68行: idle_session_timeout=600
    71行: data_connection_timeout=120
    90行: ascii_upload_enable=YES
    91行: ascii_download_enable=YES
    105行: chroot_local_user=YES
    110行: chroot_list_enable=YES
    112行: chroot_list_file=/etc/vsftpd.chroot_list
    133行: #pam_service_name=vsftpd
    137行: #rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    末尾に追加: use_localtime=YES
    末尾に追加: pasv_enable=YES
    末尾に追加: pasv_addr_resolve=YES
    末尾に追加: pasv_min_port=60000
    末尾に追加: pasv_max_port=61000
    末尾に追加: force_dot_files=YES
    末尾に追加: pasv_address=00.00.00.00(EC2の固定IP)


pasv_min_port=60000
pasv_max_port=61000
cat /proc/sys/net/ipv4/ip_local_port_range した時に
開いてるって言われたポートを指定

force_dot_file — 「.」から始まるファイルを表示する
pasv_addres — PASV接続用に Amazon EC2の固定IPを指定しておく


他にも設定しなくちゃいけないファイルがあるみたい…。
まずは、FTPアクセス禁止ユーザを「ftpusers」に指定する。
とりいそぎ、rootでFTPアクセスできるようにしておきたいので


  1. nanoエディタで「ftpusers」を編集
    # nano /etc/ftpusers
    ↓↓2行目の rootの前に「#」をつける
  2. # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).
    # root
    daemon
    bin
    sys
    sync
    games
    man
    lp
    mail
    news
    uucp
    nobody
  3. 内容を保存して、nanoエディタを終了する
    [ctrl]+x (controlキーと「x」を同時に押す)
    Save modified buffer ?と聞かれたら
    y と打って [Enter]

次に、上位ディレクトリに移動させたくないユーザを「vsftpd.chroot_list」に指定する

  1. nanoエディタで「vsftpd.chroot_list」を編集
    # nano /etc/vsftpd.chroot_list
  2. 空のファイルが開くので何も入力せずに内容を保存して、nanoエディタを終了する
    [ctrl]+x (controlキーと「x」を同時に押す)
    Save modified buffer ?と聞かれたら
    y と打って [Enter]

最後に、FTPアクセスを許可するユーザを「vsftpd.chroot_list」に指定する

  1. nanoエディタで「vsftpd.user_list」を編集
    # nano /etc/vsftpd.user_list
  2. rootユーザのFTPアクセスを許可したいので
    root
  3. 内容を保存して、nanoエディタを終了する
    [ctrl]+x (controlキーと「x」を同時に押す)
    Save modified buffer ?と聞かれたら
    y と打って [Enter]

rootユーザで FTP接続できるか確認する

  1. vsftpd.confを再起動!
    # /etc/init.d/vsftpd restart
  2. 恐る恐るFTP接続...
    # ftp localhost
  3. Name (localhost:root): と言われたので
    # root
  4. 331 Please specify the password. と言われたので
    # rootのパスワード 230 Login successful. と出ればFTPアクセス成功!
  5. 現在地を調べる
    ftp > pwd
    var/www と出ればOK。
  6. 何があるか調べる
    ftp > ls
    index.html が見えればOK。
  7. ftpコマンド終了
    ftp > bye


ヤベー、とうとうEC2でFTPアクセスまで可能にしてしまった!! (◎_◎;)
エンジニアではない、ただのWebデザイナーの私なのに?!


関連エントリー

  1. こんなにスゴイぞ、Amazon EC2
  2. Amazon Web Service、アカウントを取得してみた
  3. Amazon EC2/S3を申し込んでみた
  4. Amazon EC2、X.509証明書を取得してみた
  5. AWS Management Consoleで Key Pairsを取得してみた
  6. Mac OSXでAmazon EC2 Command-Line Toolsを使ってみた
  7. Amazon EC2、インスタンスを立ち上げてみた
  8. Amazon EC2、SSHでログインしてApacheを起動してみた
  9. Amazon EC2、Debianを設定してみた
  10. Amazon EC2、DebianでFTP(vsftpd)設定
  11. Amazon EC2のイメージファイルをS3に保存する
  12. Amazon EC2で固定IPを取得する
  13. Amazon EC2を独自ドメインで使う
  14. Amazon EC2をバーチャルドメインで運用する
  15. Amazon EC2、EBS(Elastic Block Store)を使ってみた
  16. Amazon EBSで Apache2とmysqlを動かしてみた
  17. Amazon CloudFront でちょっぱやを実装してみた
  18. Amazon EC2、AMIを共有する
  19. Amazon EC2上でインスタンスをオートスケールできる「Wakame」
  20. [ 非常事態宣言!!] Amazon EC2、ホームページが消えました
  21. Amazon サポートセンターに連絡を取ってみた
  22. Amazon EC2、SSH(22番ポート)の設定方法はこうすべき!

Amazon EC2、DebianでFTP(vsftpd)設定へのコメント数: 4

  • コメント:t-sato

    私も顧客の依頼でAmazonEC2を検討しています。
    顧客の依頼でFTPを使用しなければいけないのですが、
    EC2でFTPを構築してもインスタンスを停止させたら、
    データは消えてしまうかと思いますが、
    ファイル自体のバックアップはどうしてますか?
    EBSを使用しているとか、定期的にS3にバックアップとか。
    でもそもそもS3をFTP感覚で使用してもいいのでは?
    と最近思ったりしました (^^;

  • コメント:admin

    >t-satoさん
    こんにちは。はじめまして。(^-^)ノ
    ご質問の件ですが、
    DBを含むWebコンテンツのデータはEBSに保存しています。
    もちろん定期的なS3へのバックアップと、
    EBSのスナップショット作成も定期的に実施しています。

    私の認識している限り、
    S3はCNAMEは割当られるけどWebサーバにはならないので…
    「そもそもS3をFTP感覚で使用してもいいのでは?」
    というご意見の真意を理解しかねています。(^-^;)

    以下、ぷち情報ですが
    私の周りのエンジニア達は、EC2上でFTPポートを開放することに
    セキュリティ的にみんな大反対しているので、
    私も今はFTPをやめて、SSH(SFTP)だけにしています。

    そのあたり、私は全然詳しくないのですが…
    ぜひセキュリティのこともお客様とお話し合いいただいた方が
    いいかもしれませんね。

  • コメント:t-sato

    やはりEBSの使用しかないのですねー。
    ご意見有難う御座います。
    FTPって私の経験上、
    レンサバのDocumentRootにHTMLとかのファイルあげたりとか、
    提携している顧客からの何らかのCSVデータだったりとか、
    結局の所、それらってFTPサーバ立てなくてもS3で完結するよねーっていうことで、
    「そもそもS3をFTP感覚で使用してもいいのでは?」
    って思ったりしました。
    あと、S3に画像とかアップした際に、
    画像のURLにアクセスしたら閲覧できると思いますが、
    その時点でれっきとしたwebサーバになってると思うんですよねー。
    ヘッダーもきちんと返してくれますし。
    デフォルトで遅いのがネックですが、
    静的なファイルを置くには良いwebサーバになってくれるかと思いますよ。
    例えば、CNAMEでimage.hogehoge.comとかにして、
    イメージサーバにスケールアウトさせちゃうとか。

  • コメント:admin

    >t-satoさん
    こんにちは。

    そうですねー、おっしゃるとおり
    スタティックなGIF、html、CSVをアップ→閲覧だけで良いのであれば
    S3だけで完結もアリだと思います。(^-^)

    Web制作のお仕事では、ブログや、ネットショップなど
    ダイナミックなWebコンテンツを構築するので、LAMP環境が必須なので、
    私のような業界どっぷり人間は、
    動的に動かせること=Webサーバ(EC2)
    静的なファイル置き場=ファイルサーバ(S3)
    という認識になっちゃうのかな?

    S3は、CloudFrontを活用すると感動を味わえますよ〜。(^-^)
    http://www.studio-fix.com/blog/kaoru/2009/04/13/post166/

コメントを投稿する