一、ftp介绍
常见的文件共享服务有:ftp、nfs和samba。其中ftp是一种应用层的服务,nfs是基于内核来实现的网络文件共享服务,samba是在linux上实现cifs(smb)协议来解决跨平台的文件共享服务。
ftp是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行文件的传输。这个古老的协议使用的是明码传输方式,因此在使用当中会有相当多的安全问题。为了更安全的使用ftp协议,主要介绍较为安全但功能很少的vsftpd这个软件。
ftp的传输使用的是tcp协议,是一种c/s模式架构,服务端通过ftp服务向用户提供ftp服务,客户端通过客户端命令连接服务端来进行指令的执行与数据的传输。ftp连接前会先进行三次连接握手以建立tcp会话连接。
二、ftp功能
1、数据的传输。ftp的数据传输连接还有主动和被动方式。主动方式是指数据传输连接服务端主动创建,服务端主动去连接客户端的某个随机端口;被动方式是指数据传输连接由客户端的某个随机端口去连接服务端的某个随机端口。
2、实现不同等级的用户身份验证,这样就可以根据不同的用户身份来分配不同的数据操作权限。ftp默认情况下有三种不同的身份,分别是:实体的账号(real user)、访客(guest)、匿名用户(anonymous)。
3、限制用户的活动目录。主要是为了避免用户在linux系统中随意活动,所做的限制是只允许在自己的家目录里面活动,防止其他用户随意改动家目录的内容,对系统也起到一定的保护作用。
三、安装vsftpd
vsftpd全名叫very secure ftp daemon,意思是非常安全的ftp服务。vsftpd所对应的rpm程序包叫做vsftpd,这里通过yum的方式来进行安装。
安装完成之后启动vsftpd服务,
centos 6 启动vsftpd
centos 7 启动vsftpd
这样ftp服务器便搭建完成。但此时还不能访问ftp服务器,因为服务器默认情况下关闭了防火墙,此时我们还需使用‘iptables -f’命令关闭防火墙,这样客户端才可以访问ftp服务器。
四、vsftpd配置文件及目录
1、用户认证配置文件:/etc/pam.d/vsftpd
2、配置文件目录:/etc/vsftpd
3、主配置文件:vsftpd.conf
4、匿名用户(映射为ftp用户)共享资源位置:/var/ftp
5、系统用户通过ftp访问的资源的位置:用户自己的家目录
6、虚拟用户通过ftp访问的资源的位置:给虚拟用户指定的映射成为的系统用户的家目录
vsftpd的配置文件常用的修改内容:
1、匿名用户的设置:
2、系统用户的设置:
3、访客的设置:
4、禁锢所有的ftp本地用户于其家目录中:
5、禁锢文件中指定的ftp本地用户于其家目录中:
6、日志:
7、改变上传文件的属主:
8、vsftpd 使用 pam 完成用户认证,其用到的 pam 配置文件:
9、是否启用控制用户登录的列表文件
10、连接限制:
11、传输速率:
12、主动模式的设置:
13、被动模式的设置:
12、其他相关参数:
五、ftp用例
1、在centos6中以非独立方式运行vsftpd
安装vsftpd和xinetd服务
2.修改配置文件/etc/vsftpd/vsftpd.conf
3.修改配置文件/etc/xinetd.d/vsftpd
4.重启xinetd服务,并修改/etc/xinetd.d/下某个服务的配置文件,将disable=yes改为no并重启/etc/init.d/xinetd服务使之生效。
2、实现基于ssl的ftps
1.查看是否支持ssl
2.进入/etc/pki/tls/certs路径下,生成以vsftpd.pem命名的自签名证书,并复制证书到/etc/vsftpd目录下
3.编辑配置文件
4.重启服务,用客户端测试
3、实现基于文件验证的vsftpd虚拟用户
虚拟用户:
所有虚拟用户会统一映射为一个指定的系统账号:访问共享位置,即为此系统账号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定
创建虚拟用户的账号密码数据库文件
2.创建映射用户
3.编辑主配置文件
4.编辑pam文件
5.配置子配置文件
6.重启服务,使生效,并测试
4、实现基于mysql验证的虚拟用户
1.编译安装pam_mysql
2.创建数据库
3.使用创建的mysql帐户登录数据库
4.配置vsftpd连接mysql用的pam模块
5.安装vsftpd并修改配置文件
6.测试是否搭建成功