您的位置:首页 > 编程语言 > PHP开发

配置FTP服务(二):vsftpd部署和优化

2015-09-13 11:34 766 查看
前面一篇文章介绍了pureftp部署和优化:http://msiyuetian.blog.51cto.com/8637744/1694166
下面我们接着来做CentOS自带的FTP软件vsftpd的部署和优化实验。

1、安装启动vsftpd

[root@tpp ~]# yum install -y vsftpd
[root@tpp ~]# /etc/init.d/vsftpd start
注:我们会发现启动失败,因为之前我们安装了pure-ftpd,被其占用了21端口,我们只要杀死所有的pure-ftpd进程就行,执行如下命令:

[root@tpp ~]# killall pure-ftpd


2、建立账号

vsftpd默认可以支持使用系统账号登入的,客户端不止可以登入家目录,也可以登入其他的目录,这样是什么不安全,故我们也要和pure-ftpd一样建立关联系统用户的虚拟账户。
首先建立与虚拟账号相关联的系统账号:virftp

[root@tpp ~]# useradd virftp -s /sbin/nologin
接着建立存放虚拟账号密码的文件:

[root@tpp ~]# vim /etc/vsftpd/vsftpd_login      //写入如下内容
test1                                           //用户名(奇数行)
123456                                          //密码(偶数行)
修改权限,只限于root用户:

[root@tpp ~]# chmod 600 /etc/vsftpd/vsftpd_login
vsftpd使用的密码不是明文,需要生成对应的库文件:

[root@tpp ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
最后建立与虚拟账号相关的目录

[root@tpp ~]# mkdir /etc/vsftpd/vsftpd_user_conf


3、创建与用户对应的配置文件
用户的配置文件是单独存在,每个用户都建立与账号同名的配置文件。

[root@tpp ~]# cd /etc/vsftpd/vsftpd_user_conf/
[root@tpp vsftpd_user_conf]# vim test1          //写入以下内容
local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
注意:local_root 为该账号的家目录,anonymous_enable 用来限制是否允许匿名账号登陆,若为 NO 表示不允许匿名账号登陆,write_enable=YES 表示可写,local_umask 指定 umask 值,anon_upload_enable 是否允许匿名账号上传文件,anon_mkdir_write_enable 是否允许匿名账号可写。

接着创建test1用户的家目录/home/virftp/test1

[root@tpp vsftpd_user_conf]# mkdir /home/virftp/test1
[root@tpp vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
[root@tpp vsftpd_user_conf]# vim /etc/pam.d/vsftpd           //在最开头添加两行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
如下图:




注意:我的是32位系统,所以库文件路径为/lib/security/pam_userdb.so,若你的系统为64,那你的库文件是在/lib64/security/pam_userdb.so。

4、修改全局配置文件

[root@tpp vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf    //修改下面几项
anonymous_enable=YES 改为 anonymous_enable=NO
#anon_upload_enable=YES 改为 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO
#chroot_local_user=YES 改为 chroot_local_user=YES
在最后面增加:

guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf


最后启动 vsftpd 服务

[root@tpp vsftpd_user_conf]# /etc/init.d/vsftpd start
为 vsftpd 启动 vsftpd:                 [确定]
注意:如果服务启动不了,注意每行后面不要有空格;还有就是很有可能21端口被其他服务占用。

[root@tpp vsftpd_user_conf]# netstat -lnp |grep ":21"
不管是pure-ftpd还是vsftpd占用着,都一律杀死,释放出21端口,然后再启动vsftpd服务。

5、测试
测试过程和前面pure-ftpd 的一样。另外,如果用户登录不了,请查看一下/var/log/secure 日志。
(1)Windows下测试:在浏览器上输入:ftp://192.168.0.109,验证用户密码后登入:




(2)Linux客户端下测试




6、日志:
默认情况下,vsftp 不单独记录日志,也就是说不会输出到一个单独的文件中存储,而是统一存放在 /var/log/messages 文件中,可以使用 cat /var/log/messages |grep vsftp 命令查看。不过只反映了少量的信息,下面我们来设置将vsftpd服务器的日志单独输出到某个文件中。
(1)安装xferstats
[root@tpp ~]# yum install -y xferstats


(2)编辑配置文件
[root@tpp ~]# vim /etc/vsftpd/vsftpd.conf
xferlog_enable=YES
xferlog_file=/var/log/xferlog
dual_log_enable=YES
说明:
1)启用xferlog_enable=YES,表示将客户机登入服务器后上传或下载的文件具体信息记录下来。2)启用xferlog_file=/var/log/xferlog,表示将上传下载写到指定文件,也就是/var/log/xferlog 文件。30启用dual_log_enable=YES,表示启用双份日志,一份日志有xferlog记录,同时vsftpd.log也记录另一份日志,这两份日志并非互为备份,其内容不同,各有侧重。
(3)查看日志
1)vsftpd.log记录登入信息
[root@tpp ~]#cat /var/log/vsftpd.log
Thu Dec 31 15:51:51 2015 [pid 4433] CONNECT: Client "192.168.71.68"
Thu Dec 31 15:51:51 2015 [pid 4432] [test2] OK LOGIN: Client "192.168.71.68"


2)xferlog记录上传下载信息
[root@tpp ~]#cat /var/log/xferlog
Thu Dec 31 15:09:58 2015 1 192.168.71.68 0 /test1/1.txt b _ o g test2 ftp 0 * c
说明:

Thu Dec 31 15:09:58 2015 :访问时间
1 :传输文件所用时间
192.168.71.68 :远程主机
0 :文件大小,单位byte
/test1/1.txt :文件路径
b :传输类型(a:表示ASCII传输,用于文本类型;b:表示二进制传输,用于程序、多媒体文件)
_ :特殊处理标志(_:不做处理;C:压缩格式;U:非压缩格式;T:tar文件格式)
o :文件传输方向(o:从FTP服务器向客户端传输;i:从客户端向FTP服务器传输)
g :访问模式(a:匿名用户;g:来宾用户;r:真实用户)
test2 :用户名
ftp :FTP服务名称,通常为ftp
0 :认证方式,一般用0表示
* :认证用户ID,在无需认证时用*表示;如果vsftpd使用了PAM配置,这里会用虚拟用户名显示
c:传输状态(c:表示完成;i:表示传输异常)
7、后记:

后续如果还要创建新的账户的话,只需执行下面六步就行(以创建test2账号为例):(1)先添加账户信息
[root@tpp ~]# vim /etc/vsftpd/vsftpd_login      //写入如下标红内容
test1
123456
test2
abcdef
(2)再重新生成库文件
[root@tpp ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
(3)接着新建用户单独的配置文件
[root@tpp ~]# cd /etc/vsftpd/vsftpd_user_conf/
[root@tpp vsftpd_user_conf]# vim test2          //写入以下内容
local_root=/home/virftp/test2
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
(4)然后新建一个test2的家目录
[root@tpp vsftpd_user_conf]# mkdir /home/virftp/test2
(5)给予权限
[root@tpp vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
(6)重启vsftpd服务
[root@tpp virftp]# /etc/init.d/vsftpd restart
关闭 vsftpd:                            [确定]
为 vsftpd 启动 vsftpd:                  [确定]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vsftpd