Memo/Linux/pure-ftpd

http://dexlab.net/pukiwiki/index.php?Memo/Linux/pure-ftpd
 

pure-ftpd

オープンソースのFTPサーバソフト

  • http://www.pureftpd.org/project/pure-ftpd
    • BSDライセンス
    • セキュリティ第一
    • 設定が割と簡単
    • 文字コード変換機能(ローカルがUTF-8, FTPがSJIS-WINなど)
    • アップロードファイルのチェックスクリプト対応(clamavでスキャンするなど)
    • ユーザ毎に使用容量制限(QUOTA)機能
    • 仮想ユーザDBで/etc/passwd等を汚さない、FTP専用ユーザを作成できる
    • 32bit OSでファイルサイズ2GB以上対応
    • バーチャルホスト、バーチャルchroot
    • TLS対応
    • 帯域制限

インストール

  • CentOS 5.x i386にインストールする場合
    • ローカルファイルシステム:UTF-8
    • FTPクライアント:SJIS-WIN
    • 設定ファイル類:UTF-8
  • configure オプションはREADME参考。もしくは、以下コマンドで確認
    1. ./configure --help
  • 文字コードはiconvを使っているので、以下で確認
    1. iconv -l
  • rpmを作ってインストール
    1. cd /usr/src/redhat/
    2. wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.gz
    3. tar xvfz pure-ftpd-1.0.36.tar.gz
    4.  
    5. mv pure-ftpd-1.0.36.tar.gz SOURCES/
    6. cp pure-ftpd-1.0.36/pure-ftpd.spec.in SPECS/pure-ftpd.spec
    7. vi SPECS/pure-ftpd.spec
    8. ----
    9. %define version    1.0.36
    10. %define con_altlog 1
    11. %define con_cookie 1
    12. %define con_diraliases 1
    13. %define con_extauth 1
    14. %define con_ftpwho 1
    15. %define con_largefile 1
    16. %define con_pam    1
    17. %define con_peruserlimits 1
    18. %define con_puredb 1
    19. %define con_quotas 1
    20. %define con_ratios 1
    21. %define con_rfc2640 1
    22. %define con_throttling 1
    23. %define con_tls 1
    24. %define con_uploadscript 1
    25. %define con_virtualchroot 1
    26. %define con_virtualhosts 1
    27. ----
    28.  
    29. rpmbuild -ba SPECS/pure-ftpd.spec
    30.  
    31. rpm -ivh RPMS/i386/pure-ftpd-1.0.36-1.tls.i386.rpm
    32.  
    33. rm -rf pure-ftpd-1.0.36
    34. chkconfig --add pure-ftpd
  • ソースからインストール
    1. cd /usr/local/src
    2. wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.35.tar.bz2
    3. tar jxvf pure-ftpd-1.0.35.tar.bz2
    4. cd pure-ftpd-1.0.35
    5.  
    6. ./configure \
    7. --with-altlog \
    8. --with-cookie \
    9. --with-diraliases \
    10. --with-everything \
    11. --with-extauth \
    12. --with-ftpwho \
    13. --with-largefile \
    14. --with-pam \
    15. --with-peruserlimits \
    16. --with-privsep \
    17. --with-puredb \
    18. --with-quotas \
    19. --with-ratios \
    20. --with-rfc2640 \
    21. --with-throttling \
    22. --with-tls \
    23. --with-uploadscript \
    24. --with-virtualchroot \
    25. --with-virtualhosts \
    26. --with-welcomemsg \
    27.  
    28. make
    29. make install
    30.  
    31. cp contrib/redhat.init /etc/init.d/pure-ftpd
    32. chmod 755 /etc/init.d/pure-ftpd
    33. chkconfig --add pure-ftpd
    34.  
    35. cp configuration-file/pure-ftpd.conf /etc
    36. cp configuration-file/pure-config.pl /usr/local/sbin
    37. chmod 755 /usr/local/sbin/pure-config.pl
  • uploadscriptを使うように起動スクリプト修正
    1. --- /etc/rc.d/init.d/pure-ftpd.rpmnew   2012-01-31 10:43:16.000000000 +0900
    2. +++ /etc/rc.d/init.d/pure-ftpd  2010-06-13 22:00:09.000000000 +0900
    3. @@ -15,11 +15,18 @@
    4.  
    5.  # Path to the pure-ftp binaries.
    6.  prog=pure-config.pl
    7. +uprog=pure-uploadscript
    8. +vprog=/usr/local/bin/pure-antivirus.pl
    9.  fullpath=/usr/local/sbin/$prog
    10. +vfullpath=/usr/local/sbin/$uprog
    11.  pureftpwho=/usr/local/sbin/pure-ftpwho
    12.  
    13. -
    14.  start() {
    15. +        echo -n $"Starting $uprog: "
    16. +        $vfullpath -r $vprog 2>&1 >/dev/null &
    17. +        RETVAL=$?
    18. +        echo
    19. +
    20.         echo -n $"Starting $prog: "
    21.         $fullpath /etc/pure-ftpd.conf --daemonize
    22.         RETVAL=$?
    23. @@ -27,6 +34,11 @@
    24.         echo
    25.  }
    26.  stop() {
    27. +        echo -n $"Stopping $uprog: "
    28. +        kill -9 `cat /var/run/pure-uploadscript.pid`
    29. +        RETVAL=$?
    30. +        echo
    31. +
    32.         echo -n $"Stopping $prog: "
    33.         kill $(cat /var/run/pure-ftpd.pid)
    34.         RETVAL=$?
  • 設定ファイル
    1. vi /etc/pure-ftpd.conf
    2. ----
    3. # ファイルシステムの文字コード
    4. FSCharset UTF-8
    5.  
    6. # FTPクライアントの文字コード
    7. ClientCharset   SJIS-WIN
    8.  
    9. # 全員chrootにするか?
    10. ChrootEveryone              no
    11.  
    12. # このグループIDはchroot対象外
    13. TrustedGID                    500
    14. BrokenClientsCompatibility  yes
    15.  
    16. # 最大クライアント数
    17. MaxClientsNumber            10
    18.  
    19. # デーモンで起動するか
    20. Daemonize                   yes
    21.  
    22. # 1IPアドレスあたりの最大接続数
    23. MaxClientsPerIP             4
    24.  
    25. # 詳細ログをとるか?
    26. VerboseLog                  no
    27.  
    28. # .xxxファイルのようなドットから始まるファイルを見せるか?
    29. DisplayDotFiles             yes
    30.  
    31. # Anonymousだけ?
    32. AnonymousOnly               no
    33.  
    34. # Anonymousは拒否するか?
    35. NoAnonymous                 yes
    36. SyslogFacility              ftp
    37.  
    38. # 逆引きをしない?
    39. DontResolve                 yes
    40.  
    41. # 最大アイドルタイム
    42. MaxIdleTime                 5
    43.  
    44. # PureDBを使う
    45. PureDB                        /etc/pureftpd.pdb
    46.  
    47. # 最大表示ファイル数 ディレクトリの深さ
    48. LimitRecursion              2000 8
    49.  
    50. # Anonymousはディレクトリを作れる?
    51. AnonymousCanCreateDirs      no
    52.  
    53. # 最大負荷
    54. MaxLoad                     1
    55.  
    56. # アンチWarez
    57. AntiWarez                   yes
    58. AnonymousBandwidth            1000000
    59. Umask                       133:022
    60.  
    61. # これ以下のユーザIDはログインできない(既存のftpユーザを使うのでその番号以下に指定)
    62. MinUID                      1
    63. AllowUserFXP                no
    64. AllowAnonymousFXP           no
    65.  
    66. # .xxxのようなドットで始まるファイルの書き込み禁止。TrustedGIDは除外
    67. ProhibitDotFilesWrite       no
    68.  
    69. # .xxxのようなドットで始まるファイルの読み込み禁止。TrustedGIDは除外
    70. ProhibitDotFilesRead        no
    71. AutoRename                  no
    72.  
    73. # Anonymousはアップロードできない
    74. AnonymousCantUpload         no
    75. AltLog                     clf:/var/log/pureftpd.log
    76. PIDFile                     /var/run/pure-ftpd.pid
    77. CallUploadScript yes
    78. MaxDiskUsage               99
    79. CustomerProof              yes
    80.  
    81. # SSLの使い方(0:使わない, 1:両方使える, 2:SSLのみ許可)
    82. #TLS                      1
    83. IPV4Only                 yes
    84. ----
  • ログの設定
    1. syslogの設定
    2. # vi /etc/syslog.conf
    3. ----
    4. # ftp
    5. ftp.*    /var/log/pureftpd.log
    6. ----
    7. # service syslog restart
    8.  
    9. ログファイルを分割
    10. # vi /etc/logrotate.d/pureftpd
    11. ----
    12. /var/log/pureftpd.log {
    13.     missingok
    14.     notifempty
    15.     compress
    16. }
    17. ----
  • アップロードされた時に使うスクリプト
    • filepure-antivirus.pl.r34
    • from, toを書き換える事
      1. yum install clamav --enablerepo=rpmforge
      2. freshclam
      3.  
      4. cp pure-antivirus.pl /usr/local/bin/
      5. chown root. /usr/local/bin/pure-antivirus.pl
      6. chmod 755 /usr/local/bin/pure-antivirus.pl
  • 起動
    1. service pure-ftpd restart
  • ユーザの作成
    • 「admin」が管理者
    • 「demo」はダウンロードと「/up」にアップロード可能とする
    • ftp専用のユーザ、グループの確認
      1. more /etc/group | grep ftp
      2. ftp:x:50:
      3. more /etc/passwd | grep ftp
      4. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    • ホームディレクトリ作成
      1. mkdir -p /var/ftp/pub
      2. mkdir -p /var/ftp/up
      3. chown -R admin:admin /var/ftp/pub
      4. chown -R ftp:ftp /var/ftp/up
  • ユーザの追加
    • 全てのファイルシステムへのアクセスを与えるのは"-D"。chrootは"-d"。"-y"は同時接続数。0で無制限。mkdbで設定をDBに反映
      1. pure-pw useradd admin -m -u admin -y 0 -D /home/admin
      2. pure-pw useradd demo -m -u ftp -y 4 -d /var/ftp
      3. pure-pw mkdb
    • ユーザの情報表示
      1. pure-pw show admin
    • ユーザ一覧
      1. pure-pw list
    • ユーザの情報変更
      1. pure-pw usermod admin -y 0
    • ユーザの削除
      1. pure-pw userdel admin
    • ユーザのパスワード変更
      1. pure-pw passwd admin
    • ユーザーDBに登録
      1. pure-pw mkdb
    • 変更と同時に、DBに登録は"-m"オプション
      1. pure-pw passwd admin -m
  • ひとことメッセージ追加
    1. touch "#000 -----------------------------------------------------------------"
    2. touch "#001 pub はダウンロードのみ可能です"
    3. touch "#002 up はアップロード可能です"
    4. touch "#999 -----------------------------------------------------------------"

添付ファイル: filepure-antivirus.pl.r34 728件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-05-04 (月) 00:46:49 (1172d)