Centos下vsftpd服务配置
文章目录
前言
本文介绍在Centos下通过vsftpd服务搭建FTP服务器,创建FTP账号过程
一、FTP简介
FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:
主动模式:客户端向FTP服务器发送端口信息,由服务器主动连接该端口。
被动模式:FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。
说明:大多数FTP客户端都在局域网中,没有独立的公网IP地址,且有防火墙阻拦,主动模式下FTP服务器成功连接到客户端比较困难。因此,如无特殊需求,建议您将FTP服务器配置为被动模式。
FTP支持以下三种认证模式:
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源,进一步增强了FTP服务器
的安全性。
二、搭建步骤
1.安装vsftpd服务
(1)yum在线安装
yum install vsftpd
(2)离线安装
离线可以下载vsfdpd安装包后,使用rpm进行安装
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
2.虚拟用户模式
(1)创建账号密码
首先,创建用于进行ftp认证的用户数据库文件vu.txt,其中奇数行是用户名,偶数行是登录密码。其次,利用db_load命令用哈希算法将原始明文信息文件转换成vsftpd服务程序可加载的数据库文件vu.db。最后,为了避免其它用户访问该数据库文件的内容,修改降低数据库文件的权限,把原始的明文文件删除。
#进入vsftpd配置目录
cd /etc/vsftpd/
#创建vu.txt明文文件
cat >>/etc/vsftpd/vu.txt<<EOF
admin
admin
upload
upload
download
download
EOF
#把vu.txt明文文件转换成vu.db数据库文件
db_load -T -t hash -f vu.txt vu.db
#修改降低vu.db数据库文件的权限并删除原始明文文件
chmod 600 vu.db
rm -f vu.txt
(2)创建账号、虚拟账号、ftp路径
创建vsftpd服务程序用于存储文件的根目录/var/ftpdate以及用于虚拟用户映射的系统本地用户ftpadmin。此外,为了安全起见,将ftpadmin系统本地用户设置为不允许登录该服务器。创建虚拟用户upadmin目录/var/ftpdate/upadmin并更换其所属组和所属用。
#创建系统本地用户ftpadmin及所属目录并禁用该用户登录服务器
useradd -d /home/ftp -s /sbin/nologin ftpadmin
#创建虚拟用户upload的目录
mkdir /home/ftp/upload
#修改虚拟用户upload的所属组和所属用户
chown -R ftpadmin:ftpadmin /home/ftp/upload
#修改/home/ftp/的权限
chmod -Rf 755 /home/ftp/
(3)创建PAM文件
创建用于支持虚拟用户的PAM文件
#Tips:不用写数据库文件vu.db的后缀
cat >>/etc/pam.d/vs.vu<<EOF
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
EOF
(4)创建账号配置文件
创建目录/etc/vsftpd/vu_perm用于存放为不同虚拟用户设置不同的权限的文件。例如,admin,upload和download。
#Tips:虚拟用户权限的文件名与虚拟用户名称保持一致。
#创建目录/etc/vsftpd/vu_perm
mkdir /etc/vsftpd/vu_perm
#创建虚拟用户admin的权限文件admin,使其具备上传、下载、创建目录、删除和移动文件的权限
cat >>/etc/vsftpd/vu_perm/admin<<EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp
EOF
#创建虚拟用户upload的权限文件upload,使其仅具备上传文件、创建目录的权限
cat >>/etc/vsftpd/vu_perm/upload<<EOF
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/ftp/upload
EOF
#创建虚拟用户download的权限文件download,使其仅具备下载文件的权限
cat >>/etc/vsftpd/vu_perm/download<<EOF
anon_world_readable_only=NO
local_root=/home/ftp
EOF
#为了安全起见,递归修改/etc/vsftpd/vu_perm的权限
chmod -R 600 /etc/vsftpd/vu_perm/
(5)配置vsftpd服务程序的主配置文件
#备份sftpd服务程序的主配置文件
cp /etc/vsftpd/vsftpd.conf{,backup}
#把默认未注释的配置文件重定写入vsftpd.conf配置文件中
grep -v "#" /etc/vsftpd/vsftpd.confbackup >/etc/vsftpd/vsftpd.conf
#修改配置文件
vi /etc/vsftpd/vsftpd.conf
修改后配置内容,加粗部分为修改或增加内容
[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=ftpadmin
allow_writeable_chroot=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vs.vu
userlist_enable=YES
user_config_dir=/etc/vsftpd/vu_perm
(6)安全配置,涉及到Firewall和SeLinux的配置
#放通ftp服务,允许客户端连接服务器ftp服务(TCP 21)并使配置生效
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
#获取关于ftp相关的SeLinux布尔值设置
getsebool -a | grep ftp
#修改SeLinux关于ftp服务的布尔值
#Tips:-p表示永久生效,不受服务器重启的影响。
setsebool -P ftpd_connect_all_unreserved=on
setsebool -P ftpd_full_access=on
(7)重启vsftpd服务并设置跟随系统自启动
#重启vsftpd服务
systemctl restart vsftpd
#设置vsftpd服务开机自启动
systemctl enable vsftpd
(8)主动模式和被动模式
#主动模式连接的数据通道端口
connect_from_port_20=YES
#使能被动模式
pasv_enable=YES(默认使能)
pasv_min_port=50000(默认0,使用任何端口)
pasv_max_port=50100(默认0,使用任何端口)