一、vsftpd 介绍
vsftpd 全称为very secure FTP daemon (非常安全的FTP进程),比FTP更安全
是一种守护进程, 更侧重安全,比其他FTP服务器在安全方面做的更到位
来介绍ftp
FTP: File Transfer Protocol 文件传输协议的缩写
FTP:属于C/S架构
端口:基于tcp的20、21端口
FTP会话:基于tcp的命令连接会话;基于tcp的数据连接会话。
FTP工作模式:①服务器工作在主动模式,主动联系客户端 (tcp,20端口)
②服务器工作在被动模式,客户端联系服务器(tcp,21端口)
1、vsftpd用户认证
vsftpd用户:系统用户、虚拟用户、 匿名用户
2、vsftpd数据传输安全
sftp: ssh提供的的基于ssh协议的ftp;
ftps: 基于ssl的ftp
3、vsftpd的响应码(类似于httpd)
1xx: 信息码
2xx: 成功状态码
3xx: 进一步提示补全信息的状态码
4xx: 客户端错误
5xx: 服务器端错误
4、vsftpd的认证文件及认证机制
认证文件/etc/pam.d/vsftpd
pam: Plugable Authentication Module插件式认证模块
pam和nsswith的区别
nsswitch:名称解析框架
模块化:/lib64/libnss*, /usr/lib64/libnss*
配置文件:/etc/nsswitch.conf
pam: 认证框架
模块化:/lib64/security/pam*.so
配置文件:/etc/pam.conf和/etc/pam.d/*
5、vsfptd 服务脚本:/etc/rc.d/init.d/vsftpd
vsfptd 配置文件:/etc/vsftpd/vsftpd.conf
vsftpd 主程序文件:/usr/sbin/vsftpd
vsfptd 数据文件:/var/ftp
6、ftp用户访问ftp服务时应该对其chroot
从而禁锢用户于其家目录中
chroot_local_user={Yes|No}
chroot_list_enable={YES|NO}
chroot_list_file=/etc/vsftpd/chroot_list
注意:每行一个用户
7、vfptd 匿名用户的配置
anonymous_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
注意:启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;
生效的权限取决于文件系统权限和服务权限的交集;
8、vsftpd 欢迎信息的定义:
banner_file=/path/to/some_banner_file
ftp_banner=some string
dirmessage_enable=yes
在某个ftp可访问的目录下创建.messages文件
9、vsftp控制登录用户的机制:
/etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义;
user_list配置文件有两种用法:
黑名单:
userlist_enable=YES
userlist_deny=YES
白名单
userlist_enable=YES
userlist_deny=NO
10、 vsftpd连接限制
max_clients: 最大并发连接数
max_per_ip: 每IP可同时发起并发请求
14、vsftpd传输速率控制
anon_max_rate: 匿名用户的最大传输速率,单位是“字节/秒”;
local_max_rate: 本地用户
15、vsftpd上传文件的umask
anno_umask: 匿名用户上传文件的umask;
local_umask:
16、修改匿名用户上传文件的属主和属组:
chown_uploads=YES
chown_username=someuser
17、vsfptd虚拟用户:
所有的虚拟用户会映射一个系统用户,访问时的文件目录是为此系统用户的家目录;
虚拟用户:
hash编码的文件:
奇数行为用户名,偶数行为密码
关系型数据库:
pam-mysql实现认证
二、安装基于用户认证的vsftpd
1、安装所需程序
# yum -y install vsftpd mysql-server mysql-devel pam_mysql
注意:pam_mysql由epel源提供
2、创建虚拟用户帐户
2.1 准备数据库及相关表
mysql> create database vsftpd; mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsfptd';mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsfptd';mysql> flush privileges; mysql> use vsftpd;mysql> create table users ( -> id int AUTO_INCREMENT NOT NULL, -> name char(20) binary NOT NULL, -> password char(48) binary NOT NULL, -> primary key(id) -> );
2.2 添加测试的虚拟用户
mysql> insert into users(name,passwd) values('jun','2597758');mysql> insert into users(name,passwd) values('shun','2597758');
三、配置vsfptd
3.1 建立pam认证所需文件
#vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
3.2 修改vsftpd的配置文件,使其适应mysql认证
建立虚拟用户映射的系统用户及对应的目录#useradd -s /sbin/nologin -d /var/ftproot vuser#chmod go+rx /var/ftproot 请确保/etc/vsftpd.conf中已经启用了以下选项anonymous_enable=YESlocal_enable=YESwrite_enable=YESanon_upload_enable=NOanon_mkdir_write_enable=NOchroot_local_user=YES 而后添加以下选项guest_enable=YESguest_username=vuser 并确保pam_service_name选项的值如下所示pam_service_name=vsftpd.mysql
四、启动vsftpd服务并添加为开机启动
#service vsftpd start 重启服务#chkconfig --add vsftpd 添加为系统进程#chkcofnig --list vsftpd 查看进程开机状态#ss -ntl | grep 21 查看端口21是否开启
已添加为开机启动
端口为开启启动
五、win7客户端登陆vsftpd服务器测试
本机测试
OK~
本人技术有限,不足之处请大家耐心指出
ps:每天一点点