centos7 安装 vsftpd 文件服务器和配置

centos7 安装 vsftpd 文件服务器

  • 安装vsftpd
  • FTP 的传输模式
    • FTP主动模式
    • FTP被动模式
  • vsftpd 三种用户配置
    • 匿名用户配置
    • 系统用户配置
    • 虚拟用户配置

安装vsftpd

  • 使用 yum 命令安装文件服务器
yun install vsftpd* -y
  • 使用以下命令查看vsftpd 的安装路径
rpm -ql vsftpd | more
  • 使用以下命令启动 vsftpd
systemctl restart vsftpd.service
  • 查看vsftpd进程
ps -ef | grep vsftpd
  • vsftdp 的默认配置文件
设置 描述
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 wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。

FTP 的传输模式

FTP是基于 C/S 模式的,即客户端和服务器的传输模式。FTP的传输模式有两种 主动被动模式。

FTP主动模式

主动模式即客户端从一个任意 N大于 1024 的端口)端口,连接FTP服务器的 21 端口,客户端开始监听 N + 1 端口,并发送命令 port N+1 到服务器,FTP服务器以数据连接端口 20 连接到客户端指定的 N + 1 端口。

配置 描述
pasv_enable=no 设置为主动模式,关闭被动模式
connect_from_port_20=yes 配置主动模式下使用 20 端口进行数据传输,必须为 yes

FTP被动模式

被动模式即客户端从一个任意 N大于 1024 的端口)端口连接到FTP服务器的 21 端口,客户端开始监听 N+ 1 端口,并发送 PASV 命令,服务器会开启一个任意的端口 P大于 1024 的端口),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。FTP默认是被动模式,在安装后启动需要关闭防火墙,才可以在浏览器或者Windows的资源管理器访问(ftp://IP)。

systemctl stop firewalld
  • 被动模式的配置信息
配置 描述
connect_from_port_20=no 是否为足管模式(默认为yes),可以不为 no
pasv_enable=yes 开启被动配置(默认为 yes)
pasv_min_port=60000 默认被动模式开放的端口号最小值
pasv_mmax_port=60300 默认被动模式开放的端口号最大值

vsftpd 三种用户配置

匿名用户配置

匿名用户默认只有文件的查看权限,无法对文件进行操作。如果需要对文件进行操作需要添加以下的配置信息,关闭匿名用户模式只需要将 anonymous_enable 修改为 no 即可。

  • 修改配置文件
配置 描述
anonymous_enable=yes 开启匿名用户模式
anon_upload_enable=yes 开启匿名用户上传权限
anon_mkdir_write_enable=yes 开启匿名用户创建文件夹的权限
anon_other_write_enalbe=yes 开启匿名用户其它权限
anon_umask=022 匿名用户操作权限
local_umask=002 本地用户权限由 022 修改为 002
local_root=/var/ftp/ 指定登录后的文件位置
  • 匿名模式下的匿名用户有两个 anonymousftp 需要将文件夹给予指定用户(如ftpanonymous)的操作权限。
## 指定用户
chown -R ftp pub/
## 或者是所有的用户
chmod -R pub/

使用以上配置后重启 vsftp 如果可以进行操作,就不需要进行以下配置

  1. 修改防火墙信息
## 添加服务
firewall-cmd --add-service=ftp --permanent
## 重启防火墙
firewall-cmd --reload
## 或者关闭防火墙
systemctl stop firewalld
  1. 放宽 SELinux 的控制权限,将SELinux 改为 Permissive 模式:
## 查看 SELinux 的模式
getenforce  // Enforcing
## 修改为 Permissive 模式
setenforce 0
## 查看
getenforce // Permissive
  1. 修改 SELinux 对 ftp 的控制权限。(no为开启,off为关闭)
## 查看
getsebool -a | grep ftp

centos7 安装 vsftpd 文件服务器和配置_第1张图片

## 修改
setsebool -P ftpd_anon_write=1

以上配置修改完成后重启ftp systemctl restart vsftpd。就可以对指定的目录进行上传、修改和删除操作。

系统用户配置

匿名用户适用于不需要保密的文件,如果文件比较机密自允许个别人员访问将需要使用 系统用户模式。系统用户模式是使用linux 的系统用户进行操作。

  • 创建linux系统用户
## 添加用户
useradd ftptest1
useradd ftptest2
## 设置用户密码
echo ftptest1|passwd --stdin ftptest1
echo ftptest2|passwd --stdin ftptest2

创建用户 ftptest1和ftptest2 ,分别设置密码为 ftptest1和ftptest2。

  • 系统用户模式的配置
配置 描述
anonymous_enable=no 关闭匿名模式,开启系统用户模式
local_root=/var/ftp/ 将faile配置注释。用于在系统用户登录后可以操作每个用户单独的登录文件
以下配置可以不配
chown_uploads=NO 设定禁止上传文件更改宿主
nopriv_user=ftptest 设定支撑Vsftpd服务的宿主用户为新建用户
ascii_upload_enable=YES 设定支持ASCII模式的上传功能
ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。
userlist_enable=YES 使用 user_list 管理 ftp 用户,该值设置为 yes 需要在白名单 /etc/vsftpd/user_list 文件中添加用户和密码,一行表示一个用户
userlist_deny=NO 是否进行登录用户检查,将登录的用户名和密码根据白名单进行匹配。userlist_enableuserlist_dany都为 yes 才会起效,不然在白名单中配置了,也不会有效果。

重启服务进行操作。
系统用户的文件位置 /home/登录的系统用户名/

虚拟用户配置

使用系统用户配置不易于管理,会导致系统用户过多。使用虚拟用户模式可以解决这一问题,虚拟用户模式就是没有真实的系统用户,而是通过对一个真实用户以及相关的权限来访问控制的。虚拟的用户不能登录操作系统,保证了系统的安全性。

  1. 安装虚拟用户配置需要的工具
yum install pam* libdb-utils libdb* --skip-broken -y

如出现以下错误

Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem.

将安装语句改为

yum install pam* libdb-utils libdb* --skin-broken --setopt=proptected-multilib=false
  1. 创建虚拟用户临时文件 /etc/vsftpd/user.list.txt,在其中添加用户名和密码
flank  // 用户名
123  // 密码
mike  // 用户名
123  // 密码
  1. 生成 vsftpd 虚拟用户认证数据库
db_load -T -t hash -f /etc/vsftpd/user.list.txt /etc/vsftpd/user.db
## 赋予权限
chmod 700 /etc/vsftpd/user.db
  1. 配置pam认证文件,/etc/pam.d/vsftpd 行首添加以下配置
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
## user 为第三步生成的 user.db 文件, .db 不用写
## required 可以替换为 sufficient ,表示充分条件,就是说一旦通过验证就不进行下面的验证步骤了。相反,如果没有通过的话,
## 也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。
## 可以将 pam_userdb.so 改为 /lib | lib64 /security/pam_userdb.so

auth 是指对用户的用户名口令进行验证
account 是指对用户有哪些权限进行验证

  1. 所有的 vsftpd 虚拟用户都需要映射到一个真实的系统用户上。该用户不需要要密码,也不需要登录,主要用于虚拟机用户映射。
    创建命令
useradd -s /sbin/nologin virtual
  1. 配置 vsftpd 的全局配置文件
配置 描述
anonymous_enable=no 不允许匿名用户登录
local_enable=YES 设置本地用户可以访问,如果设置为 no,即本地用户不能访问,同时所有的虚拟用户都不能访问
write_enable=YES 可以进行写操作
local_umask=022 设置上传后的文件权限掩码
dirmessage_enable=YES 开启文件目录标语功能
xferlog_enable=YES 开启日志
connect_from_port_20=YES 设定端口 20 进行数据传输(主动模式,被动模式下无效)
xferlog_std_format=YES 设置日子记录的标准格式
xferlog_file=/var/log/xferlog 设置日子文件的存储路径,如果该文件不存在需要手动创建 touch /var/log/xferlog.log
listen=NO
listen_ipv6=YES
userlist_enable=YES 设置启用 vsftpd 的白名单验证,即不在 userlist_file 中的用户不能使用 ftp
tcp_wrappers=YES 支持 TCP wrapper 模式
chroot_list_enable=NO 禁止用户登出自己的FTP主目录。
ls_recurse_enable=NO 禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁。
虚拟用户的配置
pam_service_name=vsftpd 设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
guest_enable=YES 启用虚拟用户PAM认证
guest_username=virtual 设置宿主用户名
user_config_dir=/etc/vsftpd/virtual/ 设置虚拟用户的配置文件夹路径,用于在PAM认证后进行单个用户的配置信息,该文件夹下的配置文件名必须和虚拟用户名一致
virtual_use_local_privs=YES 虚拟用户的权限和本地用户(宿主)的权限一样
  1. 创建虚拟用户的文件夹,添加虚拟用户的配置
## 创建日志文件
touch /var/log/xferlog.log
## 将日志的权限赋予宿主用户
chown virtual:virtual /var/log/xferlog.log
## 创建虚拟用户配置文件夹
mkdir /etc/vsftpd/viitual/
## 在虚拟用户的配置文件夹下添加配置文件,文件名需要和虚拟用户名一致
vim flank
local_root=/home/virtual/flank
anonymous_enable=NO
local_umask=022
write_enable=YES   
anon_world_readable_only=YES
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
## 在copy 一份为虚拟用户 vitrual2
cp flank mike
## 修改 mike 配置文件的信息
local_root=/home/vitrual/mike
  1. 虚拟用户配置信息介绍
配置 描述
local_root=/opt/vsftp/vitraul1 指定虚拟用户的具体主路径。
anonymous_enable=NO 设定不允许匿名用户访问。
local_umask=022 设定上传文件权限掩码。
write_enable=YES 允许登陆用户有写权限;
anon_world_readable_only=YES 允许匿名用户下载,然后读取文件;
anon_upload_enable=YES 允许匿名用户上传文件,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES 允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES 允许匿名用户其他权限,例如删除、重命名等。
idle_session_timeout=600 设定空闲连接超时时间。
data_connection_timeout=120 设定单次连续传输最大时间。
max_clients=10 设定并发客户端访问个数。
max_per_ip=5 设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件。
local_max_rate=50000 设定该用户的最大传输速率,单位b/s。
  1. 创建虚拟用户各自的虚拟目录
## 创建目录
mkdir -p /home/virtual/{flank,mike}
## 修改虚拟用户的宿主用户为主目录的属主,必须操作不然无法登录
chown -R virtual:virtual /home/virtual
  1. 重启vsftpd服务,使用资源管理启连接。

你可能感兴趣的:(centos7软件安装,软件安装,vsftpd,centos7)