vsftp

FTP传输模式

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图8-2a)、8-2b)所示,主被动模式详细区别如下:

q FTP主动模式:客户端从一个任意的端口NN>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

q FTP被动模式:客户端从一个任意的端口NN>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放2021端口即可

 

Vsftpd基于GPL开源协议发布,在中小企业中得到广泛的应用,Vsftpd可以快速上手,基于Vsftpd虚拟用户方式,访问验证更加安全。Vsftpd还可以基于MYSQL数据库做安全验证,多重安全防护。

 

一,安装vsftpd
yum install vsftpd
出现“Complete!”时意味着安装完成。

配置Vsftpd:
安装完之后我们要对它进行配置,才能正常使用。

编辑vsftpd的配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=YES 开启匿名用户访问;

local_enable=YES     启用本地系统用户访问;

write_enable=YES     本地系统用户写入权限;

local_umask=022     本地用户创建文件及目录默认权限掩码;

dirmessage_enable=YES 打印目录显示信息,通常用于用户第一次访问目录时,信息提示;

xferlog_enable=YES 启用上传/下载日志记录;

connect_from_port_20=YES FTP使用20端口进行数据传输;

xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入;

listen=NO Vsftpd  不以独立的服务启动,通过Xinetd服务管理,建议改成YES;

listen_ipv6=YES 启用IPV6监听;

pam_service_name=vsftpd     登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证;

userlist_enable=YES vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;

tcp_wrappers=YES     设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。

ftp的配置文件主要有三个,位于/etc/vsftpd/目录下,分别是:

  • ftpusers 该文件用来指定那些用户不能访问ftp服务器。
  • user_list 该文件用来指示的默认账户在默认情况下也不能访问ftp
  • vsftpd.conf vsftpd的主配置文件

添加开机自动启动,chkconfig vsftpd on   ,可以运行chkconfig –list进行查看

  • 匿名用户操作
  1. 切换目录cd /etc/vsftpd/

  2. 修改vsftpd.conf文件vi vsftpd.conf

  3. 如果允许匿名用户能够上传、下载、删除文件,需在/etc/vsftpd/vsftpd.conf配置文件中加入如下代码: 

anon_upload_enable=YES              允许匿名用户上传文件;
anon_mkdir_write_enable=YES         允许匿名用户创建目录;
anon_other_write_enable=YES         允许匿名用户其他写入权限。

匿名用户完整vsftpd.conf配置文件代码如下:

 

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

由于默认Vsftpd匿名用户有两种:anonymousftp,所以匿名用户如果需要上传文件、删除及修改等权限,需要ftp用户对/var/ftp/pub目录有写入权限,使用如下chownchmod任意一种即可,设置命令如下:

 

chown  -R  ftp  pub/
chmod   o+w  pub/

如上Vsftpd.conf配置文件配置完毕,同时权限设置完,重启vsftpd服务即可

service vsftpd start

 

  • 非匿名用户操作

实现Vsftpd系统用户方式验证,只需在Linux系统中创建多个用户即可,创建用户使用useradd,同时给用户设置密码,即可通过用户和密码登录FTP,进行文件上传、下载、删除等操作。Vsftpd系统用户实现方法步骤如下:

(1)设置FTP用户的账号,例如账号为“abc”,目录为/home/abc,且设置不允许通过ssh登录。

useradd -d /home/abc -s /sbin/nologin adc

(2)设置账号对应的密码,例如密码为“abc”

passwd 123456

  (3)  修改vsftpd.conf配置文件代码如下:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES 

linux登陆:

 

  • Vsftpd虚拟用户配置

Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

Vsftpd虚拟用户企业案例配置步骤如下:

(1) 安装Vsftpd虚拟用户需用到的软件及认证模块:

yum  install  pam*  libdb-utils  libdb*  --skip-broken  -y

 

  (2)  创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中abc1、abc2为虚拟用户名,123456为密码,如果有多个用户,依次格式填写即可:

abc1

123456

abc2

123456

(3) 生成Vsftpd虚拟用户数据库认证文件,设置权限700

db_load  -T  -t  hash  -f  /etc/vsftpd/ftpusers.txt  /etc/vsftpd/vsftpd_login.db
chmod  700  /etc/vsftpd/vsftpd_login.db

(4) 配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行:

auth      required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login

(5) 所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:

useradd    -s   /sbin/nologin    ftpuser

(6) 完整vsftpd.conf配置文件代码如下:

#global config Vsftpd 2017
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES

如上Vsftpd虚拟用户配置文件参数详解:

#config virtual user FTP
pam_service_name=vsftpd                  虚拟用户启用pam认证;
guest_enable=YES                            启用虚拟用户;
guest_username=ftpuser                        映射虚拟用户至系统用户ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf     设置虚拟用户配置文件所在的目录;
virtual_use_local_privs=YES                    虚拟用户使用与本地用户相同的权限。

(7) 至此,所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录

mkdir  -p    /etc/vsftpd/vsftpd_user_conf/

(8) 如下分别为虚拟用户abc1、abc2用户创建配置文件:

vim /etc/vsftpd/vsftpd_user_conf/abc1,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/jfedu001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

vim /etc/vsftpd/vsftpd_user_conf/abc2,同时创建私有的虚拟目录,代码如下:

local_root=/home/ftpuser/jfedu002
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

虚拟用户配置文件内容详解:

local_root=/home/ftpuser/jfedu002        jfedu002虚拟用户配置文件路径;
write_enable=YES                        允许登陆用户有写权限;        
anon_world_readable_only=YES            允许匿名用户下载,然后读取文件;
anon_upload_enable=YES                允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES           允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES       允许匿名用户其他权限,例如删除、重命名等。

(9) 创建虚拟用户各自虚拟目录:

mkdir -p /home/ftpuser/{abc1,abc2} ;chown -R ftpuser:ftpuser /home/ftpuser

重启Vsftpd服务,通过Windows客户端资源管理器或者linux服务器登录Vsftpd服务端.

 

posted on 2019-05-31 14:05  走路带风的帅界扛把子  阅读(240)  评论(0编辑  收藏  举报