VSFTPD服务

VSFTP(Very Secure FTP。非常安全的FTP)

1、FTP工作模式

(1)主动模式:

   在FTP的主动模式下FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。当完成THree-Way  Handshake后,连接就成功建立,但这仅是控制连接的建立。当两端需要传送数据的时候,客户端通过控制连接用一个port command告诉服务器,客户端可以用另一个TCP端口做数据通道,然后服务器用20端口和刚才客户端所通知的TCP端口建立数据连接。

  1. 被动模式

在FTP的被动模式下,FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接,完成控制连接的建立。当两端需要传送数据的时候,客户端通过命令通道发送一个PASV command给服务器要求进入被动传输模式,然后服务器随机选择一个TCP端口,并用控制连接告诉客户端,客户端用另一个TCP端口连接刚才服务器指定的TCP端口来建立数据通道。

 

2、安装vsftpd服务

vsftpd-2.0.5-16.el5-4.1

3、配置vsftp服务器

(1)匿名访问的FTP服务(匿名用户对应的系统用户为ftp,其宿主目录/var/ftp/也就是匿名访问vsftpd服务时所在的FTP根目录)

chown ftp /var/ftp/pub    //使匿名用户ftp对该目录拥有写入权限

ls -ld /var/ftp/pub       

vi /etc/vsftpd/vsftpd.conf

anonymous_enable=yes      //允许匿名用户访问

local_enable=no           //若不需启用本地用户,可将此项设为no

anon_umask==022           //设置匿名用户上传数据的权限掩码

anon_upload_enable=yes       //允许匿名上传文件

anon_mkdir_write_enable=yes   //允许匿名用户创建目录

 

service vsftpd start   

测试匿名ftp服务器

ftp 192.168.1.1

用户名为ftp/anonymous

直接回车

ls

lcd /opt

get *.*

cd pub

put 1.doc

ls

quit

cat 1.doc

rm 1.doc

 

(2)基本的本地用户验证的ftp服务

vi /etc/vsftpd/vsftpd.conf

local_enable=yes

write_enable=yes           //开启本地用户的写入权限

local_umask=077          //提高上传文件的权限

在一些情况下使用FTP 服务的时候,只为了让用户通过FTP方式访问服务器,而不需要登录到系统,可以采用下述方法(在建立用户的时候指定使用nologin脚本)实现:

Useradd  tonyzhang  -s  /sbin/nologin

默认root不允许登录,在ftpusers中文件中被禁止

ftp://wayne@192.168.1.1或ftp://wayne:123456@192.168.1.1

通过ftp命令访问ftp服务器。只要输入正确的用户名,密码验证即可。

ftp 192.168.1.1

name:wayne

password:123456

 

local_enable配置项开放以后,默认情况下所有的系统用户都可以登录到此ftp服务器

若只希望对一小部分系统用户开放ftp服务,则需要开放用户列表控制的相关配置项

 

使用user_list用户列表文件,只允许laya,vanko,hunter这三个本地用户登录

vi /etc/vsftpd/user_list  

laya

vanko

hunter                                         //添加这三行,并清空其他内容

vi /etc/vsftpd/vsftpd.conf  

userlsit_enable=yes                            //启用user_list用户列表文件

userlist_deny=no                               

 

不禁用user_list列表中的用户,且仅允许列表中的用户登录(yes表示仅禁止列表中用户登录)

ftpusers文件相当于黑名单,为vsftpd服务器提供了一份禁止登录的用户列表  

service vsftpd reload   

 

 

 

 

  1. 基于虚拟用户的ftp服务

     Vsftpd支持将用户及密码保存在本地数据文件,数据库(mysql)或LDAP中,相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理型。对于需要提供下载服务,但又不希望所有人都可以匿名下载同事又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种很好的解决方案。

     通过本地数据文件实现虚拟用户访问时,首先需要建立一个文件,将所有用户和密码保存到该文件中,这种方法主要适用在用户比较少及变化不频繁的情况下。配置方法如下。

(1)适用如下命令安装用于生成数据库的软件包db-utils:

rpm  -ivh  db4-utils-4.3.29-9.fc6.i386.rpm    

①在/etc/vsftpd/下建立vlogin.txt文件,用来存储虚拟用户的用户名和密码

vi /etc/vsftpd/vusers.list

Tony

123.com

Tom

123.com           奇数行:用户名   偶数行:密码

②生成数据库

保存虚拟帐号和密码的文本文件无法被系统帐号直接调用哈~我们需要使用db_load命令生成db数据库文件

 cd /etc/vsftpd

 db_load -T -t hash -f vlogin.txt vlogin.db

修改数据库文件访问权限

数据库文件中保存着虚拟帐号的密码信息,为了防止非法用户盗号哈,我们可以修改该文件的访问权限。生成的认证文件的权限应设置为只对root用户可读可写,即600

 chmod 600 /etc/vsftpd/vlogin.db

 ls -lh /etc/vsftpd/vlogin.db

-rw------- 1 root root 12K 04-08 17:17 /etc/vsftpd/vusers.db

-rw------- 1 root root  18 04-08 17:05 /etc/vsftpd/vusers.list

 

③编辑pam文件,注释掉上面的行,添加下面两行,如果使用ftpusers文件,则保留file=/etc/vsftpd/ftpusers的行

 vi /etc/pam.d/vsftpd

#%PAM-1.0

auth    required pam_userdb.so db=/etc/vsftpd/vusers

account required pam_userdb.so db=/etc/vsftpd/vusers

④添加一个系统用户来对应虚拟用户,光有虚拟用户是无法登录的,我们需要让虚拟用户对应一个系统实际的用户,这样所有的用户登录之后就会进入到系统实际用户的家目录,我们在通过给各个虚拟用户来分配不同的权限

 useradd -g ftp -s /sbin/nologin -d /var/share vuser

 

修改vsftpd配置,添加如下内容

vi /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd        //vsftp使用的pam模块为vsftpd

user_config_dir=/etc/vsftpd/vuserconfig  //虚拟行号权限配置的主目录为vuserconfig

guest_enable=yes                //允许使用虚拟用户登录FTP

guest_username=vuser             //虚拟用户所对应的系统用户为ftp3

//max_clients=1                   ftp最大接入客户端数

//max_per_ip=1                    每个ip地址的最大连接数

#userlist_enable=YES

tcp_wrappers=YES

为不同的虚拟用户建立独立的配置文件

 

mkdir /etc/vsftpd/vuserconfig

cd /etc/vsftpd/vuserconfig

touch tony

vi tony

anon_upload_enable=yes  允许上传文件

anon_mkdir_write_enable=yes    允许创建文件夹

 

service vsftpd reload

 

 

 

vsftpd服务的其他常用配置

修改vsftpd服务的监听地址,端口

listen=yes              

listen_address=192.168.1.1

listen_port=2121

允许使用ftp服务器的被动模式

pasv_enable=yes

pasv_min_port=24500

pasv_max_port=24600

限制ftp连接的并发数、传输速度

max_clients=20                 //限制并发客户连接最多20个

max_per_ip=2                   //限制每个ip地址的连接数最多2个

anan_max_rate=50000            //限制匿名用户传输速率50kb/s

local_max_rate=200000          //限制本地用户传输速率为200kb/s

 

 

 

db_load命令 – 生成db数据库

 

db_load命令的作用是将用户信息文件转换为数据库并使用 hash 加密,如果需要保存虚拟帐号和密码的文本文件且不让被系统帐号直接调用,我们就需要使用db_load 命令生成db数据库。

语法格式:db_load [参数] [文件]

常用参数:

-t

hash使用hash码加密

-f

指定包含用户名和密码文本文件。此文件格式要示:奇数行用户名、偶数行密码

参考实例

新建一个文件users.txt 把用户名密码放入其中:

[root@linuxcool ~]# db_load -T -t hash -f /users.txt /users.db

指定数据库类型为btree,指定数据库环境主目录:

[root@linuxcool ~]# db_load -T -t btree -h /root -f /users.txt /users.db

数据库为recno把用户名密码放入vsftpd_login.db:

[root@linuxcool ~]# db_load -T -t recno -f /etc/vsftpd/logins.txt /etc/vsftd/vsftpd_login.db

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值