centosの下でvsftpdサーバを構築する

10164 ワード

詳細
以前はvsftpdを使ってftpサーバを構築していましたが、今日は整理します.
環境:
CentOS 7.0   64ビットオペレーティングシステム
一.関連パッケージのインストール:
1.Vsftpdサービス関連部品のインストール: yum install vsftpd*は実際に以下のパッケージをインストールします. 
vsftpd                  x86_64         3.0.2-9.el7          base         165 k
vsftpd-sysvinit         x86_64         3.0.2-9.el7          base          21 k

 2.PAMサービス関連部品のインストールを確認する:yum install pam*は実際に以下のパッケージをインストールする:
 Installing:
 pam-devel                 x86_64        1.1.8-9.el7          base        182 k
 pam_krb5                  x86_64        2.4.8-4.el7          base        158 k
 pam_pkcs11                x86_64        0.6.2-17.el7         base        208 k
 pam_snapper               x86_64        0.1.7-6.el7          base         18 k
 pam_ssh_agent_auth        x86_64        0.9.3-8.8.el7        base        116 k
 Installing for dependencies:
 boost-system              x86_64        1.53.0-18.el7        base         38 k
 boost-thread              x86_64        1.53.0-18.el7        base         56 k
 pcsc-lite-libs            x86_64        1.8.8-4.el7          base         34 k
 snapper                   x86_64        0.1.7-6.el7          base        196 k
 snapper-libs              x86_64        0.1.7-6.el7          base        215 k

 3.DB 4部品パッケージのインストール:ここではdb 4のパッケージを特別にインストールし、ファイルデータベースをサポートします. yum install db 4*centos 7利用可能なパッケージがないepelをインストールするソースを提示私のシステムはcentos 7 epel-release-7-5.noarch.rpm以下のパッケージをインストールすることができます 
 libdb4                    x86_64       4.8.30-13.el7          epel       607 k
 libdb4-cxx                x86_64       4.8.30-13.el7          epel       635 k
 libdb4-cxx-devel          x86_64       4.8.30-13.el7          epel        15 k
 libdb4-devel              x86_64       4.8.30-13.el7          epel        32 k
 libdb4-devel-static       x86_64       4.8.30-13.el7          epel       2.6 M
 libdb4-doc                noarch       4.8.30-13.el7          epel        12 M
 libdb4-java               x86_64       4.8.30-13.el7          epel       1.1 M
 libdb4-java-devel         x86_64       4.8.30-13.el7          epel       5.0 k
 libdb4-tcl                x86_64       4.8.30-13.el7          epel       671 k
 libdb4-tcl-devel          x86_64       4.8.30-13.el7          epel       5.0 k
 libdb4-utils              x86_64       4.8.30-13.el7          epel       134 k

 
 
二.必要なシステムアカウントの作成
 
1.vsftpdサービスを確立するホストユーザー:useradd vsftpd-s/sbin/nologinデフォルトのvsftpdのサービスホストユーザーはrootですが、rootユーザー権限が大きすぎて安全ではありません.ここではvsftpdという名前のユーザを確立し,vsftpdをサポートするサービスホストユーザとして用いる.このユーザはvsftpdサービス用のみをサポートするために使用されるため、システムへのログインを許可する必要はなく、システムにログインできないユーザとして設定される.2.vsftpd仮想ホストユーザーの確立:本編では主にVsftpの仮想ユーザーを紹介し、仮想ユーザーはシステムユーザーではなく、つまりこれらのFTPのユーザーはシステム中に存在しない.彼らの全体的な権限は、システム内のあるユーザに集中して託されている.いわゆるvsftpdの仮想ホストユーザは、すべての仮想ユーザをサポートするホストユーザである.彼はFTPのすべての仮想的なユーザーをサポートしているので、彼自身の権限はこれらの仮想的なユーザーに影響を与えるので、安全性の考慮にあっても、そのユーザーに対する権限の制御に注意しなければならず、そのユーザーも絶対にシステムにログインする必要はなく、ここでも彼をシステムにログインできないユーザーに設定する.これはvsftpdをホストユーザーとして使用しています.
 
三.配置
1.vsftpdの構成
構成前にcp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf.bakvi/etc/vsftpd/vsftpd.conf注:ここは私の構成の記録です.私は多くの注釈を削除しました.主に閲覧を容易にするために、添付ファイルに自分の詳細な構成ファイルをアップロードします.
anonymous_enable=NO
#         
local_enable=YES
#          。  :          ,        NO             。
write_enable=YES
#         。
local_umask=022
#            。
anon_upload_enable=NO
#        。
anon_mkdir_write_enable=NO
#          。
dirmessage_enable=YES
#          。
xferlog_enable=YES
#          。
connect_from_port_20=YES
#    20      。
chown_uploads=NO
#            。
xferlog_file=/var/log/vsftpd.log
#  Vsftpd         。  ,        。     touch  ,         Vsftpd             Vsftpd。                 ,         。
xferlog_std_format=YES
#             。
#idle_session_timeout=600
#          ,      。                 ,         ,          600,   。
#data_connection_timeout=120
#            ,      。                 ,         ,          120,   。
nopriv_user=vsftpd
#    Vsftpd             Vsftpd  。  ,           ,                        。                   。
async_abor_enable=YES
#          。
ascii_upload_enable=YES
ascii_download_enable=YES
#    ASCII          。
ftpd_banner=This Vsftp server supports virtual users ^_^
#  Vsftpd     。
#chroot_list_enable=YES
chroot_list_enable=NO
#         FTP   。/       /etc/vsftpd/chroot_list               
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
ls_recurse_enable=NO
#      FTP   "ls -R"   。                。       ,                         。
listen=YES
#   Vsftpd     StandAlone   。        ,  StandAlone                  , ps -A          vsftpd      。       StandAlone   ,     SuperDaemon  ,      vsftpd          ,         Xinetd    ,    ,Vsftp             。             
pam_service_name=vsftpd
#  PAM   Vsftpd        。  ,PAM     /etc/pam.d/  vsftpd    。
userlist_enable=YES
#  userlist_file         FTP。
tcp_wrappers=YES
#    TCP Wrappers。#KC: The following entries are added for supporting virtual ftp users.       Vsftpd             。  Vsftpd.conf          ,
#          。
guest_enable=YES
#          。
guest_username=vsftpd
#           。
virtual_use_local_privs=YES
#                  。
user_config_dir=/etc/vsftpd/vconf
#        Vsftp         。    ,         ,     Vsftp           ,                            。                                                     。
pasv_max_port=6666
pasv_min_port=5555
allow_writeable_chroot=YES

 
2.ファイアウォールの構成21ポート/etc/init.d/iptables stopitables-I INPUT-p tcp--dport 5555:6666-j ACCEPT/etc/init.d/iptables save/etc/init.d/iptables start 3.pam構成前バックアップの構成:cp/etc/pam.d/vsftpd/etc/pam.d/vsftpd.bak
vi/etc/pam.d/vsftpd 64ビットシステム次の2つの文を追加
auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers

 以上の2つは手動で追加され、仮想ユーザーのセキュリティとアカウント権限を検証します.ここでauthとは,ユーザのユーザ名パスワードを検証することである.ここでaccoutとは、ユーザーのアカウントにどのような権限があるか、どのような制限があるかを検証することです.その後のsufficientは十分な条件を示し,すなわち,ここで検証に合格すれば,次の残りの検証手順を経なくてもよい.逆に、合格しなければ、sufficientの失敗は検証全体の失敗を決定しないため、ユーザーが残りの検証監査を経験しなければならないことを意味します.さらに後ろの/lib/security/pam_userdb.soは、このレビューがpam_を呼び出すことを示します.userdb.soというライブラリ関数で行います.最後のdb=/etc/vsftpd/virtusersでは、検証ライブラリ関数が指定したデータベースにデータを呼び出して検証することを指定します.4.その他の構成は、Vsftpdのログファイルを作成し、その所有者がVsftpdのサービスホストユーザーである. touch/var/log/vsftpd.log chown vsftpd.vsftpd/var/log/vsftpd.log仮想ユーザプロファイル格納パスを確立します.各仮想ユーザは指定したプロファイルを持って制御できます. mkdir/etc/vsftpd/vconf/4、仮想ユーザーデータベースファイルを作成する1.仮想ユーザーリストファイルを先に作成する: touch/etc/vsftpd/virtusersは、vsftpd仮想ユーザのユーザー名とパスワードを記録するためのデータファイルである仮想ユーザリストファイルを構築しました.ここでvirtusersと名付けます.ファイルの混乱を避けるために、私はこのリストファイルを/etc/vsftpd/の下に置きました.2.仮想ユーザーリストファイルの編集:vi/etc/vsftpd/virtusers
hello
123456
nihao
123456
yes
123456

 この仮想ユーザー・リスト・ファイルを編集し、ユーザーのユーザー名とパスワード情報を追加します.フォーマットは簡単です.「ユーザー名1行、パスワード1行」です.3.仮想ユーザデータファイルの生成:db_load-T-t hash-f/etc/vsftpd/virtusers/etc/vsftpd/virtusers.db 4.生成された仮想ユーザデータファイルを参照 ll/etc/vsftpd/virtusers.db-rw-r--r--1 root root 12288 Sep 16 03:51/etc/vsftpd/virtusers.db特に注意しなければならないのは、後で仮想ユーザーを追加する場合、「1行のユーザー名、1行のパスワード」のフォーマットで新しいユーザー名とパスワードを仮想ユーザーリストファイルに追加するだけです.しかし、それだけでは足りないので、効果はありませんよ.「db_load-T-t hash-f仮想ユーザリストファイル仮想ユーザデータベースファイル.db」のコマンドをもう一度実行して有効にします.五、仮想ユーザーの配置1.仮想ユーザーのメインパスを計画する: mkdir/opt/vsftp/2.テストユーザのFTPユーザディレクトリを作成する: mkdir-p/opt/vsftp/{hello,nihao,yes}3.仮想ユーザのホームディレクトリの所有者を仮想ホストユーザに変更する:ftp起動前にvsftpdのルートディレクトリの所有者を仮想ユーザのホームディレクトリに許可し、ここでvsftpdに許可する chown -R vsftpd.vsftpd/opt/vsftp/  認証が完了したら、以下のll/opt/vsftp/4をチェックして仮想ユーザプロファイルを作成します.仮想ユーザはログイン時にvsftpdのプロファイルから仮想ユーザのプロファイルディレクトリを見つけ、そのディレクトリから対応するユーザのプロファイルを読み出します.以下はテンプレートです.
local_root=/opt/vsftp/virtualuser
#            。
anonymous_enable=NO
#           。
write_enable=YES
#       。
local_umask=022
#          。
anon_upload_enable=NO
#           。
anon_mkdir_write_enable=NO
#             。
idle_session_timeout=600
#          。
data_connection_timeout=120
#            。
max_clients=10
#           。
max_per_ip=5
#             ,         Flashget、          。
local_max_rate=50000
#            ,  b/s。

 仮想ユーザーの構成は、異なるユーザーに対するニーズまたは制限をカスタマイズするために使用されます.ここで重要なのはlocal_です.rootこの構成では、異なるユーザーのルートディレクトリが配置されます.六、仮想ユーザの構成:1.仮想ユーザテンプレートプロファイルからコピー:vi/etc/vsftpd/vconf/hello
local_root=/opt/vsftp/hello
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=300
data_connection_timeout=90
max_clients=1
max_per_ip=1
local_max_rate=25000

 七、ftpサービスが正常かどうかを起動してテストする:service vsftpd start 1.仮想ユーザーディレクトリにファイルを予め入れる:ll>/opt/vsftp/hello/test.txt 2.他のマシンからクライアントとしてFTPにログインする:lsリストディレクトリを実行cd切替ディレクトリを実行する肝心なのはchrootが有効かどうかを検査することである8、発生する可能性のある問題1、ファイアウォールルールを追加するには21ポートを開きます.そうしないと、ルーティングルール2がなく、ユーザー名パスワードが入力されていないことを示すメッセージが表示されます.すべて正常ですが、ftpコマンドラインのlsに入ると、エラーが表示されます.ftp:connect:No route to host nf_nat_ftp nf_conntrack_ftpの2つのコアモジュールはロードされていません
解決策
修正/etc/sysconfig/iptables-config、IPTABLESを追加MODULES=「nf_nat_ftp nf_conntrack_ftp」iptablesを再起動すればOKです.無効な場合は、対応するカーネル内のftpに関連するモジュール名をmodprobe-l|grep ftpで参照してください.3、500 OOPS:vsftpd:refusing to run with writable root inside chroot()この問題はchrootに関する問題解決策プロファイル追加allow_writeable_chroot=YES
4、selinuxがおかしい
selinuxを閉じることをお勧めします
  • vsftpd.conf.tar.gz (2.7 KB)
  • ダウンロード回数:5