CentOS8でvsftpdをソースからインストールしてログを日本語対応にする

vsftpdは日本語のログ出力に対応していません。調べてみるとソースを1行変えるだけでひとまず出力されるようになるとのことなので、やってみることにしました。少し躓いたので、メモとして残しておきます

 

環境

CentOS 8.1(x64)
vstpfd 3.0.3

 

インストール
関連パッケージのインストール

 

ダウンロード

公式サイトでURLを確認してダウンロード。この記事ではver 3.0.3を使いました

 

SSL対応にする

SSLに対応する場合はビルドの設定を変更します

 

5行目を#undefから#defineに変更します

この記事ではTCPWrapperは使いません

 

ログを日本語対応にする

logging.cファイルを修正します

 

171行目付近のこの行を削除なりコメントアウトなりします

 

make

 

makeエラー1

こんなエラーは、/usr/lib64にlibcap.soが見つからない場合におきます。libcapをインストールしていても、今のバージョンのlibcapはファイル名がlibcap.soから変わってしまっています

 

./vsf_findlibs.shを書き換えるか、シンボリックリンクを貼ることで解決します。今回は後者の手段を取ります。まずライブラリフォルダを確認します

 

libcap.soがなく、libcap.so.2.xxのようなファイルがあったらシンボリックリンクを貼ります

libcap.soとlibcap.so.2.xxを紐づけます

 

確認。再度makeします

 

makeエラー2

 

このようなエラーが出る場合は、Makefileを少し編集します

 

13行目に-lcryptoと-lsslを追記します

 

makeエラー3

make install時に

/usr/share/man/man5/
/usr/share/man/man8/

のディレクトリがないと怒られたら作ってからやりなおします(投げやり)

 

設定
vsftpd.confの編集

適宜設定します

 

私の設定の一部。 ssl_tlsv1_1 ~ ssl_tlsv1_3 のオプションがあるようですが、使えませんでした

CentOS8のopensslパッケージは1.1.1以上なのもあり、この設定でもTLS1.2、TLS1.3で動作します(クライアント次第)

起動できない、ログインできない場合は seccomp_sandbox=NO の1行を追加します。vsftpdのseccompオプションは、最新のカーネルバージョン(3.5以上?)でftpコマンドを処理できない原因となるようです

require_ssl_reuse=NO は ssl_reuse に対応してないクライアントから接続したい場合に追加します。クライアントが 522 SSL connection failed; session reuse required のエラーを出して接続できない場合は、追加することで繋がるようになります。例えば、私の場合、Androidの X-plore File Manager が追加しないと接続できませんでした。不要であれば初期値(YES)のままでいいです

 

SSLの確認

CentOS8(opensslが1.1.1以上)ならプロトコルがTLS v1.3になっているはずです

 

サービス化

 

ログ確認

あとは日本語ファイル名のものをやりとりしてログを確認

 

 

コメント

タイトルとURLをコピーしました