centosの下でvsftpdサーバを構築する
10164 ワード
詳細
以前はvsftpdを使ってftpサーバを構築していましたが、今日は整理します.
環境:
CentOS 7.0 64ビットオペレーティングシステム
一.関連パッケージのインストール:
1.Vsftpdサービス関連部品のインストール: yum install vsftpd*は実際に以下のパッケージをインストールします.
2.PAMサービス関連部品のインストールを確認する:yum install pam*は実際に以下のパッケージをインストールする:
3.DB 4部品パッケージのインストール:ここではdb 4のパッケージを特別にインストールし、ファイルデータベースをサポートします. yum install db 4*centos 7利用可能なパッケージがないepelをインストールするソースを提示私のシステムはcentos 7 epel-release-7-5.noarch.rpm以下のパッケージをインストールすることができます
二.必要なシステムアカウントの作成
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注:ここは私の構成の記録です.私は多くの注釈を削除しました.主に閲覧を容易にするために、添付ファイルに自分の詳細な構成ファイルをアップロードします.
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つの文を追加
以上の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
この仮想ユーザー・リスト・ファイルを編集し、ユーザーのユーザー名とパスワード情報を追加します.フォーマットは簡単です.「ユーザー名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この構成では、異なるユーザーのルートディレクトリが配置されます.六、仮想ユーザの構成:1.仮想ユーザテンプレートプロファイルからコピー:vi/etc/vsftpd/vconf/hello
七、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
以前は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を閉じることをお勧めします