vsFTP 3.0.3 のコンパイルとインストールの詳細な分析

vsFTP 3.0.3 のコンパイルとインストールの詳細な分析

脆弱性の詳細

VSFTP は、GPL に基づいてリリースされた Unix ライクなシステムで使用される FTP サーバー ソフトウェアのセットです。このソフトウェアは、仮想ユーザー、2 つの認証方法 (PAP または xinetd/tcp_wrappers)、帯域幅制限などをサポートします。

プログラムが「deny_file」オプションを適切に処理しないため、VSFTP にセキュリティ上の脆弱性が存在します。リモートの攻撃者がこの脆弱性を悪用してアクセス制限を回避する可能性があります。

影響を受ける製品とバージョン: VSFTP 3.0.2 以前のバージョン、OpenSUSE 13.1 および 13.2 バージョン。

影響を受ける製品

VSFTPD VSFTPD 3.0.2

  • FTP にログインするには、一般的に次の 3 つの方法があります。
  • 匿名ユーザー モード: デフォルトのインストールでは、システムは匿名ユーザー アクセスのみを提供します。ログインするには、ユーザー anonymous/ftp を入力し、パスワードとしてメール アドレスを使用するだけです。
  • ローカル ユーザー モード: 認証方法として /etc/passwd 内のユーザー名が使用されます。
  • 仮想ユーザー モード: ユーザー名とパスワードをファイルまたはデータベースに保存し、ログインしたユーザーを指定されたシステム アカウント (/sbin/nologin) にマッピングしてリソースにアクセスできるようにします。これらの仮想ユーザーは FTP ユーザーです。
  • 実験環境: CentOS 7.5 192.168.2.3
  • Firewalld、iptables、SElinuxはすべて無効になっています
  • 次の実験では、PAM に基づく仮想ユーザーを使用します。まず、yum を使用して PAM コンポーネントをインストールする必要があります。
  • epelソースを使用する必要がある
  • yum -y インストール epel-release && yum -y インストール pam pam-devel db4-utils
  • デフォルト設定では、vsftpd は nobody ユーザーを使用する必要があります。
  • 公式サイト https://www.linuxfromscratch.org/blfs/view/svn/server/vsftpd.html からダウンロードしてください。
  • https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz をダウンロードしてください
  • tar xf vsftpd-3.0.3.tar.gz
  • vsftpd-3.0.3/をCDに追加します

  • vsftpdのソースパッケージにはconfigureファイルがないので、直接コンパイルしてインストールします。
  • クリーンにする && -j 4 にする && インストールする
  • コンパイル中にエラーが発生した場合
  • /usr/bin/ld: -lcap が見つかりません
  • .soファイルを見つける
  • 検索 / -name "*libcap.so*"
  • libcap.so.2.22 は、次のディレクトリにあります。
  • libcap.so.2 は、以下のいずれかの形式で保存されます。
  • ln -sv /usr/lib64/libcap.so.2 /usr/lib64/libcap.so

  • デフォルト設定:
  • デフォルト設定:
  • メインプログラムファイル: /usr/local/sbin/vsftpd
  • メイン設定ファイル: /etc/vsfptd.conf
  • PAM 認証ファイル: /etc/pam.d/vsftpd
  • 匿名ユーザーのホームディレクトリ: /var/ftp
  • 匿名ユーザーのダウンロードディレクトリ: /var/ftp/pub
  • vsftpd には 2 つの主要なセキュリティ原則があります。
  • 仮想ユーザーのみログインが許可され、ローカル ユーザーと匿名ユーザーは無効になります。
  • ルート権限で実行することは許可されていません。
  • 設定ファイルを保存するディレクトリを作成する
  • /etc/vsftpd に移動します
  • 新しい設定ファイルを/etc/vsftpdディレクトリにコピーします。

ユーザーと共有ディレクトリとディレクトリ権限を作成する

  • 仮想ユーザーのパスワード用のプレーンテキスト ファイルを作成し、先ほどインストールした db4-utils コンポーネントを使用してパスワード認証ファイルを生成します。
  • vim /etc/vsftpd/access.txt

zhangsan #ユーザー名
123456 #パスワード
リシ
123456 使用回数

  • 先ほどインストールした db4-utils コンポーネントは、パスワード認証ファイルを生成します。
  • db_load -T -t ハッシュ -f /etc/vsftpd/access.txt /etc/vsftpd/access.db

  • vsftpd の PAM 認証ファイルを編集します。
  • vim /etc/pam.d/vsftpd

認証が必要 /lib64/security/pam_userdb.so db=/etc/vsftpd/access
必要なアカウント /lib64/security/pam_userdb.so db=/etc/vsftpd/access

  • メイン設定ファイル /etc/vsftpd/vsftpd.conf を編集します。
  • /etc/vsftpd/vsftpd.conf{,.bak} をコピーします。
  • vim /etc/vsftpd/vsftpd.conf
  • #匿名ユーザーを許可しない
匿名を有効にする=いいえ
ローカル有効=はい
書き込み有効=はい

# ユーザーリストのロックを開始しません。すべてのユーザーがロックされ、親ディレクトリにアクセスできなくなります。ホームディレクトリにのみアクセスできます。chroot_local_user=YES
chroot_list_enable=いいえ

#ログを開始
xferlog_enable=はい
xferlog_std_format=はい
xferlog_file=/etc/vsftpd/vsftpd.log

# 仮想ユーザーを有効にする guest_enable=YES
#システムユーザーに対応するFTP仮想ユーザー guest_username = vsftpd
#PAM 認証ファイル /etc/pam.d/vsftpd
pam_service_name=vsftpd

仮想ローカル権限使用=はい

vsftpdの起動スクリプトを記述します: /etc/init.d/vsftpd

#!/bin/bash
#
# vsftpd このシェルスクリプトは起動と停止を行います
# スタンドアロン vsftpd。
#
# chkconfig: -60 50
# 説明: VsftpdはFTPデーモンであり、プログラムです
# 着信 FTP サービス要求に応答します。
# プロセス名: vsftpd
# 設定: /etc/vsftpd/vsftpd.conf
# ソース関数ライブラリ。
. /etc/rc.d/init.d/functions
# ソースネットワーク構成。
. /etc/sysconfig/ネットワーク
# ネットワークが稼働していることを確認します。
[ ${NETWORKING} = "no" ] && 終了 0
[ -x /usr/local/sbin/vsftpd ] || 終了 0
戻り値=0
プログラム="vsftpd"
始める() {
        # デーモンを起動します。
        [ -d /etc/vsftpd ] の場合;
                `ls /etc/vsftpd/*.conf` の i に対して、
                        サイト=`ベース名 $i .conf`
                        echo -n $"$site の $prog を開始しています: "
                        /usr/local/sbin/vsftpd $i &
                        RETVAL=$?
                        [ $RETVAL -eq 0 ] && {
                           /var/lock/subsys/$prog をタッチします
                           成功 $"$prog $site"
                        }
                        エコー
                終わり
        それ以外
                戻り値=1
        フィ
        $RETVALを返す
}
停止() {
        # デーモンを停止します。
        echo -n $"$prog をシャットダウンしています: "
        プロセス $prog を強制終了する
        RETVAL=$?
        エコー
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        $RETVALを返す
}
# 私たちがどのように呼ばれたか見てみましょう。
ケース「$1」
  始める)
        始める
        ;;
  停止)
        停止
        ;;
  再起動|リロード)
        停止
        始める
        RETVAL=$?
        ;;
  再起動)
        [ -f /var/lock/subsys/$prog ]の場合;
            停止
            始める
            RETVAL=$?
        フィ
        ;;
  状態)
        ステータス $prog
        RETVAL=$?
        ;;
  *)
        echo $"使用法: $0 {start|stop|restart|condrestart|status}"
        出口1
エサック
$RETVALを終了

実行権限を追加する

  • /etc/xinetd.d/vsftpd ファイルを変更して、xinetd デーモンを使用せずに vsftpd を起動します。
  • sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpd
  • sed -in 's/disable.*=.*/disable = yes/g' /etc/xinetd.d/vsftpdn

  • vsftpdを起動する
  • servicevsftpd の開始

ログインテスト

  • マシンを起動してテストを再開する
  • chkconfig vsftpd オン

上記は、vsFTP 3.0.3 のコンパイルとインストールの詳細な内容です。vsFTP 3.0.3 のコンパイルとインストールの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Linux 上で vsftpd サーバーをコンパイルしてインストールする (ローカル ユーザー認証方式)
  • vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)
  • Linux で vsftpd をインストールして設定するための詳細な手順 (推奨)
  • vsftpd 匿名ユーザーのアップロードとダウンロードの設定方法
  • vsftpアップロード553ファイルを作成できませんでしたエラーの解決策

<<:  react-color を使用してフロントエンドのカラーピッカーを実装する方法

>>:  ウェブサイトのビジュアルデザインの重要なポイント

推薦する

Jenkins+Docker継続的インテグレーションの実装

目次1. Jenkinsの紹介2. Jenkinsをインストールしてデプロイする1. 環境情報2. ...

iframeを透明にするパラメータ

<iframe src="./ads_top_tian.html" all...

react-virtualized を使用して、動的な高さを持つ画像の長いリストを実装する

目次開発中に発生した問題解決具体的な実装実績まとめバーチャルリストは、スクロールコンテナ要素の表示領...

プロジェクトに必須の 8 つの JavaScript コード スニペット

目次1. ファイル拡張子を取得する2. コンテンツをクリップボードにコピーする3. スリープ時間は何...

Ubuntu 18.04にPython仮想環境をインストールする

Ubuntu 18.04 を使用する Python 開発者向けの参考資料です。 1. Ubuntu ...

Vue プロジェクトがページング効果を実現

ページング効果は、参考までにvueプロジェクトに実装されています。具体的な内容は次のとおりです。 1...

ウェブ画像形式としてPNG、JPG、GIFを選択して使用する方法

では、GIF、PNG、JPG のどの形式を候補形式として選択すればよいのでしょうか。また、どの画像形...

Windows で MySQL 5.7.17 をインストールし、エンコードを utf8 に設定する方法

ダウンロードMySQL 公式ダウンロード、Windows (x86、64 ビット)、ZIP アーカイ...

MYSQL スロークエリとログ設定とテスト

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

VirtualBox CentOS7.7.1908 Python3.8 ビルド Scrapy 開発環境 [グラフィックチュートリアル]

目次環境CentOSをインストールするyum 国内ミラーソースを構成するサードパーティの依存関係をイ...

マウスオーバーボタンアニメーションを実現する純粋な CSS3 パート 2

前の 2 つの章を終えて、ボタンのフローティング アニメーションについて新たな理解が得られましたか?...

Dockerコンテナのホスト間通信におけるダイレクトルーティングの詳細な説明

概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

MySQLデータベースに他のIPアドレスからアクセスできない問題の解決策

序文先ほどのプロジェクトを参考にすると、環境は整いました。プロジェクトの準備と検証の段階で、問題が発...

Mysql は null 値の first/last メソッドの例を実装します

序文MySQL が SQL SELECT コマンドと WHERE 句を使用してテーブルからデータを読...