暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于Centos7.4搭建VSFTP服务器

Linux日常小实验 2018-08-15
462

实验环境:Centos7.4 +VSFTP服务器

实验目的:搭建VSFTP服务器,创建虚拟用户登录VSFTP服务器

实验步骤:

理论知识介绍:FTP主动模式&FTP被动模式

FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。

FTP主动模式

FTP被动模式

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

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

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

###理论知识结束。有需要更深层次讲解的,请百度vsftpd原理。

实战一:VSFTP服务器的安装

# yum install  vsftpd -y

验证是否成功安装(可在安装前与安装后运行做对比)

# rpm -qa | grep vsftpd

启动vsftpd服务

# service vsftpd start

软件安装与服务启动已完成,是不是非常简单。

实战二、VSFTP服务器的配置

配置文件/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服务器。

看到此处读者应该有疑问,你在开篇引用了主动模式跟被动模式,配置文件里压根就没有什么主动模式跟被动模式?配置文件如何配置来体现这两种模式啊?

此配置文件默认为主动模式,如果需要被动模式需要添加如下配置:

pasv_enable=YES

pasv_min_port=80000

pasv_max_port=80100

本小节对配置文件的内容作了简述,注释了主动模式与被动模式如何切换。并对FTP在windows的简单实用做了简述。

在windows浏览器里面输入:ftp://ip地址

实战三、Vsftpd匿名用户配置

Vsftpd默认以匿名用户访问,匿名用户默认访问的FTP服务器端路径为:/var/ftp/pub。

匿名用户访问的开关:

在配置文件中/etc/vsftpd/vsftpd.conf修改 anonymous_enable参数,YES表示开启,NO表示关闭。

匿名用户只有查看权限,无法创建、删除、修改。如需调整则需要以下两步:

a、调整权限则使用如下参数:

anon_upload_enable=YES                 允许匿名用户上传文件;

anon_mkdir_write_enable=YES         允许匿名用户创建目录;

anon_other_write_enable=YES         允许匿名用户其他写入权限。

b、用户对文件夹有可读可写的权限。默认Vsftpd匿名用户有两种:anonymous、ftp

# cd /var/ftp

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

# service vsftpd restart

在windows客户端验证。

实战四、vsftpd系统用户配置

匿名用户适合于没有隐私的文件,对于有隐私的文件如何配置呢?可以使用linux操作系统自带的用户配置。

a、查询操作系统有哪些系统用户

# cat  /etc/passwd

增加一个新用户,HH

# useradd HH

# passwd HH

123456

在查看一下/etc/passwd文件,增加了HH用户账号。

b、修改配置文件/etc/vsftpd/vsftpd.conf,只把默认的允许匿名用户访问,从yes修改为No,重启vsftpd服务

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

c、验证

在windows操作系统地址栏里,输入ftp://10.178.243.11

试一试上传跟下载的功能。

实战四、Vsftpd虚拟用户配置

如果服务器为公司的FTP站点,有对公众的匿名站点,有仅对私人开放的文件夹,用户数量能达到几百数量级,那单单的使用操作系统用户配置是不满足需求的,而且危及系统安全管理,也不利于用户管理。

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

a、安装Vsftpd虚拟用户需用到的软件及认证模块:

# yum  install  pam  libdb-utils  libdb   -y

b、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt

第一行:用户名user001

第二行:密码123456

第三行:用户名user002

第四行:密码123456

依次类推,随便写,不要有什么顾虑,只要不跟操作系统上用户重名即可。例如 user001,123456,user002,123456

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

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

# chmod  700  /etc/vsftpd/vsftpd_login.db

此命令为了生成vsftpd_login.db,并将权限设置为700

d、配置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

e、所有用户映射至操作系统特定用户下

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

# useradd    -s   /sbin/nologin    ftpuser

d、调整配置文件/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

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

#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   ###虚拟用户使用与本地用户相同的权限

e、创建虚拟用户配置文件

所有虚拟用户在ftpuser用户的家目录(/home/ftpuser)里实现了文件的上传与下载,可以在/etc/vsftpd/vsftpd_user_conf(此文件为新建)目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:

# mkdir -p /etc/vsftpd/vsftpd_user_conf/

f、为虚拟用户创建配置文件

分别为虚拟用户user001、user002用户创建配置文件

# vi /etc/vsftpd/vsftpd_user_conf/user001

local_root=/home/ftpuser/user001      #user001虚拟用户配置文件路径

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    ###允许匿名用户其他权限,例如删除、重命名等


user002也照此处理

g、在ftp的家目录下建立文件夹,修改文件夹权限

# mkdir -p /home/ftpuser/user001
# mkdir -p /home/ftpuser/user002
# chown -R ftpuser:ftpuser /home/ftpuser

# service vsftpd restart

在windows系统的地址栏输入ip地址,此时可以使用匿名登录也可以右键选择登录,然后输入user001,密码123456,进入到专有账户中。

如果在/etc/vsftpd/ftpusers.txt里面新增用户需要重复c&g两个步骤。

如果您喜欢我的文章,请长按以下图片关注我的公众号,学习Linux的路上,期待与您同行。


文章转载自Linux日常小实验,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论