vsftpd服务部署

本文详细介绍了如何部署和配置VSFTPD服务,包括匿名用户设置限速、被动模式、虚拟用户验证和加密传输。在匿名用户设置中,讲解了如何允许上传、创建目录和其他写入操作。在被动模式部分,提到了本地用户验证,如用户权限控制、限制端口及文件。虚拟用户验证实验解释了如何创建虚拟用户数据库和映射用户。最后,讨论了通过openssl实现VSFTPD的加密传输,包括生成和配置证书的过程。
一、匿名用户设置限速实验
$ dd if=/dev/zero bs=1024 count=100 of=/ftp/test
$ anon_max_rate=900

匿名权限控制:
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为不限速,单位:bytes/秒)

实验需求与流程:
注意:在客户端登录后,默认情况下是可以下载的,但不能上传
1.实现可以上传
a.anon_upload_enable=YES
b.在/var/ftp/下创建上传目录
c.修改上传目录的权限或所有者,让匿名用户有写入权限
2.实现创建目录和文件其他操作
anon_mkdir_write_enable=YES #允许创建目录
anon_other_write_enable=YES #删除文件、文件改名、文件覆盖
3.用户进入某个文件夹时,弹出相应的说明
a.在对应目录下创建 .message 文件,并写入相应内容
b.确认dirmessage_enable=YES是否启用
c.尝试却换目录查看效果(同一次登录仅提示一次)
4.实现上传的文件可下载
默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限
设置anon_umask=022,可以让上传的文件其他人位置拥有r权限,然后才能被其他人下载

二、被动模式
$ pasv_enable=YES
$ pasv_min_port=10221
$ pasv_max_port=10231

本地用户验证实验:
本地用户权限控制:
local_enable=YES #是否启用本地系统用户
local_umask=022 #本地用户所上传文件的权限掩码
local_root=/var/ftp #设置本地用户的FTP根目录
chroot_local_user=YES #是否将用户禁锢在主目录
local_max_rate=0 #限制最大传输速率
ftpd_banner=Welcome to blah FTP service #用户登录时显示的欢迎信息
userlist_enable=YES & userlist_deny=YES
#禁止/etc/vsftpd/user_list文件中出现的用户名登录FTP
userlist_enable=YES & userlist_deny=NO
#仅允许/etc/vsftpd/user_list文件中出现的用户名登录FTP
配置文件:ftpusers
#禁止/etc/vsftpd/ftpusers文件中出现的用户名登录FTP,权限比user_list更高,即时生效

实验需求与流程:
1.服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP)
useradd -s /sbin/nologin username
2.将所有用户禁锢在自己的家目录下
注:默认没有禁锢用户时,客户端登录后可以随意切换目录,查看文件所在位置和文件名
chroot_local_user=YES
#开启用户家目录限制,限制所有用户不能随便切换目录
3.将部分用户禁锢在自己的家目录下
chroot_list_enable=YES
#开启白名单功能,允许白名单中的用户随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list
#白名单文件所在位置(需自己创建)
4.配置文件:/etc/vsftpd/ftpusers
所有写入此文件内的用户名都不允许登录ftp,立刻生效。
5.修改被动模式数据传输使用端口
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=35000

三、虚拟用户

虚拟用户验证实验:
1.建立FTP的虚拟用户的用户数据库文件(在/etc/vsftpd)
vim vsftpd.user
注:该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
db_load -T -t hash -f vsftpd.user vsftpd.db
#将用户密码的存放文本转化为数据库类型,并使用hash加密
chmod 600 vsftpd.db
#修改文件权限为600,保证其安全性

2.创建FTP虚拟用户的映射用户,并制定其用户家目录
useradd -d /var/ftproot -s /sbin/nologin virtual
#创建virtual 用户作为ftp的虚拟用户的映射用户

3.建立支持虚拟用户的PAM认证文件,添加虚拟用户支持
cp –a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam
#使用模板生成自己的认证配置文件,方便一会调用
编辑新生成的文件vsftpd.pam (清空原来内容,添加下列两行)
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
在vsftpd.conf文件中添加支持配置
修改:
pam_service_name=vsftpd.pam
添加:
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd/dir

4.为虚拟用户建立独立的配置文件,启动服务并测试
注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。
如果不注释掉,所有的虚拟用户都会使用匿名用户权限

用户可以上传:
anon_upload_enable=YES #允许上传文件
用户可以创建目录或文件:
anon_mkdir_write_enable=YES #允许创建目录
用户可以修改文件名:
anon_upload_enable=YES #允许上传文件(为了覆盖开启的)
anon_other_write_enable=YES #允许重名和删除文件、覆盖
注:给映射用户的家目录 设置 o+r 让虚拟用户有读权限。

# 创建账号信息文件
$ vi /etc/vsftpd/user.list  

# 将创建的账户信息文件修改为系统识别的数据库类型文件
$ cd  /etc/vsftpd
$ db_load -T -t hash -f /etc/vsftpd/user.list user.db
$ chmod 600 user.* 

# 添加虚拟映射用户
$ useradd -d /var/ftproot -s /sbin/nologin virtual
$ chmod 755 /var/ftproot/

# 设置认证
$ cd /etc/pam.d
$ cp vsftpd vsftpd.a
$ vi vsftpd.a    
    #%PAM-1.0                   
	auth     required     pam_userdb.so   db=/etc/vsftpd/user
	account   required     pam_userdb.so   db=/etc/vsftpd/user

# 在主配置文件中声明
$ vi /etc/vsftpd/vsftpd.conf           
	pam_service_name=vsftpd.a            
	userlist_enable=YES                          
	tcp_wrappers=YES
	guest_enable=YES
	guest_username=virtual
	user_config_dir=/etc/vsftpd/conf

# 创建用户控制权限
$ cd /etc/vsftpd/
$ mkdir  conf
$ cd  conf
$ touch  user1  user2  user3
                                
# 常见权限:						
anon_upload_enable=YES  允许上传
anon_mkdir_write_enable=YES    允许用户创建目录
anon_other_write_enable=YES     允许其它写入权限
四、加密传输
# 安装机密算法程序 openssl
$ yum  -y  install  openssl
$ yum  -y  install  openssl-devel
			
# 创建证书
$ openssl  req  -new  -x509  -nodes  -out  vsftpd.pem  -keyout  vsftpd.pem

# 拷贝到 /etc/ssl/certs

# 为了保密性,不能让别人随意查看,修改权限
$ chmod  400  vsftpd.pem 
			
# vi  /etc/vsftpd/vsftpd.conf
	ssl_enable=YES                                         
	allow_anon_ssl=YES                                    
	force_local_data_ssl=YES                            
	force_local_logins_ssl=YES                          
	force_anon_data_ssl=YES                            
	force_anon_logins_ssl=YES                           
	ssl_tlsv1=YES                                                
	ssl_sslv2=NO
	ssl_sslv3=NO     
	rsa_cert_file=/etc/ssl/certs/vsftpd.pem				

openssl+vsftpd 加密验证方式:
拓展:使用tcpdump 工具进行指定端口抓包,抓取ftp登录过程中的数据包
tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host 来源ip
-i #interface:指定tcpdump需要监听的接口
-n #对地址以数字方式显式,否则显式为主机名
-nn #除了-n的作用外,还把端口显示为数值,否则显示端口服务名
-X #输出包的头部数据,会以16进制和ASCII两种方式同时输出
-vv #产生更详细的输出

1.查看是否安装了openssl
rpm -q openssl
2.查看vsftpd 是否支持openssl
ldd /usr/sbin/vsftpd | grep libssl
3.生成加密信息的秘钥和证书文件
位置:/etc/ssl/certs/
a.openssl genrsa -out vsftpd.key 1024
#建立服务器私钥,生成RSA密钥
b.openssl req -new -key vsftpd.key -out vsftpd.csr
#需要依次输入国家,地区,城市,组织,组织单位,Email等信息。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书
c.openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
#使用CA服务器签发证书,设置证书的有效期等信息

注意1:生成完秘钥和证书文件后,将本目录{/etc/ssl/certs/}的权限修改为500.
注意2:在实验环境中可以用命令生成测试,在生产环境中必须要在https证书厂商注册(否则浏览器不识别)

4.修改主配置文件/etc/vsftpd/vsftpd.conf
ssl_enable=YES
#启用ssl认证
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
#开启tlsv1、sslv2、sslv3都支持
allow_anon_ssl=YES
#允许匿名用户{虚拟用户}
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
#匿名登录和传输时强制使用ssl
force_local_logins_ssl=YES
force_local_data_ssl=YES
#本地登录和传输时强制使用ssl
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
#rsa格式的证书
rsa_private_key_file=/etc/ssl/certs/vsftpd.key
#rsa格式的密钥
注:密钥文件要在配置文件中单独声明(写入配置文件时,注释要单独一行,否则会报错)
5.重启服务
service vsftpd restart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值