vsftpd文件服务器基础与安装

Linux下安装vsftpd

一:vsftpd简介(linux)

vsftpd 是“very secure FTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件。

二:vsftpd特点(linux)

vsftpd是一款在Linux发行版本中最受推崇的FTP服务器程序,小巧轻快、安全易用,支持虚拟用户、支持带宽限制等功能。

三:vsftpd安装(linux)

安装环境

  • Centos 6.8 64位

vsftpd版本

  • vsftpd-2.2.2-21.el6.8=x86_64

1)安装

执行 yum -y install vsftpd

注意:

(1)是否使用sudo权限执行请根据您具体的环境来决定

(2)rpm -qa|grep vsftpd可通过这个检查是否已经安装vsftpd

(3)默认配置文件在 /etc/vsftpd/vsftpd.conf

2)创建虚拟用户

(1)选择在根或者用户目录下创建ftp文件夹:mkdir ftpfile,如:/ftpfile

(2)添加匿名用户: useradd ftpuser -d /ftpfile -s /sbin/nologin

(3)修改ftpfile权限:chown -R ftpuser.ftpuser /ftpfile

(4)重设ftpuser密码:passwd ftpuser(这里将设置为123456)

注意:是否使用sudo权限执行请根据您具体环境来决定

3)配置

(1)cd /etc/vsftpd

(2)sudo vim chroot_list

(3)把刚才新增的虚拟用户添加到此配置文件中,后续需要引用

(4):wq保存退出

四:vsftpd验证(linux)

1)执行sudo service vsftpd restart

注意:第一次启动时Shutting down vsftpd是failed不用理会,因为这是重启命令,保证Starting vsftpd是OK即代表vsftpd服务成功。

2)执行ifconfig查看运行vsftpd服务器的IP地址

未分类

3)打开浏览器访问:ftp://10.211.55.6。输入之前创建的ftp匿名用户账号和密码,例如用户名:ftpuser 密码:123456

4)或者通过ftp客户端软件进行连接。例如:cuteftp、filezilla、viperftp、flashftp、leapftp等进行连接ftp服务器,进行文件上传、下载验证。

ftpserver安装(windows)

安装系统环境

  • Windows7 64位

ftpserver

因为vsftpd官方不提供windows版,需要编译比较复杂,这里使用ftpserver绿色版教学使用

未分类

使用vsftpd搭建显式SSL/TLS加密的FTP服务器(FTPS)

最近在Hostens购买了立陶宛的大硬盘小鸡,用于存放备份数据,因此需要在服务器上搭建FTP,而通过普通FTP协议在公网传输数据具有一定的安全隐患,因此需要为FTP服务器配置SSL来对传输的数据进行加密。

服务端软件:vsftpd

以下是/etc/vsftpd/vsftpd.conf文件的SSL配置部分

vsftpd的基础及虚拟用户配置:

https://lonelyboy.org/post/34.html

使用FTP over SSL必须拥有SSL证书,证书获取方法可以使用openssl自签署或者通过letsencrypt的certbot获取证书。

#SSL配置部分

ssl_enable=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

force_anon_logins_ssl=YES

force_anon_data_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

require_ssl_reuse=NO

ssl_ciphers=HIGH

rsa_cert_file=服务器证书存放目录

rsa_private_key_file=服务器证书对应的私钥存放目录

centos6.5 vsftpd 虚拟用户

环境

  • SERVER:CENTOS6.5

  • CLIENT:WINDOWS10

要求

用windows10 访问 centos的vsftpd 使用虚拟用户ftp 密码为abc.123 进行访问使其有删除,写入权限

安装vsftpd 服务

未分类

创建一个文件存放用户名和密码
格式大约为:

user1
password
user2
password

未分类

未分类

使用db_load 命令生成出虚拟用户口令认证文件(如没有此命令 yum install db4-utils 进行安装)
选项-T允许应用程序能够文本文件转译载入进数据库由于我们之虚拟用户信息文件方式存储文件里了让Vsftpd应用程序能够通过文本来载入用户数据必须要使用选项
指定了选项-T定要追加子选项-t;子选项-t追加-T选项用来指定转译载入数据库类型
-f 参数面接包含用户名和密码文本文件文件内容:奇数行用户名、偶数行密码

未分类

编辑/etc/pam.d/vsftpd 把所有内容都#注释掉 然后添加下面两行
这里的auth是指对用户的用户名口令进行验证。
这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。

未分类

建立一个用户用来给我们的虚拟用户登陆

未分类

修改vsftpd配置文件(vi /etc/vsftpd/vsftpd.conf)指定虚拟用户 并开启虚拟用户权限

未分类

重启服务

未分类

连接成功

未分类

发现无法创建文件我们开启虚拟用户个人的配置文件

未分类

未分类

write_enable=YES #开放ftp的写权限
anon_world_readable_only=NO #开放ftp的下载权限
anon_upload_enable=YES #开放ftp的上传权限
anon_mkdir_write_enable=YES #开放ftp创建目录的权限
anon_other_write_enable=YES #开放ftp删除和重命名的权限

重启服务

创建

未分类

未分类

未分类

vsftpd 使用虚拟用户及单用户多目录的配置

一、配置vsftpd虚拟用户

1、安装vsftpd

yum -y install pam pam-devel db4 db4-tcl
yum -y install vsftpd

2、配置vsftpd.conf

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
#设成YES,允许匿名用户登陆
local_enable=YES
#允许/禁止本地用户登陆 注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES
#设定可以进行写操作。
local_umask=022
#设定上传后文件的权限掩码,文件644,文件夹755
dirmessage_enable=YES
#设定开启目录标语功能
xferlog_enable=YES
#设定开启日志记录功能。
connect_from_port_20=YES
#设定端口20进行数据连接
xferlog_std_format=YES
#设定日志使用标准的记录格式
listen=YES
#开启独立进程vsftpd,不使用超级进程xinetd。设定该Vsftpd服务工作在StandAlone模式下。
pam_service_name=vsftpd
#设定,启用pam认证,并指定认证文件名/etc/pam.d/vsftpd
userlist_enable=YES
#设定userlist_file中的用户将不得使用FTP
tcp_wrappers=YES
#设定支持TCP Wrappers
chroot_local_user=YES
#限制所有用户在主目录
#限制所有用户在主目录
#↓↓↓↓↓↓↓↓↓↓↓
#↓↓↓↓↓↓↓↓↓↓↓
#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
guest_enable=YES
#设定启用虚拟用户功能
guest_username=www
#指定虚拟用户的宿主用户
virtual_use_local_privs=YES
#设定虚拟用户的权限符合他们的宿主用户 
user_config_dir=/etc/vsftpd/vconf
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,
#一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

3、配置虚拟用户

创建虚拟用户配置文件存放路径

mkdir /etc/vsftpd/vconf

创建虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。
virtusers文件格式如下:

vim /etc/vsftpd/virtusers
username1
password123

生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照“一行用户名,一行口令”的格式将新用户名和口令添加进虚拟用户名单文件。
但是光这样做还不够,这样是不会生效的!还要再执行一遍“ db_load -T -t hash -f 虚拟用户名单文件 虚拟用户数据库文件.db ”的命令使其生效才可以!

4、设置认证文件PAM

编辑Vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上),添加如下行

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

#vim /etc/pam.d/vsftpd
auth    sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so    db=/etc/vsftpd/virtusers

#以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
这里的auth是指对用户的用户名口令进行验证。
这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。
再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

5、建立虚拟用户配置文件模版

创建ftp的目录,设置属组属主为www,应为我们上面指定虚拟用户的宿主用户是www,这样ftp用户才有权限对目录进行操作。

mkdir -p /data/www/virtual/

chown www.www -R /data/www/virtual/

vim /etc/vsftpd/vconf/vconf.tmp
local_root=/data/www/virtual/
#指定虚拟用户的具体主路径
anonymous_enable=NO
#设定不允许匿名用户访问
write_enable=YES
#设定允许写操作
local_umask=022
#设定上传文件权限掩码
anon_upload_enable=NO
#设定不允许匿名用户上传
anon_mkdir_write_enable=NO
#设定不允许匿名用户建立目录
idle_session_timeout=600
#设定空闲连接超时时间
data_connection_timeout=120
#设定单次连续传输最大时间
max_clients=10
#设定并发客户端访问个数
max_per_ip=5
#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000
#设定该用户的最大传输速率,单位b/s
cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/username1

6、测试配置

未分类

二、vsftpd单用户多目录的配置

在使用vsftpd过程中,我们会经常发现vsftpd在默认情况下一个用户(无论是系统用户还是虚拟用户)只能拥有一个目录,一般是根目录。
如果此时再要向该用户添加其它目录的话,比如系统的其他目录也需要此用户访
问,那么就无法直接添加了。

所以我们只能借助其他方式实现这个功能

一开始我想到了软连接的方式,结果是vsftpd不支持软连接,硬链接又不允许将硬链接指向目录。

在此我们使用的是 mount –bind 命令,很多人将这个命令理解为针对目录的硬连接,但这种想法是错的。
所以我需要注意一下两点:

1. mount –bind连接的两个目录的inode号码并不一样,只是目标目录的block被屏蔽掉,inode被重定向到原目录的inode (目标目录的inode和block依然没变,就是说目标目录只是隐藏不是删除,数据都没有改变,只是访问不到了)

2. 两个目录的对应关系存在于内存里,一旦重启挂载关系就不存在了,所以我们想要服务器重启之后还有效的话就需要写到/etc/rc.local

创建几个测试目录

mkdir /data/www/virtual/test{1,2}
mkdir /home/test{1,2}
chown -R www.www /home/test{1,2}
vim /etc/rc.local

#可读写挂载
mount --bind /home/test1/ /data/www/virtual/test1/
#只读挂载
mount --bind /home/test2/ /data/www/virtual/test2/
mount -o remount,ro /data/www/virtual/test2/

未分类

使用 source加载一下/etc/rc.local, 让它立即生效。

source /etc/rc.local

然使用 mount 查看挂载的结果。

未分类

如何解决vsftpd下显示的时间与系统时间不一致

vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、 Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。就是这么好的程序,有时候也能发生小错误:vsftpd下显示的时间与系 统时间不一致,怎么办呢,我来帮你解答!

ftp上来显示的时间与系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为它的时间的,所以和系统的时间可能会不一致。修改也很简单:

vi /etc/vsftpd/vsftpd.conf

在最后加入一行:

use_localtime=YES

存盘后,重启vsftpd:

service vsftpd restart

这样就行了。

一眼看完文章,是不是觉的小菜一碟,检查下你的vsftpd,是否有类似的错误,赶快动手吧!

centos 7 vsftpd服务器搭建及本地用户

centos 7 vsftpd服务器搭建及本地用户

1. 安装vsftpd server端

yum install -y vsfptd

2. 安装ftp客户端

yum install -y ftp

3. 编辑配置文件/etc/vsftp/vsftpd.conf

sudo cp /etc/vsftp/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
sudo vim /etc/vsftpd/vsftpd.conf

local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP service
chroot_local_user=YES
ls_recurse_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
local_root=/home/vsftpd
allow_writeable_chroot=YES
tcp_wrappers=YES
sudo useradd ftpuser -s /sbin/nologin

sudo echo "ftpduserpass" |passwd -stdin ftpuser

4. 创建ftp目录

mkdir -p /home/vsftpd
chown -R ftpuser /home/vsftpd
chmod -R 755 /home/vsftpd

5. 启动服务

systemctl start vsftpd
systemctl enable vsftpd

6. 放通防火墙

firewall-cmd --zone = public --add-port = 22/tcp --permanen
firewall-cmd --zone = public --add-port = 21/tcp --permanen
firewall-cmd --reload

7. 测试

ftp localhost

username :ftpuser
password : ftpduserpass

注:记得关闭selinux

Centos6.9安装vsftpd并配置多用户的方法

本文介绍了Centos6.9安装vsftpd并配置多用户的方法,分享给大家,具体如下:

一、安装vsftpd

#安装vsftpd
yum -y install vsftpd
#设置开机启动
chkconfig vsftpd on
#查看服务状态
service vsftpd status
#默认是关闭的,如下
# vsftpd is stopped

二、修改系统保留FTP

#添加组
groupadd -g 1002 vsftpd
#创建用户组目录
mkdir -p /home/vsftpd
#添加用户
useradd -c "FTP User" -d /home/vsftpd/vsftpd -g vsftpd -s /sbin/nologin -u 1002 vsftpd
useradd -c "FTP User" -d /home/vsftpd/test -g vsftpd -s /sbin/nologin test
#设置密码(格式:passswd 用户名),输入密码回车,再次输入密码回车
passwd vsftpd
#创建指定访问目录
mkdir -p /data/vsftpd
#更改权限
chown vsftpd:vsftpd /data/vsftpd
chmod -R 775 /data/vsftpd

可以查看添加进来的新用户

cat /etc/passwd
#如下
# vsftpd:x:1002:1002:FTP User:/home/vsftpd/vsftpd:/sbin/nologin
# test:x:1003:1002:FTP User:/home/vsftpd/test:/sbin/nologin

说下/bin/false跟/sbin/nologin的区别

1、/bin/false什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。

2、/sbin/nologin会礼貌的向用户显示一条信息,并拒绝用户登录:This account is currently not available.

3、有一些软件,比如一些ftp服务器软件,对于本地非虚拟账户,只有用户有有效的shell才能使用ftp服务。这时候就可以使用/sbin/nologin使用户即不能登录系统,还能使用一些系统服务,比如ftp服务。/bin/false则不行,这是二者的重要区别之一

三、修改配置文件

#备份原文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.txt
#生成新的配置文件
touch /etc/vsftpd/vsftpd.conf
#编辑配置文件
vim /etc/vsftpd/vsftpd.conf

粘贴下面这些配置进去

# Example config file /etc/vsftpd/vsftpd.conf
#
# 如果vsftpd处于独立模式,则这是它将侦听传入FTP连接的端口。
listen_port=21
#
# 登入目录
local_root=/data/vsftpd
#
# 是否允许匿名用户登录
anonymous_enable=NO
#
# 设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
local_enable=YES
#
# 设定允许进行写操作(上传、删除),默认为YES
write_enable=YES
#
# 是否使用本地时间
#use_localtime=YES
#
# 此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值:0(无限制)。
#max_clients=5
#
# 此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。
#max_per_ip=3
#
# 掩饰码
local_umask=002
#
# 是否允许匿名FTP用户上传文件。
#anon_upload_enable=NO
#
# 是否允许匿名FTP用户能够创建新目录
#anon_mkdir_write_enable=NO
#
# 激活目录消息 - 当远程用户进入某个目录时发送的消息。
dirmessage_enable=YES
#
# 设置为yes时,用户上传和下载文件都会被记录下来,记录文件位置与xferlog_file=/var/log/vsftpd/xferlog
xferlog_enable=YES
#
# 在vsftpd_log_file和xferlog_file文件之间切换登录文件信息,NO 写入 vsftpd_log_file, YES 写入 xferlog_file
xferlog_std_format=YES
#
# 设置另外一个vsftpd的日记文件,也可以不设置
dual_log_enable=YES
xferlog_file=/var/log/vsftpd/xferlog
#
# 设置日志目录
vsftpd_log_file=/var/log/vsftpd/vsftpd.log
#
# 端口样式连接始发的端口(只要名称不正确的 connect_from_port_20 启用),默认值:20
connect_from_port_20=YES
#
# 是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。 
#chown_uploads=YES
#
# 指定拥有匿名用户上传文件所有权的用户
#chown_username=whoever
#
# 远程客户端建立与PASV样式数据连接的连接的超时(以秒为单位),默认值:60。
#accept_timeout=60
#
# 远程客户端响应我们的端口样式数据连接的超时时间(秒)。默认值:60。
#connect_timeout=60
#
# 远程客户端可能在FTP命令之间花费的最长时间(以秒为单位)。如果超时触发,远程客户端将被启动。默认值:300
#idle_session_timeout=300
#
# 超时时间(以秒为单位),大概是允许数据传输停止而无进度的最大时间。如果超时触发,远程客户端将被启动。默认值:300
#data_connection_timeout=300
#
# 创建上传文件的权限。Umasks应用于此值的顶部。如果要上传的文件可执行,您可能希望更改为0777。默认值:0666
#file_open_mode=002
#
# 本地认证用户允许的最大数据传输速率(以字节为单位)。默认值:0(无限制)
#local_max_rate=0
#
# 建议您在系统上定义一个唯一的用户,ftp服务器可以用作完全独立且无特权的用户。
#nopriv_user=ftpsecure
#
# 是否启动异步传输功能
#async_abor_enable=YES
#
# 是否启用ASCII功能
ascii_upload_enable=YES
ascii_download_enable=YES
#
# 自定义登录显示的字符串
#ftpd_banner=Welcome to blah FTP service.
#
# 指定某个纯文本作为用户登录时显示的欢迎字眼,也可以放置一些让用户知道本FTP服务器的目录架构
#banner_file=/etc/vsftpd/welcome.txt
#
# 您可以指定一个不允许的匿名电子邮件地址的文件。 显然有助于打击某些DoS攻击。
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# 锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。
# 当chroot_local_user=YES,chroot_list_enable=YES时,chroot_list_file目录里面的用户不被chroot在主目录中。
# 当chroot_local_user=YES,chroot_list_enable=NO时,chroot_list_file目录里面的用户全部给被chroot在主目录中
chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
#
# 此选项默认值为NO , 此时ftpusers 文件中的用户禁止登录FTP 服务器;若此项设为YES ,则 user_list 文件中的用户允许登录 FTP 服务器,而如果同时设置了 userlist_deny=YES ,则 user_list 文件中的用户将不允许登录FTP 服务器,甚至连输入密码提示信息都没有,直接被FTP服务器拒绝
userlist_enable=YES
#
# 此项默认为YES ,设置是否阻扯user_list 文件中的用户登录FTP 服务器,设置为NO时只允许user_list 当中的用户使用ftp,对于后新建的用户起到屏蔽作用,如果想要使用ftp则必须加入这个列表文件中
userlist_deny=NO
#
# 当userlist_enable=YES,当userlist_deny=YES,这里面的用户不能登录,当userlist_deny=NO时,只有这里面的用户才能登录ftp 。
userlist_file=/etc/vsftpd/user_list
#
# 当启用“listen”指令时,vsftpd以独立模式运行,并在IPv4套接字上侦听。 该指令不能与listen_ipv6指令一起使用。
listen=YES
#
# 此指令允许侦听IPv6套接字。 要监听IPv4和IPv6套接字,您必须运行两个vsftpd副本和两个配置文件。请确保其中一个listen选项被注释!
#listen_ipv6=YES
#
# 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即/etc/pam.d/vsftpd 文件
pam_service_name=vsftpd
#
# 是否开启用虚拟用户功能
#guest_enable=YES
#
# 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
#guest_username=ftp
#
# 匿名客户端允许的最大数据传输速率(以字节为单位)。默认值:0(无限制)
#anon_max_rate=0
#
# 为匿名用户设置文件创建的umask的值。注意!如果要指定八进制值,请记住“0”前缀,否则该值将被视为基数10整数!默认值:077
#anon_umask=002
#
# 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
#user_config_dir=/etc/vsftpd/virtual_conf
#
# 如果要禁止PASV方法获取数据连接,请设置为NO。
pasv_enable=YES
#
# 设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内
pasv_min_port=20000
pasv_max_port=30000
#
# 默认值为NO。为YES时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。
#pasv_promiscuous=YES
#
# 如果您不想使用PORT方法获取数据连接,则设置为NO。
#port_enable=YES
#
# 默认值为NO。如果要禁用PORT安全检查,确保传出数据连接只能连接到客户端,请设置为YES。
#port_promiscuous=YES
#
# 表明服务器使用 tcp_wrappers 作为主机访问控制方式,tcp_wrappers 可以实现linux 系统中网络服务的基于主机地址的访问控制,在/etc 目录中的hosts.allow 和hosts.deny 两个文件用于设置tcp_wrappers 的访问控制,前者设置允许访问记录,后者设置拒绝访问记录。例如想限制某些主机对FTP 服务器12.36.126.141 的匿名访问,编缉/etc/hosts.allow 文件,如在下面增加两行命令:vsftpd:192.168.2.1:DENY 和vsftpd:192.168.2.20:DENY 表明限制IP 为192.168.2.1/192.168.2.20 主机访问IP 为12.36.126.141 的FTP 服务器,此时FTP 服务器虽可以PING 通,但无法连接
tcp_wrappers=YES
#

四、设置FTP用户信息

#建立限制用户访问目录的空文件
touch /etc/vsftpd/chroot_list

#添加ftp用户进来
vim /etc/vsftpd/user_list

#注释掉上面的用户,在后面加上
vsftpd
test

#创建日志文件
mkdir -p /var/log/vsftpd
touch /var/log/vsftpd/xferlog
touch /var/log/vsftpd/vsftpd.log

五、开启防火墙20000到30000端口

# 查看防火墙是否有端口,有就退出编辑,没有就执行下句
vim /etc/sysconfig/iptables

#添加端口
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 20000:30000 -j ACCEPT

#保存
/etc/init.d/iptables save

#另外需要注意,如果是阿里云的,还需要登录阿里云在安全组里面添加入方向规则

#重启iptables 服务
service iptables restart

六、重启vsftpd服务

#停止vsftpd 服务
service vsftpd stop

#启动vsftpd 服务
service vsftpd start

#重启vsftpd 服务
service vsftpd restart
可以查看ftp端口是否已经给占用,一般情况下是21端口

netstat -lnp|grep 21

以上就是本文的全部内容,希望对大家的学习有所帮助。

CentOS7部署vsftpd服务

vsftp安装 创建用户 并限定用户在自己的目录

1、查看是否已经安装了vsftpd

vsftpd -version

2、安装vsftpd(CentOS7)

yum install -y vsftpd

3、新建FTP目录

创建的FTP目录如下:

/data/KodServer/data/User/tomas/home

4、创建新用户

ftpname为你为该ftp创建的用户名,/data/KodServer/data/User/tomas/home 为登录进去后的位置

useradd -d /data/KodServer/data/User/tomas/home -s /bin/bash ftpname

5、为新建的用户设置密码

passwd ftpname

【备注:用cat etc/passwd可以查看当前系统用户】

6、设置主目录(更改登录时看到的目录,看个人需要更改,如果第4步已设置好,此步可忽略)

usermod -d /data/KodServer/data/User/tomas/home ftpname

7、添加用户组(这步可忽略)

groupadd ftpgroup

8、防火墙添加FTP服务

firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

解决办法:

①、查看ftp的Selinux状态:sestatus -b | grep ftp
②、在结果中可以看到: ftp_home_dir off
③、将状态改为on:setsebool -P ftp_home_dir on
④、重启vsftp服务:systemctl restart vsftpd.service

setsebool -P ftpd_full_access on

systemctl restart firewalld.service

9、配置只能访问自身目录(/data/KodServer/data/User/tomas/home),不能访问其他路径

修改/etc/vsftpd.conf

cd /etc/vsftpd/
vi vsftpd.conf

#去掉前面的注释
chroot_local_user=YES

ascii_upload_enable=YES
ascii_download_enable=YES

#文件末尾添加
allow_writeable_chroot=YES

保存,重启vsftpd

设置开机启动:

systemctl enable vsftpd.service

启动vsftpd服务

systemctl start  vsftpd.service

禁止ftp用户通过22端口登录ftp服务器:

由于需要限制ftp用户在自己的目录,在21端口下没有问题,但当ftp用户用sftp登录时,还是可以访问上级目录,于是禁止ftp用户ssh登录,切断22端口的通信。

首先,执行如下命令,找到nologin的shell:

vi /etc/shells

可以看到禁止登录的shell文件为/usr/sbin/nologin,然后执行如下命令:

usermod -s /usr/sbin/nologin tomas

如果要恢复tomas的ssh登录,执行如下命令:

usermod -s /bin/bash tomas

Ubuntu16.04安装vsftpd,搭建ftp服务

Ubuntu16为例:

1、有问题时完全卸载vsftpd

sudo apt-get purge vsftpd

2、安装vsftpd

udo apt-get install vsftpd

3、创建ftp用户

方法一:直接在系统设置添加用户

方法二:

创建用户目录 sudo mkdir /home/uftp

创建用户 sudo useradd -d /home/uftp -s /bin/bash uftp //uftp就是用户名称

修改密码 sudo passwd uftp //输入不显示

sudo chown uftp:uftp /home/uftp //修改完成后将目录/home/uftp的所属者和所属组都改为uftp,否则无权上传

4、配置vsftpd.conf,输入错误可以按ctrl加z键退出

sudo vi /etc/vsftpd.conf

编辑vsftpd.conf文件

write_enable=YES
//write_enable=YES前面的#号删除。按x删除,按esc退出编辑,按shift键加:号,输入wq保存或者wq!强制保存。注意为英文半角符号

5、启动停止重启服务

sudo /etc/init.d/vsftpd start //启动
sudo /etc/init.d/vsftpd stop //停止
sudo /etc/init.d/vsftpd restart //重启

Vsftpd使用MySQL验证实验

实验环境:

操作系统:CentOS 6.5 64位

未分类

实验步骤:

第1步:安装vsftpd并测试可用性(在vsftp.xruan.com,192.168.0.12上执行)

[root@CentOS6lsrv02 ~]# yum install -y vsftpd
[root@CentOS6lsrv02 ~]# yum install -y lftp
[root@CentOS6lsrv02 ~]# lftp 192.168.0.12
lftp 192.168.0.12:~>

第2步:安装mysql-server并创建用户和表(在mysql.xruan.com,192.168.0.11上执行)

[root@CentOS6lsrv01 ~]# yum install -y mysql-server &> /dev/null
[root@CentOS6lsrv01 ~]# rpm -q mysql-server
mysql-server-5.1.71-1.el6.x86_64

启动mysqld服务

[root@CentOS6lsrv01 ~]# service mysqld start
Initializing MySQL database:  WARNING: The host 'CentOS6lsrv01' could notbe looked up with resolveip.
This probably means that your libc libraries arenot 100 % compatible
with this binary MySQL version. The MySQLdaemon, mysqld, should work
normally with the exception that host nameresolving will not work.
This means that you should use IP addressesinstead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right placefor your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQLroot USER !
To do so, start the server, then issue thefollowing commands:

/usr/bin/mysqladmin -u root password'new-password'
/usr/bin/mysqladmin -u root -h CentOS6lsrv01password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removingthe test
databases and anonymous user created bydefault.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon withmysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the/usr/bin/mysqlbug script!

                                                             [ OK  ]
Starting mysqld:                                          [  OK  ]

运行 /usr/bin/mysql_secure_installation 按提示设置好mysql中root用户密码,这里我设置为“xruan”。

创建数据库并授予用户权限

mysql> CREATE DATABASE vsftpd;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL ON vsftpd.* TO vsftpd@'%'IDENTIFIED BY 'passwd';
Query OK, 0 rows affected (0.00 sec)
mysql> use vsftpd
Database changed

创建表

mysql> create table users (
    ->id int AUTO_INCREMENT NOT NULL,
    ->name char(20) binary NOT NULL,
    ->password char(50) binary NOT NULL,
    ->primary key(id)
    ->);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into users(name,password) values('xruan',password('xruan'));    插入1行用户信息
Query OK, 1 row affected (0.00 sec)
mysql> insert into users(name,password) values('redhat',password('redhat'));    插入1行用户信息
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES;    刷新权限
Query OK, 0 rows affected (0.00 sec)

第3步:配置vsftpd基于MySQL表的虚拟用户(在vsftp.xruan.com,192.168.0.12上执行)

首先必须完成基于MySQL表的认证,需要通过pam_mysql模块实现,先安装pam_mysql

先安装epel源

到官方网站下载epel源的rpm安装包

https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
[root@CentOS6lsrv02 ~]# rpm -ivh epel-release-latest-6.noarch.rpm
[root@CentOS6lsrv02 ~]# yum install -y pam_mysql &> /dev/null
[root@CentOS6lsrv02 pam.d]# rpm -q pam_mysql
pam_mysql-0.7-0.12.rc1.el6.x86_64

建立pam认证所需要的配置文件(/etc/pam.d/vsftpd.mysql)

[root@CentOS6lsrv02 ~]# vi /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.souser=vsftpd passwd=passwd host=192.168.0.11 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.souser=vsftpd passwd=passwd host=192.168.0.11 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

创建虚拟用户映射的系统用户

[root@CentOS6lsrv02 ~]# useradd -r -s /sbin/nologin vuser -d /var/ftproot
[root@CentOS6lsrv02 ~]# mkdir /var/ftproot
[root@CentOS6lsrv02 var]# chown vuser:vuser ftproot

编辑vsftpd配置文件 /etc/vsftpd/vsftpd.conf ,按如下设置:

listen=YES
anonymous_enable=YES
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=vsftpd.mysql
user_config_dir=/etc/vsftpd/vusers_config

为每个用户单独提供配置文件

user_config_dir=/etc/vsftpd/vusers_config  #在主配置文件(/etc/vsftpd/vsftpd.conf)中添加这个选项
[root@CentOS6lsrv02 vsftpd]# mkdir/etc/vsftpd/vusers_config
[root@CentOS6lsrv02 vsftpd]# vi vusers_config/xruan      #设置xruan用户有所有权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@CentOS6lsrv02 vsftpd]# vi vusers_config/redhat     #设置redhat用户只有upload权限
anon_upload_enable=YES

重启vsftpd服务

[root@CentOS6lsrv02 vsftpd]# service vsftpd restart
Shutting down vsftpd:                                      [ OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]

第4步:测试

[root@CentOS6lsrv02 vsftpd]# lftp -u xruan 192.168.0.12    <--使用xruan用户登录
Password:
lftp [email protected]:~> lcd /etc 
lcd ok, local cwd=/etc
lftp [email protected]:/> put fstab    <--可以上传文件
1224 bytes transferred
lftp [email protected]:~> rm fstab
rm ok, `fstab' removed   可以删除文件

[root@CentOS6lsrv02 vsftpd]# lftp -u redhat 192.168.0.12       <--使用redhat用户登录
Password:
lftp [email protected]:~> lcd /etc
lcd ok, local cwd=/etc lftp [email protected]:/>put selinux/config    <--可以上传文件
457 bytes transferred
lftp [email protected]:/> rm config
rm: Access failed: 550 Permission denied.(config)     <--不能删除文件

到此,实验成功!!!!!