linux 安装 vsftpd 服务以及配置全攻略 您所在的位置:网站首页 vsftp配置路径 linux 安装 vsftpd 服务以及配置全攻略

linux 安装 vsftpd 服务以及配置全攻略

2024-06-01 08:52| 来源: 网络整理| 查看: 265

FTP 是 File Transfer Protocol 的简称,用于 Internet 上的控制文件的双向传输。同时,他也是一个应用程序,基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一协议传输文件。在 FTP 的使用当中,用户经常遇到两个概念:上传和下载,下载文件就是从远程主机拷贝文件到自己的计算机上,上传文件是指将自己计算机中的文件拷贝至远程主机上。FTP 常用于开发阶段文件上传工具,常用的客户端软件有 filezilla、flashfxp、winscp、xftp 等

服务端安装

服务端最常用的软件就是 vsftpd,其安装方式也很简单,如下:

yum install vsftpd -y # CentOSapt-get install vsftpd -y # Ubuntu

启动与停止命令如下:

systemctl start vsftpd.service # 启动systemctl stop vsftpd.service # 停止systemctl restart vsftpd.service # 重启

或者:

service vsftpd start # 启动service vsftpd stop # 停止service vsftpd restart # 重启配置配置文件说明

vsftpd 的默认基础配置文件位于 /etc/vsftpd/vsftpd.conf,这个文件是 vsftpd 的核心配置文件,操作修改之前最好先备份,配置文件内容的基础说明:

# 是否允许匿名登录 FTP 服务器,默认设置为 NO 表示允许# 用户可使用用户名 ftp 或 anonymous 进行 ftp 登录,口令为用户的 E-mail 地址。# 如在内网使用不需要登录可设置为 YESanonymous_enable=NO# 是否允许本地用户(即 linux 系统中的用户帐号)登录 FTP 服务器,默认设置为 YES 允许# 本地用户登录后会进入用户主目录,而匿名用户登录后进入匿名用户的下载目录 /var/ftp/pub# 若只允许匿名用户访问,前面加上#注释掉即可阻止本地用户访问 FTP 服务器local_enable=YES# 是否允许本地用户对 FTP 服务器文件具有写权限,默认设置为 YES 允许write_enable=YES # 掩码,本地用户默认掩码为 077# 你可以设置本地用户的文件掩码为缺省 022,也可根据个人喜好将其设置为其他值local_umask=022# 是否允许匿名用户上传文件,须将全局的 write_enable=YES 默认为 NO#anon_upload_enable=YES# 是否允许匿名用户创建新文件夹#anon_mkdir_write_enable=YES # 是否激活目录欢迎信息功能# 当用户用 CMD 模式首次访问服务器上某个目录时,FTP 服务器将显示欢迎信息# 默认情况下,欢迎信息是通过该目录下的 .message 文件获得的# 此文件保存自定义的欢迎信息,由用户自己建立dirmessage_enable=YES# 是否让系统自动维护上传和下载的日志文件# 默认情况该日志文件为 /var/log/vsftpd.log 也可以通过下面的 xferlog_fil e选项对其进行设定xferlog_enable=YES# 是否设定 FTP 服务器将启用 FTP 数据端口的连接请求# ftp-data 数据传输,21 为连接控制端口connect_from_port_20=YES# 设定是否允许改变上传文件的属主,与下面一个设定项配合使用# 注意,不推荐使用 root 用户上传文件#chown_uploads=YES# 设置想要改变的上传文件的属主,如果需要,则输入一个系统用户名# 可以把上传的文件都改成 root 属主。whoever:任何人#chown_username=whoever# 设定系统维护记录 FTP 服务器上传和下载情况的日志文件# /var/log/vsftpd.log 是默认的,也可以修改为其它#xferlog_file=/var/log/vsftpd.log# 是否以标准 xferlog 的格式书写传输日志文件# 默认为 /var/log/xferlog,也可以通过 xferlog_file 选项对其进行设定# 默认值为 YESxferlog_std_format=YES# 设置数据传输中断间隔时间,此语句表示空闲的用户会话中断时间为 600 秒# 即当数据传输结束后,用户连接 FTP 服务器的时间不应超过 600 秒。可以根据实际情况对该值进行修改#idle_session_timeout=600# 设置数据连接超时时间,该语句表示数据连接超时时间为 120 秒,可根据实际情况对其个修改#data_connection_timeout=120# 运行 vsftpd 需要的非特权系统用户,缺省是 nobody#nopriv_user=ftpsecure# 是否识别异步 ABOR 请求。# 如果 FTP client 会下达 “async ABOR” 这个指令时,这个设定才需要启用# 而一般此设定并不安全,所以通常将其注释#async_abor_enable=YES# 是否以 ASCII 方式传输数据。默认情况下,服务器会忽略 ASCII 方式的请求。# 启用此选项将允许服务器以 ASCII 方式传输数据# 不过,这样可能会导致由 "SIZE /big/file" 方式引起的 DoS 攻击#ascii_upload_enable=YES#ascii_download_enable=YES# 登录 FTP 服务器时显示的欢迎信息# 如有需要,可在更改目录欢迎信息的目录下创建名为 .message 的文件,并写入欢迎信息保存后#ftpd_banner=Welcome to blah FTP service.# 黑名单设置。可以阻止某些特殊的 email address 链接#deny_email_enable=YES# 当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定哪些邮件地址不可登录 vsftpd 服务器# 此文件需用户自己创建,通常情况下为一行一个 email address#banned_email_file=/etc/vsftpd/banned_emails# 用户登录 FTP 服务器后是否具有访问自己目录以外的其他文件的权限# 设置为 YES 时,用户被锁定在自己的 home 目录中,vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件# 必须与下面的设置项配合#chroot_list_enable=YES# 被列入此文件的用户,在登录后将不能切换到自己目录以外的其他目录# 从而有利于 FTP 服务器的安全管理和隐私保护。此文件需自己建立#chroot_list_file=/etc/vsftpd/chroot_list# 是否允许递归查询。默认为关闭,以防止远程用户造成过量的 I/O#ls_recurse_enable=YES# 是否允许监听。# 如果设置为 YES,则 vsftpd 将以独立模式运行,由 vsftpd 自己监听和处理 IPv4 端口的连接请求listen=NO# 设定是否支持 IPV6listen_ipv6=YES# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名,即 /etc/pam.d/vsftpd 文件# 此文件 中file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中pam_service_name=vsftpd# 是否允许 ftpusers 文件中的用户登录 FTP 服务器,默认为 YES# 若此项设为 YES,则 user_list 文件中的用户允许登录 FTP 服务器# 而如果同时设置了userlist_deny=YES,则 user_list 文件中的用户将不允许登录 FTP 服务器,甚至连输入密码提示信息都没有userlist_enable=YES

/etc/vsftpd/ftpusers 这个文件是禁止使用 vsftpd 的用户列表文件。记录不允许访问 FTP 服务器的用户名单,一般把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从 FTP 登录后获得大于上传下载操作的权利,而对系统造成损坏。其默认值为:

默认值截图

/etc/vsftpd/user_list 文件是允许或禁止使用 vsftpd 的用户列表文件。这个文件中指定的用户缺省情况(即在 /etc/vsftpd/vsftpd.conf 中设置 userlist_deny=YES)下也不能访问 FTP 服务器,在设置了 userlist_deny=NO 时,仅允许 user_list 中指定的用户访问 FTP 服务器。

用户访问模式

vsftpd 服务访问模式有三种,分别是:匿名用户、系统用户和虚拟用户

匿名用户模式

匿名模式即 FTP 服务器建立一个公开账户 (一般为 anonymous),并赋予该账户访问公共目录的权限(默认为 /var/ftp/pub),该模式适合只在内网使用或公开文件的场景使用。默认情况下,匿名用户只有查看权限,无法创建、删除、修改。如果想要允许匿名用户能够上传、下载、删除文件,需在 /etc/vsftpd/vsftpd.conf 配置文件中修改:

anon_upload_enable=YES # 允许匿名用户上传文件;anon_mkdir_write_enable=YES # 允许匿名用户创建目录;anon_other_write_enable=YES # 允许匿名用户其他写入权限。

vsftpd 默认的匿名用户有两个:anonymous 与 ftp ,所以如果需要使用匿名用户上传、删除文件需要 anonymous 用户对 /var/ftp/pub 目录有写入权限:

chown -R ftp /var/ftp/pub/系统用户模式

如果在非内网情况下,匿名模式可以让任何人使用 ftp 服务,比较公开,多适用于共享文件。如果只想要部分特定用户使用,就需要使用系统用户登录访问,这种模式我们需要创建不同的用户:

groupadd www # 创建用户组useradd -g www www -s /sbin/nologin # 创建用户

参数说明:

groupadd 创建对应的用户组,参数 www 即创建的组名useradd 创建用户-g www 指定用户组,www 即为指定的用户组名www 指定本次创建的用户名-s /sbin/nologin 禁止用户通过 ssh 登录系统

然后需要修改配置文件(/etc/vsftpd/vsftpd.conf):

anonymous_enable=NO # 禁止匿名用户登录chown_uploads=NO # 设定禁止上传文件更改宿主nopriv_user=ftptest # 设定支撑 vsftpd 服务的宿主用户为新建用户ascii_upload_enable=YESascii_download_enable=YES # 设定支持 ASCII 模式的上传和下载功能。userlist_enable=YESuserlist_deny=NO

然后修改 /etc/vsftpd/user_list 文件,将新建(或原有)的用户添加到文件的最后一行,这种模式下,登录 FTP 后访问的就是 /home/www/,即为当前用户的家目录

虚拟用户配置

系统用户模式可以有效的控制访问,但是随着使用用户增多,需要创建大量系统用户,这对服务器系统的管理产生了巨大影响,甚至对服务器安全造成威胁。这时我们就可以使用虚拟用户进行登录,以方便管理。

虚拟用户模式实际上没有真实的系统用户,其是通过映射到一个真实的用户以及设置的权限来实现访问验证,虚拟用户在 linux 中实际不存在,提升了系统的安全性。

修改配置文件 /etc/vsftpd/vsftpd.conf:

anonymous_enable=NO # 设定不允许匿名访问local_enable=YES # 设定本地用户可以访问。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/xferlog# 设定 vsftpd 的服务日志保存路径。xferlog_std_format=YES # 设定日志使用标准的记录格式。async_abor_enable=YES #设定支持异步传输功能。ascii_upload_enable=YESascii_download_enable=YES #设定支持ASCII模式的上传和下载功能。chroot_list_enable=NO #禁止用户登出自己的 FTP 主目录。ls_recurse_enable=NO #禁止用户登陆 FTP 后使用 "ls -R" 的命令。listen=YESuserlist_enable=YES # 设定 userlist_file 中的用户将不得使用 FTPtcp_wrappers=YES # 设定支持 TCP Wrappersguest_enable=YES # 设定启用虚拟用户功能。guest_username=www # 指定虚拟用户的宿主用户,即 linux 中真实存在的用户virtual_use_local_privs=YES # 设定虚拟用户的权限符合他们的宿主用户。pam_service_name=vsftpd # 设定 PAM 服务下 vsftpd 的验证配置文件名。因此,PAM 验证将参考 /etc/pam.d/ 下的 vsftpd 文件配置。user_config_dir=/etc/vsftpd/virtualconf # 设定虚拟用户个人 vsftp 的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个 vsftp 虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

随后需要创建对应的虚拟用户配置文件夹

mkdir -p /etc/vsftpd/virtualconf

制作虚拟用户数据库文件 vim /etc/vsftpd/virtusers,这个文件的文件名以及路径是可以自定义的,用于储存虚拟用户用户名与密码的文件,在文件中写入如下内容:

user1123456user2123456

该文件格式为:一行用户名对应一行密码

随后生成虚拟用户数据文件:

db_load hash /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

设置 PAM 验证文件,并指定上一步创建的虚拟用户数据库文件,vsftp 的 PAM 验证配置文件路径为 /etc/pam.d/vsftpd ,编辑该文件,并在文件末尾新增如下内容:

#%PAM-1.0auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusersaccount sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers

如当前系统是 64 位的,则需要使用如下内容:

#%PAM-1.0auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusersaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

其中 /etc/vsftpd/virtusers 为第二步生成的虚拟用户数据库文件。

修改虚拟用户配置文件,将虚拟用户配置文件存入 /etc/vsftpd/virtualconf/ 目录,文件名为虚拟用户名,例如虚拟用户为 user1,则对应的文件名为 /etc/vsftpd/virtualconf/user1,对应配置项与主配置项基本相同,该配置文件未指定的内容则由主配置文件决定,对应配置项如下:

local_root=/www/server/blog # 指定虚拟用户的具体主路径。write_enable=YES # 设定允许写操作。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。

重启 vsftpd 即可使用虚拟用户连接:

service vsftpd restart # 重启


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有