vsftpd基于本地用户和mysql认证配置

虚拟用户认证


vsftp

vsftpd软件包140KB

官方站点:http://vsftpd.beasts.org/

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件

 /etc/vsftpd/ftpusers

 /etc/vsftpd/user_list                    //禁止登录的FTP用户列表, 仅提供一份FTP用户列表,是否禁止登录取决于主配置文件中的设置

 主配置文件

 /etc/vsftpd/vsftpd.conf


ftp的典型消息

ftp服务器发送消息,这些消息是ftp协议所定义的。下面列出典型的ftp消息:

消息号

125:数据连接打开,传输开始

200:命令OK

226:数据传输完毕

331:用户名OK

425:不能打开数据连接

426:数据连接被关闭,传输被中断

452:错误写文件

500:语法错误,不可识别的命令


FTP用户的类型

 

匿名用户:anonymousftp

本地用户:

 帐号名称、密码等信息保存在passwdshadow文件中

虚拟用户:

 使用独立的帐号/密码数据文件


user_list zhangsan 123456  /var/pub


 

sftpd 功能:

支持基于IP 的虚拟FTP 服务器  

支持虚拟用户

支持PAM xinetd/tcp_wrappers 的认证方式

支持两种运行方式:独立和Xinetd

支持每个虚拟用户具有独立的配置

支持带宽限制等

在稳定性方面:vsftpd 可以在单机(非集群)上支持4000 个以上的并发用户同时连接。据ftp.redhat.com 的数据,vsftpd 可以支持15000 个并发用户。

在速度方面:下载数据时,vsftpd的速度是WU-FTPd 的两倍;如果Linux的主机使用2.4.X 版本的内核,在千兆以太网上的下载速度可达86Mbytes/sec;

安全性是编写vsftpd 代码的初衷,除了与生俱来的安全性能之外,高速、稳定的性能是vsftpd 的两个特性


文本模式和二进制模式

文本传输器使用ASCII字符,并由回车键和换行符分开,而二进制不用转换或格式化就可传字符,二进制模式比文本模式更快,并且可以传输所有ASCII值,所以系统管理员一般将FTP设置成二进制模式。

 
二进制模式用来传送可执行文件,压缩文件,和图片文件。如果你用ASCII模式传,会显示一堆乱码,你必须重新用BINARY模式传。用HTML和文本编写的文件必须用ASCII模式上传,用BINARY模式上传会破坏文件,导致文件执行出错。 

 

FTPTCP连接方式

控制连接:

用于在FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息;

控制连接在整个FTP会话期间一直保持打开

数据连接:

用于传输数据,包括数据上传、下载、文件列表发送等;

数据传输结束后数据连接将终止

spacer.gif

主动连接

主动方式也称为PORT方式,是FTP协议最初定义的数据传输连接方式。

主要特点是:

FTP客户端通过向FTP服务器发送PORT命令,告诉服务器该客户端用于传输数据的临时端口号;

当需要传送数据时,服务器通过TCP端口号20与客户端的临时端口建立数据传输通道,完成数据传输;

在建立数据连接的过程中,由服务器主动发起连接,因此被称为主动方式


spacer.gif

被动连接

被动方式也称为PASV方式,被动方式的主要特点是:

FTP客户端通过向FTP服务器发送PASV命令,告诉服务器进入被动方式。服务器选择临时端口号并告知客户端

当需要传送数据时,客户端主动与服务器的临时端口号建立数据传输通道,完成数据传输

在整个过程中,由于服务器总是被动接收客户端的数据连接,因此被称为被动方式;

临时端口号(20*256+245=5365

spacer.gif

vsftpd.conf配置

spacer.gif

spacer.gif

spacer.gif

验证anonymous

匿名用户的下载目录/var/ftp/pub

spacer.gif

spacer.gif

本地用户登陆

本地用户登录后会进入用户主目录

spacer.gif

spacer.gif

spacer.gif

能够切换目录

spacer.gif

spacer.gif

所有的ftp控制命令

spacer.gif

umask022

spacer.gif

dirmessage

spacer.gif

spacer.gif

spacer.gif

spacer.gif

spacer.gif

定义logfie文件

spacer.gif

spacer.gif

spacer.gif

目录可写writeable

spacer.gif

spacer.gif

ftpd_banner

spacer.gif

ascii_upload

默认情况下,vsftpd 为了提高传输效率,禁止了ASCII 传输方式。虽然在ftp 客户软件中可以使用asc命令,但是传输文件时仍然使用二进制传输方式。

spacer.gif

系统banner

vi /etc/issue

spacer.gif

最大传输速度max_rate

设置最大传输速率限制

例如下面的配置:

local_max_rate=50000

anon_max_rate=30000

将使本地用户的最大传输速率为50kbytes/sec,匿名用户的传输速率为30kbytes/sec


spacer.gif

spacer.gif

spacer.gif

spacer.gif

userlist用户控制

spacer.gif

spacer.gif

test01加进user_list

spacer.gif

测试黑名单

test01加进user_list

 

spacer.gif

添加test02用户,不在列表中

spacer.gif

可正常访问

spacer.gif

测试白名单

spacer.gif

spacer.gif

所有用户限制在家目录

在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传;

如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot 选项

spacer.gif

spacer.gif

指定用户chroot_list

spacer.gif

spacer.gif

spacer.gif

spacer.gif

验证明文传输

spacer.gif

spacer.gif

spacer.gif

spacer.gif

max_per_ip

spacer.gif

spacer.gif

chown_username

spacer.gif

spacer.gif

spacer.gif

 

spacer.gif

session_timeout

1. 设置空闲的用户会话的中断时间

例如下面的配置:

idle_session_timeout=600

将在用户会话空闲10 分钟后被中断。

2. 设置空闲的数据连接的的中断时间

例如下面的配置:

data_connection_timeout=120

将在数据连接空闲2 分钟后被中断。

3. 设置客户端空闲时的自动中断和激活连接的时间

例如下面的配置:

accept_timeout=60

connect_timeout=60

将使客户端空闲1 分钟后自动中断连接,并在中断1 分钟后自动激活连接。

spacer.gif

设置客户端连接时的端口范围

例如下面的配置:

pasv_min_port=50000

pasv_max_port=60000

将使客户端连接时的端口范围在50000 60000 之间。这提高了系统的安全性。


nopriv_user

运行 vsftpd 需要的非特权系统用户,缺省是nobody

spacer.gif

listen

listen=YES  如果设置为 YES   vsftpd 将以独立模式运行,由vsftpd自己监听和处理连接请求)

tcp_wrappers

使用 tcp_wrappers 作为主机访问控制方式

spacer.gif

spacer.gif

spacer.gif

表明服务器使用 tcp_wrappers 作为主机访问控制方式,tcp_wrappers可以实现linux系统中网络服务的基于主机地址的访问控制,在/etc目录中的hosts.allowhosts.deny两个文件用于设置tcp_wrappers的访问控制,前者设置允许访问记录,后者设置拒绝访问记录。

配置vsftp认证

虚拟用户基于本地pam认证

spacer.gif

1.建立虚拟FTP用户的帐号数据库文件

spacer.gif

spacer.gif

 

spacer.gif

spacer.gif

2.创建FTP根目录及虚拟用户映射的系统用户

spacer.gif

spacer.gif

spacer.gif

spacer.gif

 

3.建立支持虚拟用户的PAM认证文件

spacer.gifspacer.gif

4.vsftpd.conf文件中添加支持配置

[root@localhost ~]# vim/etc/vsftpd/vsftpd.conf

spacer.gif

spacer.gif

虚拟用户映射为本地用户

spacer.gif

虚拟FTP账户访问测试spacer.gif

5.为个别虚拟用户建立独立的配置文件

spacer.gif

spacer.gifspacer.gif

spacer.gif

虚拟FTP账户访问测试spacer.gif

配置基于mysql认证

一、安装所需要程序

1、安装mysqlpam_mysql

 

# yum -y install  mysql-server mysql-devel pam_mysql vsftpd

 

注意pam_mysqlepel源提供

 

spacer.gif

二、创建虚拟用户账号

1.准备数据库及相关表

 

首先请确保mysql服务已经正常启动。而后,按需要建立存储虚拟用户的数据库即可,这里将其创建为vsftpd数据库。

mysql> create database vsftpd;

 

mysql> grant select on vsftpd.* tovsftpd@localhost identified by 'www.magedu.com';

mysql> grant select on vsftpd.* [email protected] identified by 'www.magedu.com';

mysql> flush privileges;

 

mysql> use vsftpd;

mysql> create table users (

 idint AUTO_INCREMENT NOT NULL,

 namechar(20) binary NOT NULL,

password char(48) binary NOT NULL,

 primary key(id)

 );

 

spacer.gif

spacer.gif

spacer.gif

spacer.gif

 

 

2、添加测试的虚拟用户

 

根据需要添加所需要的用户,需要说明的是,这里将其密码为了安全起见应该使用PASSWORD函数加密后存储。

 

mysql> insert into users(name,password)values('magedu1',password('magedu'));

mysql> insert into users(name,password)values('magedu2',password('magedu'));

spacer.gif

spacer.gif

三、配置vsftpd

spacer.gif

1.建立pam认证所需文件

 

#vi /etc/pam.d/vsftpd.mysql

添加如下两行

auth required /lib/security/pam_mysql.souser=vsftpd passwd=www.magedu.com host=127.0.0.1 db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.souser=vsftpd passwd=www.magedu.com host=127.0.0.1 db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2

 

 

注意:由于mysql的安装方式不同,pam_mysql.so基于unix sock连接mysql服务器时可能会出问题,此时,建议授权一个可远程连接的mysql并访问vsftpd数据库的用户。

spacer.gif

2.修改vsftpd的配置文件,使其适应mysql认证

 

建立虚拟用户映射的系统用户及对应的目录

# useradd -s /sbin/nologin -d /var/ftprootvuser

# chmod go+rx /var/ftproot

 

请确保/etc/vsftpd.conf中已经启用了以下选项

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

 

而后添加以下选项

guest_enable=YES

guest_username=vuser

 

并确保pam_service_name选项的值如下所示

pam_service_name=vsftpd.mysql

 

 

四、启动vsftpd服务

 

# service vsftpd start

# chkconfig vsftpd on

 

查看端口开启情况

 

# netstat -tnlp |grep :21

tcp       0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      23286/vsftpd

测试

使用虚拟用户登录,验正配置结果,以下为本机的命令方式测试,你也可以在其它Win Box上用IE或者FTP客户端工具登录验正

# ftp localhost

spacer.gif

 

 

五、配置虚拟用户具有不同的访问权限

 

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

 

1、配置vsftpd为虚拟用户使用配置文件目录

 

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config

 

2、创建所需要目录,并为虚拟用户提供配置文件

 

# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch tom jerry

 

3、配置虚拟用户的访问权限

 

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让tom用户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/tom文件,在里面添加如下选项即可。

anon_upload_enable={YES|NO}

anon_mkdir_write_enable={YES|NO}

anon_other_write_enable={YES|NO}

 

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

测试

magedu1 magedu2

spacer.gif

spacer.gif

spacer.gif

 

spacer.gif

 

日志排查

tail/var/log/secure 


本文出自 “网络技术交流学习” 博客,谢绝转载!

你可能感兴趣的:(vsftpd)