1. Vsftp介绍
特点:安全、高速、稳定
模式:c/s
查看端口的使用,从下图可以看出20端口是用于ftp传数据的,而21端口用于传指令的,ftp分为被动模式和主动模式,被动模式时由远程端决定通信的端口,主动模式时默认用本地发起ftp的端口,Vsftp是ftp的一种,顾名思义是很安全的ftp,我们就来将其部署在 Linux系统上.
[root@node2 ~]# vim /etc/services
2. 安装vsftp服务器
用rpm安装vsftp,执行以下指令
rpm –ivh /mnt/Packages/vsftpd-2.2.2-11.el_4.1.x86_64.rpm
或者用yum源安装
yum –y install vsftpd
安装客户端,以便在linux下便可以访问ftp
yum –y install lftp
安装后只要在linux终端输入lftp 服务器端IP地址就可以在linux端访问ftp了.
安装好了启动一下服务
service vsftpd restart
此时在windows主机中输入ftp://192.168.88.89(这是我的服务器的IP地址),进入后可以看见一个pub目录,在服务器中对应位置为 /var/ftp/pub,这个目录是ftp默认的共享目录 .
接下来了解ftp的三个配置文件
/etc/vsftpd/vsftpd.conf #vsftpd的核心配置文件
[root@node2 /]# vi /etc/vsftpd/vsftpd.conf
如下图所示,红框标记的都是一些重要的参数,如第一个红框标记是否允许匿名登陆,如果值为YES,则代表允许匿名登陆,第二个红框代表是否允许本地用户登陆,也就是是否允许服务器本地的用户登陆,第三个是否允许写权限,第四项是关于权限设置的选项在,暂时不详细介绍 ,第五项是否允许匿名登陆的用户上传文件,第六项是否允许匿名登陆的用户创建目录.
/etc/vsftpd/ftpusers #用与指定哪些用户不能访问ftp,也就是黑名单
[root@node2 ~]# cat /etc/vsftpd/ftpusers
由下图就可以就看出这个就是规定哪些用户不能访问ftp的配置文件,也就是黑名单.
/etc/vsftpd/user_list #用于指定哪些用户能访问ftp,也就是白名单
[root@node2 ~]# cat /etc/vsftpd/user_list
/var/ftp #默认情况下匿名用户的根目录
启动服务的方法
[root@node2 ~]# service vsftpd restart //即刻启动
[root@node2 ~]# chkconfig vsftpd on //开机自动启动
查看一下端口情况
[root@node2 ~]# netstat -anptu | grep ftp
由下图可以发现只有21端口处于活动状态,20端口并没有活动,这是因为没有数据通信.
用linux服务器访问ftp
[root@node2 ~]# lftp 192.168.88.88
如下图可以看出其默认目录是/var/ftp/pub
用windows访问ftp,也是pub默认目录.
3. 修改配置文件
实例1:运维部准备搭建一台功能简单的FTP服务器,允许所有员工上传下载文件,并允许创建用户自己的目录。
(1)允许匿名访问:anonymous_enable=YES,允许匿名用户上传文件并可以创建文件:anon_upload_enable=YES
,anon_mkdir_write_enable=YES
到此还不能在pub目录下新建目录,也不能上传文件,暂且认为是因为目录权限的问题.
那么接下来解决以上问题,创建上传目录ftp用户的写入权限,注意,默认匿名用户家目录的权限是755,这个权限是不能改变的,切记!
下面来一步一步的实现,先修改目录权限,创建一个公司上传的用的目录,叫video,设置拥有者为ftp用户所有,目录权限是755
进入后看见新创建的video目录
此时看看video的权限
[root@node2 video]# ls -ld /var/ftp/video
该目录属于root用户,其他用户没有写权限
修改目录的所有者为ftp
[root@node2 video]# chown ftp /var/ftp/video
由下图可以知道,才是video目录已经ftp用户,且其权限为755
重启一下vsftp使以上修改生效
[root@node2 video]# service vsftpd restart
此时可以新建文件,但是不能改名字,也可以上传,但是不能进行删除操作!如下图所示
实例2.现在有一台FTP和WEB服务器,FTP的功能主要用于维护网站内容,包括上传文件创建目录,更新网页等等。现有两个部门负责维护任务,他们分别适用team1和team2账号进行登陆。先要求仅允许team1和team2账号登陆FTP服务器,但不能登陆本地系统,并将这两个账号的根目录限制为/var/www/html,不能进入该目录以外的其他任何目录。
[root@node2 /]# useradd -s /sbin/nologin team1
[root@node2 /]# useradd -s /sbin/nologin team2
[root@node2 /]# echo 123456 | passwd --stdin team1
[root@node2 /]# echo 123456 | passwd --stdin team2
[root@node2 /]# vi /etc/vsftpd/vsftpd.conf
local_root=/var/www/html 激活本地用户的根目录为/var/www/html
chroot_list_enable=YES 激活chroot功能
chroot_list_file=/etc/vsftpd/chroot_list 设置锁定用户在根目录中的列表文件,此文件存放要锁定的用户名
建立/etc/vsftpd/chroot_list文件,并添加team1和team2账号,一行一个账号
[root@node2 /]# touch /etc/vsftpd/chroot_list
修改目录/var/www/html的权限,使得用户可以有写的权限
[root@node2 vsftpd]# chmod -R 757 /var/www/html
[root@node2 vsftpd]# service vsftpd restart
此时到windows端访问ftp,用创建的team1用户访问ftp,如下所示
此时可以创建新文件夹,并且可以改文件名
可以删除创建的文件夹,也可以上传文件,也可以将上传的文件删除,如下所示
实例3.FTP虚拟用户的使用
概述:通过虚拟用户能将ftp的系统和用户进行分离,这样即使别人破解了ftp的账号和密码,也只能是访问ftp共享出来的内容,对服务器本身没有任何影响,能提高服务器的安全性
环境:假设A单位有一台ftp服务器,此服务器提供了供单位员工下载的一些资料,普通员工只有查看和下载的权限,但是没有上传和修改的权限,单位管理者拥有上传和下载的权限
实现步骤:
[root@node2 vsftpd]# vim /etc/vsftpd/vusers.list
2.生成数据库
使用db_load生成,如果没有此命令,可以使用以下命令安装
[root@node2 vsftpd]# yum -y install db4-utils
提示我已经安装了最新版本了,所以不用折腾了
接下来开始生成数据库
[root@node2 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db
注:-T:允许应用程序能够将文本文件转译载入数据库
-t:使用加密算法,这里采用hash
-f:指定包含用户名和密码的文本文件
3.修改数据库文件的访问权限,提高安全性,只允许root用户拥有读写权限,防止非法用户盗取
[root@node2 vsftpd]# chmod 600 /etc/vsftpd/vusers.db
4.创建两个系统用户virtual和rm,并修改目录权限
useradd –d /var/ftp/xsb –s /sbin/nologin virtual
useradd –d /var/ftp/boss –s /sbin/nologin rm
chmod 755 /var/ftp/xsb
chmod 755 /var/ftp/boss
5.配置PAM文件
PAM概述:PAM(Plugable Authentication Module)为插拔认证模块,不必重新安装应用系统,通过修改指定的配置文件,调整对该程序的认证方式。PAM模块配置文件路径为/etc/pam.d/目录,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
注:文件最后调用的数据库文件时省略掉了db后缀
local_enable=YES #允许本地用户登陆
write_enable=YES #允许写入
anon_umask=022 #设置上传文件的默认权限
chroot_local_user=YES #限制目录
guest_enable=YES #开启虚拟用户支持,可以在用户单独配置文件中设置
guest_username=virtual #设置映射本地用户,可以在用户单独配置文件中设置
pam_service_name=vsftpd.vu #指定PAM文件
max_clients=300 #最大接入的客户数量
max_per_id=10 #设置每个IP地址最大连接数
如果在主配置文件中开启了虚拟用户支持,并配置了虚拟用户映射的本地用户,那么这些配置好之后虚拟用户就能在客户端登陆了,但是此种做法会让所有的虚拟用户拥有相同的权限,不能达到目的,所以要建立独立的配置文件。
7.建立独立的配置文件,设置不同用户的权限
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir 指定用户配置文件的路径
(1)配置xsb账号的独立配置文件
vi /etc/vsftpd/vusers_dir/xsb 注意:每个独立配置文件的文件名和用户名一样
guest_enable=yes
guest_username=virtual
anon_world_readable_only=no
anon_max_rate=50000
(2)配置boss账户的独立配置文件
vi /etc/vsftpd/vusers_dir/boss
guest_enable=yes
guest_username=rm
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_max_rate=100000
anon_other_write_enable=yes
配置完后,重启服务,刷新一下才能生效哦!!!接下来就可以登陆验证了,至此,ftp在linux的部署步骤就讲解结束了!