使用VSFTPD服务传输文件

本文介绍了FTP协议的基本概念和工作模式,并详细阐述了如何在Linux系统中配置和管理VSFTPD服务,包括服务参数设定、用户认证模式等关键环节,以确保文件传输的安全和高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是FTP

FTP(File Transfer Protocol)是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。

FTP服务器是按照FTP协议在互联网上提供文件储存和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输的链路。FTP协议有下面两种工作模式。

(1)主动模式:FTP服务器主动向客户端发起连接请求。

(2)被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。

vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点。

在firewalld防火墙管理工具中写入使FTP协议永久生效的允许策略,然后在SELinux中放行FTP传输。

配置vsftpd服务程序
yum install vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
setsebool -P ftpd_full_access=on
vsftpd服务程序常用参数以及作用

(1)listen=[YES|NO]:是否以独立运行的方式监听服务

(2)listen_address=IP地址:设置要监听的IP地址

(3)listen_port=21:设置FTP服务的监听端口

(4)download_enable=[YES|NO]:是否允许下载文件

(5)userlist_enable=[YES|NO],userlist_deny=[YES|NO]:设置用户列表为“允许”还是“禁止”操作

(6)max_clients=0:最大客户端连接数,0为不限制

(7)max_per_ip=0:同一IP地址的最大连接数,0为不限制

(8)anonymous_enable=[YES|NO]:是否允许匿名用户访问

(9)anon_upload_enable=[YES|NO]:是否允许匿名用户上传文件

(10)anon_umask=022:匿名用户上传文件的umask值

(11)anon_root=/var/ftp:匿名用户的FTP根目录

(12)anon_mkdir_write_enable=[YES|NO]:是否允许匿名用户创建目录

(13)anon_other_write_enable=[YES|NO]:是否开放匿名用户的其他写入权限(包括重命名、删除等操作权限)

(14)anon_max_rate=0:匿名用户的最大传输速率(字节/秒),0 为不限制

(15)local_enable=[YES|NO]:是否允许本地用户登录FTP

(16)local_umask=022:本地用户上传文件的umask值

(17)local_root=/var/ftp:本地用户的FTP根目录

(18)chroot_local_user=[YES|NO]:是否将用户权限禁锢在FTP目录,以确保安全

(19)local_max_rate=0:本地用户最大传输速率(字节/秒),0 为不限制

vsftpd用户认证模式

(1)匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器(使用anonymous账号登录)。

cat > /etc/vsftpd/vsftpd.conf <<EOF
anonymous_enable=YES
anon_umask=022
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
EOF

(2)本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。但是如果被黑客破解了账户的信息,就可以畅通无阻地登录FTP服务器,从而完全控制整台服务器(需要将vsftpd服务程序所在目录中默认的两个“用户名单”(ftpusers和user_list)中的用户名注释,登录成功后的目录默认是用户家目录)。

cat > /etc/vsftpd/vsftpd.conf <<EOF
anonymous_enable=NO
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
EOF

# 养成一个好习惯(在修改配置文件前先备份)
cp /etc/vsftpd/user_list /etc/vsftpd/user_list.bak
cp /etc/vsftpd/ftpusers /etc/vsftpd/ftpusers.bak
grep -v "root" user_list.bak > user_list
grep -v "root" ftpusers.bak > ftpusers

(3)虚拟用户模式:这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

# 第一步:创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。例如,创建zhangsan和lisi两个用户,密码均为123456。由于明文信息不安全,也不符合让vsftpd服务程序直接加载的格式,因此需要使用db_load命令用哈希算法将原始明文信息文件转换成数据库文件,并降低数据库文件的权限,然后再把原始明文信息删除。
cat > /etc/vsftpd/vuser.list<<EOF
zhangsan
123456
lisi
123456
EOF

db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.list
rm -f vuser.list

# 第二步:创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户。FTP服务用于存储文件的根目录指的是,当虚拟用户登录后所访问的默认目录。
useradd -d /var/ftproot -s /sbin/nologin virtual
chmod -Rf 755 /var/ftproot/

# 第三步:建立用于支持虚拟用户的PAM(可插拔认证模块)文件
cat > /etc/pam.d/vsftpd.vu <<EOF
auth    required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
EOF

# 第四步:设置虚拟用户权限(默认权限为读权限)
mkdir /etc/vsftpd/vuser_dir
cd /etc/vsftpd/vuser_dir/

touch lisi

cat > zhangsan <<EOF
# 上传权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF

# 第五步:修改vsftpd服务配置文件

cat > /etc/vsftpd/vsftpd.con << EOF
# 禁止匿名开放模式
anonymous_enable=NO
# 允许本地用户模式 
local_enable=YES 
# 开启虚拟用户模式
guest_enable=YES 
# 指定虚拟用户账户
guest_username=virtual
# 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求 
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文件
pam_service_name=vsftpd.vu 
userlist_enable=YES 
tcp_wrappers=YES 
# 指定虚拟用户权限的配置文件所存放的路径
user_config_dir=/etc/vsftpd/vusers_dir
EOF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值