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

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

推薦する

jQuery+swiper コンポーネントはタイムラインのスライド年タブ切り替え効果を実現します

結果: 実装コード: スワイパーコンポーネントと一緒に使用する必要がありますSwiper 基本デモア...

スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作

Dockerfileの作成yumソースを設定する cd /tmp/docker vim Docker...

MySQLメモリストレージエンジンに関する知識

メモリストレージエンジンに関する知識ポイントメモリ ストレージ エンジンは日常業務ではほとんど使用さ...

Centos7 に Nginx 統合 Lua サンプル コードをインストール

序文私が使用しているパソコンはMacで、OSはmacOS Mojaveです。コンピュータに仮想マシン...

Linux 向けの強化されたスクリーンショットと共有ツール: ScreenCloud

ScreenCloud は、必要だとは思わなかった素晴らしい小さなアプリです。デスクトップ Lin...

impress.js プレゼンテーション層フレームワーク (デモツール) - 初めての体験

半年もブログを書いていなかったので、少し恥ずかしいです... 正月休みは、Dota をプレイしたり ...

CSS 垂直センタリングの代替実装コードの詳細な説明(非従来型)

序文ご存知のとおり、「CSS で要素を垂直方向に中央揃えするにはどうすればよいか」という質問は、すで...

JS はシンプルなブロック崩しピンボールゲームを実装します

この記事では、ブロック崩しピンボールゲームを実装するためのJSの具体的なコードを参考までに紹介します...

CSS 兄弟要素フローティング分析の概要

float:左/右/なし; 1. 同じレベルフローティング(1)ブロックレベル要素を同じ行に表示する...

モバイル アプリのユーザー インターフェース設計に関する 10 のヒント

ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...

HTML で入力ボックスに純粋な数字のみを入力するように制限する方法

inputボックスを純粋な数字のみに制限する1、onkeyup = "value=valu...

Vue ドラッグ アンド ドロップのシンプルな実装

この記事では、主に次のような Vue ドラッグ アンド ドロップの簡単な実装を紹介します。レンダリン...

2時間のDocker入門チュートリアル

目次1.0 はじめに2.0 Dockerのインストール3.0基本的なDockerコマンド4.0 Do...

CSSの複数条件の書き方の詳細説明:

:not疑似クラスセレクターは、式に一致しない要素をフィルタリングできます。例 テーブル tbod...

MySQL 5.7 でルートパスワードを変更する方法

MySQL 5.7 以降では、多くのセキュリティ更新が追加されました。旧バージョンのユーザーは慣れて...