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 を使用してフロントエンドのカラーピッカーを実装する方法

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

推薦する

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

Vueフィルターの詳細な説明

<本文> <div id="ルート"> <h2&...

MySQLパスワードを忘れた場合のいくつかの解決策

解決策1完全にアンインストールしてすべてのデータを削除します。まず、MySQLに関連するすべてのプロ...

Windows (コミュニティ エディション) に MySQL 8.0.18 をインストールするためのチュートリアル

この記事では、Windows で MySQL をインストールする方法について簡単に説明します。他にご...

WeChatミニプログラムのすべてのページがログインされていることを確認する方法

目次現状解決さらなる解決策やっと現状WeChat ミニプログラムには、ホームページ、個人ページ、いく...

Webデザインチュートリアル(8):Webページの階層と空間デザイン

<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...

史上最もクリエイティブな404ページのデザインは、ウェブサイトのユーザーエクスペリエンスを効果的に向上させます

ウェブを閲覧しているときに 404 ページに遭遇することはあまりないので、見落としがちです。しかし、...

CSS3 rgb と rgba (透明色) の使い方の詳しい説明

誰もが色にとても敏感だと思います。私たちの目が見るところにはどこにでも色があります。では、CSS で...

VUEの基本を理解するのに役立つ記事

目次VUEとはVueのコアプラグインVueルーターヴュークスアクシオス要素UI Vue フロントエン...

Dockerイメージ内のファイルを表示する方法

Dockerイメージ内のファイルを表示する方法1. すでに実行中の場合すでに実行中のイメージについて...

React useEffect の理解と使用

目次繰り返しレンダリングループを避ける副作用の除去についてReact16.8 の新しい useEff...

JavaScript クロージャの説明

目次1. クロージャとは何ですか? 1.2 クロージャのメモ化: 関数は定義された環境を記憶する1....

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

TCP 3 回目のハンドシェイク データ転送プロセス図

RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...

Flask アプリケーションの Docker デプロイ実装手順

1. 目的Flask アプリケーションをローカルで作成し、Docker でパッケージ化し、独自のサー...