前面一篇文章介绍了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: [确定]