Memo/Linux/pure-ftpd

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

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (3d)