Linux構成vsftpdサービス

1.ファイル転送プロトコル

ファイル転送プロトコル(FTP)。FTPクライアントとサーバーがファイルの共有、ファイルのアップロード、ファイルのダウンロードを行うことができます。FTPは、TCP接続情報を制御するために主に使用されるTCPプロトコルに基づいて仮想接続を生成し、同時にFTPデータ送信用に別個のTCP接続を生成します。ユーザーは、クライアントを介してFTPサーバーにファイルをアップロード、ダウンロード、および削除でき、FTPサーバーは複数のユーザーが同時に共有できます。

FTPサービスはクライアント/サーバー(C / S)モードです。FTPプロトコルに基づいてFTPファイルの外部共有および送信を実現するソフトウェアは、FTPサーバーソース側と呼ばれます。クライアントプログラムは、FTPプロトコルに基づいているため、FTPクライアントと呼ばれます。クライアントはFTPサーバーにファイルをアップロードおよびダウンロードできます


2. FTP転送モード

FTPはC / Sモードに基づいています。FTPクライアントとサーバーには2つの転送モードがありますFTPアクティブモード、FTPパッシブモード

  • アクティブモード:FTPサーバーは、クライアントへの接続要求をアクティブに開始します。
  • パッシブモード:FTPサーバーは、クライアントが接続要求を開始するのを待ちます(FTPのデフォルトの動作モード)。
  1. FTPアクティブモード:クライアントは、任意のポートN(N> 1024)からFTPサーバーのポート21コマンドポートに接続し、ポートN + 1でリッスンを開始し、FTPコマンド「ポートN + 1」をFTPサーバーに送信します。 FTPサーバーは、データポート(20)を使用して、クライアントが指定したデータポート(N + 1)に接続します。
  2. FTPパッシブモード:クライアントは任意のポートN(N> 1024)からFTPサーバーのポート21コマンドポートに接続し、クライアントはポートN + 1でリッスンを開始し、クライアントはPASVコマンドを送信し、サーバーは任意のポート( P> 1024)、PORT Pコマンドをクライアントに送信します。クライアントは、ローカルポートN + 1からサーバーのポートPへの接続を開始して、データを送信します。

在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。

三、Vsftpd服务器简介

目前主流的FTP服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、FileZilla Server等软件,其中Unix/Linux使用较为广泛的FTP服务器端软件为Vsftpd 。

非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用等


四、Vsftp安装与配置

检查是否安装:

rpm -qa | grep vsftpd

卸载vsftpd

yum remove vsftpd

安装vsftpd

yum install vsftpd -y

启动

systemctl start vsftpd

重启

systemctl restart vsftpd

查看是否启动

pe -ef | grep vsftpd

安装ftp

yum install ftp -y

配置文件

/etc/vsftpd/vsftpd.conf这个文件是vsftpd服务的核心配置文件!我们在修改配置文件的时候,最好先备份一份!

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vsftpd.conf默认配置文件详解如下:

参数 作用
anonymous_enable=YES 开启匿名用户访问
local_enable=YES 启用本地系统用户访问
write_enable=YES 本地系统用户写入权限
local_umask=022 本地用户创建文件及目录默认权限掩码
dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示
xferlog_enable=YES 启用上传/下载日志记录
connect_from_port_20=YES FTP使用20端口进行数据传输
xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入
listen=NO Vsftpd不以独立的服务启动,通过Xinetd服务管理,建议改成YES
listen_ipv6=YES 启用IPV6监听
pam_service_name = vsftpd FTPサーバーにログインし、/ etc / pam.d / vsftpdの内容に基づいて認証します
userlist_enable = YES Vsftpd.user_listおよびftpusers構成ファイル内のユーザーはFTPへのアクセスが禁止されています
tcp_wrappers = YES ホストアクセス制御用のvsftpdとtcpラッパーの組み合わせを設定します。Vsftpdサーバーは、/ etc / hosts.allowと/etc/hosts.denyの設定をチェックして、接続を要求しているホストがFTPサーバーへのアクセスを許可されているかどうかを判断します

ユーザーアクセスモードの構成

vsftpdは、より安全なファイル転送サービスプログラムであり、3つの認証モードFTPサーバーログインできます

  • 匿名オープンモード:これは最も安全性の低い認証モードであり、誰でもパスワードの検証なしで直接FTPサーバーにログインできます。

  • ローカルユーザーモード:これは、Linuxシステムのローカルアカウントパスワード情報による認証モードであり、匿名オープンモードよりも安全で、設定が簡単です。ただし、アカウント情報がハッカーによってクラックされた場合、FTPサーバーに妨害されずにログインできるため、サーバー全体を完全に制御できます。

  • 仮想ユーザーモード:これらの3つのモードの中で最も安全な認証モードです。FTPサービス用に個別のユーザーデータベースファイルを作成し、パスワード検証に使用するアカウント情報を仮想化する必要がありますが、これらのアカウント情報は実際にはサーバーシステムに存在しませんはい、FTPサービスプログラムによる認証にのみ使用されます。このようにして、ハッカーがアカウント情報をクラックしても、サーバーにログインできないため、被害の範囲と影響を効果的に減らすことができます。

匿名オープンモード

匿名ユーザーに開くことができるアクセス許可パラメーターと機能

パラメータ 効果
anonymous_enable = YES 匿名アクセスモードを許可する
anon_umask = 022 匿名ユーザーがアップロードしたファイルのumask値
anon_upload_enable = YES 匿名ユーザーにファイルのアップロードを許可する
anon_mkdir_write_enable = YES 匿名ユーザーにディレクトリの作成を許可する
anon_other_write_enable = YES 匿名ユーザーにディレクトリ名の変更またはディレクトリの削除を許可する

構成ファイルを変更する

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES           #允许匿名访问模式
anon_umask=022                 #匿名用户上传文件的 umask 值
anon_upload_enable=YES         #允许匿名用户上传文件
anon_mkdir_write_enable=YES    #允许匿名用户创建目录
anon_other_write_enable=YES    #允许匿名用户修改目录名称或删除目录


local_enable=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
tcp_wrappers=YES

デフォルトのVsftpd匿名ユーザーは2つあります:匿名とftpです。匿名ユーザーがファイルのアップロード、削除と変更の権限を必要とする場合、/ var / ftp / pubディレクトリへの書き込み権限を持っている必要があります。次のchownとchmodのいずれかを使用します。入力するだけで、設定コマンドは次のようになります。

chown -Rf ftp /var/ftp/pub

chmod o+w var/ftp/pub/

エラーが報告された場合、通常はSELinuxまたはファイアウォールの問題が原因です。

FTPに関連するSELinuxドメインポリシーを表示するためのgetseboolコマンド:

getsebool -a | grep ftp

ポリシールールを変更します。

setsebool -P ftpd_full_access=on

ローカルユーザーモード

ローカルユーザーモードで使用される認証パラメーターと機能

パラメータ 効果
anonymous_enable = NO 匿名アクセスモードを禁止する
local_enable = YES ローカルユーザーモードを許可する
write_enable = YES 書き込み可能なアクセス許可を設定する
local_umask = 022 「禁止ユーザーリスト」を有効にします。リストファイルはftpusersとuser_listです。
userlist_enable = YES 匿名ユーザーにディレクトリ名の変更またはディレクトリの削除を許可する
userlist_deny = YES ユーザーロールリストファイル機能を有効にする

パスワードが「123456」のテストユーザーuser1およびuser2を作成します。

useradd user1
useradd user2

--stdin:从标准输入接收用户密码
echo 123456 | passwd --stdin user1
echo 123456 | passwd --stdin user2

構成ファイルを変更する

vim /etc/vsftpd/vsftpd.conf 


anonymous_enable=NO      #禁止匿名访问模式
local_enable=YES         #允许本地用户模式
write_enable=YES         #设置可写权限
local_umask=022          #本地用户模式创建文件的 umask 值

userlist_enable=YES
userlist_deny=NO

dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
tcp_wrappers=YES

/ etc / vsftpdディレクトリに2つのファイルがあります
  • ftpusersは設定項目の影響を受けません。常に有効であり、ブラックリストです。ファイルは、FTPへのアクセスが禁止されているユーザーのリストとして保存されます。通常、セキュリティ上の理由から、管理者はFTPへのログインに過度の権限(rootなど)を持つ一部のアカウントを望まないため、このアカウントを介してFTPから危険な場所をアップロードまたはダウンロードしないようにしますシステム上のファイルは、システムに損傷を与えます。
  • User_listは、vsftpd.confのuserlist_enableおよびuserlist_deny構成アイテムと密接に関連しています。これは、有効または無効にすることができます。有効な場合、ブラックリストまたはホワイトリストになります。

userlist_enable = YESの場合、userlist_denyアイテムの構成は有効であり、user_listファイルが使用されます。NOの場合、userlist_denyアイテムの値が何であっても無効です。

userlist_enable = YESおよびuserlist_deny = YESの場合、user_listはブラックリストであり、リストに表示されているすべてのユーザーはログインを拒否されます。

userlist_enable = YESおよびuserlist_deny = NOの場合:user_listはホワイトリストであり、リストに表示されているユーザーのみがログインを許可されます(user_list以外のユーザーはログインを拒否されます)。リストの後、匿名ユーザーはログインできなくなります!user_list:anonymousに明示的に行を追加しない限り

リストを見る

cat /etc/vsftpd/user_list

ユーザーをホワイトリストに追加

vim /etc/vsftpd/user_list
user1
user2

SELinuxドメインでFTPサービスの許可ポリシーを再度オンにする必要があります

setsebool -P ftpd_full_access=on

仮想ユーザーモード

  1. 仮想FTPユーザーアカウントを作成する
useradd -s /sbin/nologin vu
  1. 仮想ユーザーファイルを作成する
    基数行はユーザー名を表し、偶数行はパスワードを表します
cd /etc/vsftpd/
vim user
user1
123456
user2
123456
  1. db_loadツールを使用してBerkeley DB形式でデータベースファイルを作成する
db_load -T -t hash -f user user.db

-f 指定数据原文件
-T 允许非Berkeley DB的应用程序使用文本格式转换的DB数据文件
-t hash   读取文件的基本方法
  1. 仮想ユーザーをサポートするPAM認証ファイルを確立する
 vim /etc/pam.d/vsftpd.vu
 加入以下两行

auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/user

对应刚才生成user.db的文件
  1. 認証にPAMファイルを使用する場合構成ファイルのパラメーターと機能を変更
    します。
パラメータ 効果
anonymous_enable = NO 匿名アクセスモードを禁止する
local_enable = YES ローカルユーザーモードを許可する
guest_enable = YES 仮想ユーザーモードを有効にする
guest_username = virtual 仮想ユーザーアカウントを指定する
pam_service_name = vsftpd.vu PAMファイルを指定
allow_writeable_chroot = YES 監禁されたFTPルートディレクトリへの書き込み操作を許可し、ユーザーログイン要求を拒否しません
vim /etc/vsftpd/vsftpd.conf


anonymous_enable=NO 
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES


write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES 
xferlog_std_format=YES 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd.vu
userlist_enable=YES 
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/user_dir
  1. ユーザー用の独立した構成ディレクトリとファイルを作成する
mkdir /etc/vsftpd/user_dir
cd /etc/vsftpd/user_dir
vim user

local_root=/etc/vsftpd/data                      
虚拟用户数据的存放路径

仮想ユーザーデータストレージディレクトリを作成する

cd /etc/vsftpd
mkdir data
chmod 777 data/

サービスを再開

systemctl restart vsftpd

5つの詳細な構成ファイル

一般的に使用される匿名FTP構成項目

anonymous_enable=YES                    # 是否允许匿名用户访问
anon_umask=022                          # 匿名用户所上传文件的权限掩码
anon_root=/var/ftp                      # 设置匿名用户的FTP根目录
anon_upload_enable=YES                  # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES             # 是否允许匿名用户允许创建目录
anon_other_write_enable=YES             # 是否允许匿名用户有其他写入权(改名,删除,覆盖)
anon_max_rate=0                         # 限制最大传输速率(字节/秒)0为无限制

一般的に使用されるローカルユーザーのFTP構成項目

local_enable=YES                             # 是否允许本地系统用户访问
local_umask=022                              # 本地用户所上传文件的权限掩码
local_root=/var/ftp                          # 设置本地用户的FTP根目录
chroot_list_enable=YES                       # 表示是否开启chroot的环境,默认没有开启
chroot_list_file=/etc/vsftpd/chroot_list     # 表示写在/etc/vsftpd/chroot_list文件里面的用户是不可以出chroot环境的。默认是可以的。
Chroot_local_user=YES                        # 表示所有写在/etc/vsftpd/chroot_list文件里面的用户是可以出chroot环境的,和上面的相反。
local_max_rate=0                             # 限制最大传输速率(字节/秒)0为无限制

一般的に使用されるグローバル構成アイテム

listen=YES                             # 是否以独立运行的方式监听服务
listen_address=192.168.4.1             # 设置监听FTP服务的IP地址
listen_port=21                         # 设置监听FTP服务的端口号
write_enable=YES                       # 是否启用写入权限(上传,删除文件)
download_enable=YES                   # 是否允许下载文件
dirmessage_enable=YES                  # 用户切换进入目录时显示.message文件
xferlog_enable=YES                     # 启用日志文件,记录到/var/log/xferlog
xferlog_std_format=YES                 # 启用标准的xferlog日志格式,禁用此项将使用vsftpd自己的格式
connect_from_port_20=YES               # 允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES                        # 允许服务器被动模式
pasv_max_port=24600                    # 设置被动模式服务器的最大端口号
pasv_min_port=24500                    # 设置被动模式服务器的最小端口号
pam_service_name=vsftpd                # 用户认证的PAM文件位置(/etc/pam.d/vsftpd.vu)
userlist_enable=YES                    # 是否启用user_list列表文件
userlist_deny=YES                      # 是否禁用user_list中的用户
max_clients=0                          # 限制并发客户端连接数
max_per_ip=0                           # 限制同一IP地址的并发连接数
tcp_wrappers=YES                       # 是否启用tcp_wrappers主机访问控制
chown_username=root                    # 表示匿名用户上传的文件的拥有人是root,默认关闭
ascii_upload_enable=YES                # 表示是否允许用户可以上传一个二进制文件,默认是不允许的 
ascii_download_enable=YES              # 这个是代表是否允许用户可以下载一个二进制文件,默认是不允许的
nopriv_user=vsftpd                     # 设置支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户
async_abor_enable=YES                  # 设定支持异步传输功能
ftpd_banner=Welcome to FTP             # 设定Vsftpd的登陆标语
guest_enable=YES                   # 设置启用虚拟用户功能
guest_username=ftpuser               # 指定虚拟用户的宿主用户
virtual_use_local_privs=YES       # 设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf    # 设定虚拟用户个人Vsftp的配置文件存放路径

おすすめ

転載: blog.csdn.net/w918589859/article/details/108705393