vsftpd文件传输服务三种工作模式及基于CA认证

匿名共享_本地用户认证共享

同台主机同个ip地址实现匿名共享和本地用户认证共享
1.配置网络参数;
[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0C:29:29:7C:9C
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.100.150
NETMASK=255.255.255.0
GATEWAY=192.168.100.100
DNS1=192.168.100.100
:wq
2.清空防火墙规则;
[[email protected] ~]# /etc/init.d/iptables stop
[[email protected] ~]# chkconfig iptables off
3.关闭selinux;
[[email protected] ~]# vi /etc/selinux/config 
SELINUX=disabled
:wq
[[email protected] ~]# reboot
[[email protected] ~]# getenforce
Disabled
4.安装vsftpd软件包;
[[email protected] ~]# yum -y install vsftpd
5.修改配置文件,实现匿名用户访问ftp,并且拥有上传、下载、删除、重命名等权限;
[[email protected] ~]# cp /usr/share/doc/vsftpd-2.2.2/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf /etc/vsftpd/
[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf    ##注意ftp的配置文件非常严谨,多一个空格都会导致服务启动不了,若粘贴配置文件请将后边的空格和注释删掉

:%g/^#/d
:%g/^$/d

anonymous_enable=YES        #允许匿名访问
local_enable=NO            #不允许本地系统用户访问
write_enable=YES        ##允许写入权限(全局配置)
#local_umask=022        ##注释掉本地用户所上传文件的默认权限掩码值
anon_umask=022            #匿名用户上传文件的默认权限掩码值
anon_upload_enable=YES        ##允许匿名用户上传文件
anon_mkdir_write_enable=YES    ##允许匿名用户创建或上传目录
anon_other_write_enable=YES    ##允许匿名用户有其他写入权限,比如重命名、删除、覆盖等
dirmessage_enable=YES        #允许显示用户切换目录时显示.message文件(如果存在的话)
xferlog_enable=YES        ##启用xferlog日志,默认记录到/var/log/xferlog
connect_from_port_20=YES    ##允许服务器主动模式
xferlog_std_format=YES        ##启用标准xferlog日志模式
listen=YES            ##允许以独立运行的方式监听服务
pam_service_name=vsftpd        ##设置用于用户认证的PAM文件位置,在/etc/pam.d目录中对应的文件名
userlist_enable=YES        ##启用user_list用户列表文件
tcp_wrappers=YES        ##启用tcpwrapper主机访问控制
:wq
[[email protected] ~]# /etc/init.d/vsftpd start
[[email protected] ~]# netstat -utpln |grep ftp
6.创建ftp的测试目录;
[[email protected] ~]# cd /var/ftp/    ##此目录是匿名ftp的默认目录,可以通过在配置文件中进行更改;
[[email protected] ~]# mkdir ./linux    ##创建linux目录,文件服务器的共有特点,双重权限:1.目录权限 2.服务权限  双重权限取最小!!!在这里我们将目录权限给到最大,在服务中进行控制权限。
[[email protected] ~]# chmod 777 /var/ftp/linux/
[[email protected] ~]# touch /var/ftp/linux/1.file
7.客户端验证访问;
windows:ftp://192.168.100.150/
linux:
连接光盘
mount /dev/cdrom /mnt
rm -rf /etc/yum.repos.d/*
vi /etc/yum.repos.d/centos.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
:wq
mount /dev/cdrom /mnt
ifconfig eth0 192.168.100.155 netmask 255.255.255.0 up
yum -y install lftp ftp wget
lftp 192.168.100.150
cd linux/
get 1.file
exit
注:配置匿名用户的禁止下载(禁止读取权限),可以通过anon_umask=配置项进行配置,这个掩码值为匿名用户(ftp用户)上传文件或者目录的权限反掩码值,若反掩码值为022时,那么用户上传的文件权限就为644,上传的目录权限就为755,那么如何控制用户下载文件呢?可通过掩码值删除用户创建文件的其他人(other)的r权限,通常配置项为077时,匿名用户就只能上传无法下载了,若配置项为022时,那么匿名用户是可上传可下载的;

8.在匿名ftp的配置文件的基础上,更改配置文件,搭建本地用户认证ftp;
[[email protected] ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES    ##开启匿名访问
local_enable=YES    ##开启本地用户访问
write_enable=YES
local_umask=077        ##设置本地用户上传文件或者目录的权限反掩码值
local_root=/opt/www/    ##指定本地用户认证ftp的根目录,默认不指定为用户的家目录
chroot_local_user=YES    ##设置禁锢用户在自己的家目录,防止其切换到服务器的别的目录下
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES    ##启用/etc/vsftpd/user_list文件
#userlist_deny=NO    ##若等于NO,仅列表中的用户可以登录ftp,若设置为YES,则为仅禁止此列表中的用户登陆ftp,默认值为YES
tcp_wrappers=YES
one_process_model=NO     ##指每个链接所对应的进程,如若为yes,那么则会大量消耗系统资源,通常此配置项为NO或者删掉
:wq
[[email protected] ~]# /etc/init.d/vsftpd restart

9.创建本地测试用户;
[[email protected] ~]# useradd u01
[[email protected] ~]# useradd u02
[[email protected] ~]# echo 123123 |passwd --stdin u01
更改用户 u01 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] ~]# echo 123123 |passwd --stdin u02
更改用户 u02 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

10.创建测试ftp的目录;
[[email protected] ~]# mkdir /opt/www/
[[email protected] ~]# chmod 777 /opt/www/    ##配置目录权限为777,也可以通过目录的权限来控制登陆ftp的用户的权限,可以更改用户的属组,将本地用户添加至其属组,来控制权限,;
[[email protected] ~]# touch /opt/www/1.file    ##创建测试文件
10.客户端测试;
windows:ftp://192.168.100.150/     右键选择登陆,输入服务器本地测试用户登录访问ftp
linux:
lftp ftp://[email protected]

注:本地用户认证的方式访问ftp服务器,可以通过ftp共享目录的权限来限制本地用户的上传下载权限。

11.ftp服务器的优化操作:
[[email protected] ~]# vi /etc/vsftpd/vsftpd        ##在文件末尾追加
listen_address=192.168.100.156            ##设置服务器监听地址
listen_port=21                    ##设置ftp服务监听端口
pasv_enable=YES                ##设置开启服务器被动模式
pasv_min_port=20000            ##设置被动模式,ftp服务器传输文件时端口号的最小值
pasv_max_port=25000            ##设置被动模式,ftp服务器传输文件时端口号的最大值
max_clients=20                ##设置并发客户端数量
max_per_ip=2            ##设置同个ip最大的连接数
anon_max_rate=50000            ##设置匿名用户传输文件的最大速率,单位为字节
local_max_rate=200000        ##设置本地用户传输文件的最大速率,单位为字节
:wq
[[email protected] ~]# /etc/init.d/vsftpd restart

 

 

部署vsftpd--虚拟用户(db4)

1.设置网络参数:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
HWADDR="00:0C:29:68:b1:0f"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=static
IPADDR=10.10.10.95
NETMASK=255.255.255.0
GATEWAY=10.10.10.1
DNS1=10.10.10.95
:wq

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ftp.linuxfan.cn
:wq

vi /etc/selinux/config 
SELINUX=disabled
:wq

chkconfig iptables off

reboot

2.安装软件vsftpd
rm -rf /etc/yum.repos.d/*
vi /etc/yum.repos.d/rhel.repo
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
:wq

mount /dev/cdrom /mnt
yum -y install vsftpd  db4-utils
rpm -ql vsftpd
cd /etc/vsftpd/
rpm -qa |grep db4

3.创建虚拟用户和本地用户:
[[email protected] vsftpd]# vi vusers.list     ##编写虚拟用户的配置文件,指定用户名密码;
mike
123
tom
456
:wq
cd /etc/vsftpd/
rpm -qf $(which db_load)    ##查询db_load命令由哪个软件包提供
db_load -T -t hash -f vusers.list vusers.db    ##创建Berkeley DB格式的数据库文件
ls
file vusers.db    ##查看文件类型 
cat vusers.db 
ls
chmod 600 vusers.*    ##
ll vusers.*

useradd -d /var/vftproot -s /sbin/nologin virtual    ##创建虚拟用户所映射的本地用户,设置其用户的宿主目录和登陆shell
ls -ld /var/vftproot/
chmod 777 /var/vftproot/        ##给予测试目录最大权限
ls -ld /var/vftproot/
4.生成PAM认证文件:
cp /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd.vu    ##为虚拟用户建立PAM认证文件
[[email protected] vsftpd]# vi /etc/pam.d/vsftpd.vu                 ##修改如下,文件中的db=所指的vusers文件就是刚刚创建的vusers.db文件;
#%PAM-1.0
auth            required        pam_userdb.so db=/etc/vsftpd/vusers
account         required        pam_userdb.so db=/etc/vsftpd/vusers
:wq
5.主配置文件:
[[email protected] vsftpd]# vi vsftpd.conf 
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/var/vftproot/
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
listen=YES
pasv_min_port=30000
pasv_max_port=30999
user_config_dir=/etc/vsftpd/vusers_dir/
:wq
[[email protected] vsftpd]# mkdir vusers_dir    ##配置文件中user_config_dir配置项指定了此目录下的用户权限,若开启了此配置项,但是在这个目录下没有相应的用户文件,那么不能登陆ftp,创建以用户名为文件名的空文件,则此用户可以访问下载,不能上传;
cd vusers_dir/
ls
touch mike
[[email protected] vusers_dir]# vi tom   ##tom能上传,mike只能下载
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
:wq

touch /var/vftproot/1.file    ##创建测试文件

/etc/init.d/vsftpd  restart
netstat -utpln |grep 21
chkconfig vsftpd on
6.测试:
windows:
ftp://10.10.10.95
linux:
测试结果:tom用户可以写入并上传,mike用户只能访问下载,不能上传

7.虚拟用户验证成功之后,发现本地用户认证无法实现;
##配置虚拟用户及本地用户认证的方式######
[[email protected] pam.d]# vi /etc/pam.d/vsftpd        ##第一二行指定虚拟用户的认证,指定/etc/vsftpd/vusers.db虚拟用户的db数据文件,下边几行指定本地用户认证;
#%PAM-1.0
auth            sufficient        pam_userdb.so db=/etc/vsftpd/vusers
account         sufficient        pam_userdb.so db=/etc/vsftpd/vusers
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
:wq
[[email protected] vsftpd]# vi vsftpd.conf         ##编辑主配置文件如下
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_root=/var/vftproot/
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd
listen=YES
pasv_min_port=30000
pasv_max_port=30999
user_config_dir=/etc/vsftpd/vusers_dir/
:wq
[[email protected] ~]# /etc/init.d/vsftpd restart        ##重启服务

8.创建本地测试用户;
[[email protected] ~]# useradd u01
[[email protected] ~]# useradd u02
[[email protected] ~]# echo 123123 |passwd --stdin u01
更改用户 u01 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] ~]# echo 123123 |passwd --stdin u02
更改用户 u02 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

 

基于CA认证的VSFTP服务搭建

注意:建立以下基于CA证书的vsftp需要使用FlashFxp登陆ftp认证CA才可以登陆

属于安全登录方式,平常的属于明文传输,使用以下命令可以验证明文传输危险性

抓包命令:tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host 192.168.100.150

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证

vsftpd文件传输服务三种工作模式及基于CA认证