vsftpd 通用配置---简易版

需求:创建一个ftp服务器,登录账号访问指定目录,不允许匿名访问,

环境:centos7.8 

软件:vsftpd (从iso安装即可)

好久没有配置过了。网上找个文档配置,发现很多很多都是不能用的,或者只是有个参数解释(是否成功全靠自己发挥和测试),以下我将配置和测试好的方法记录,如下:

开始了~~~~~~~~~~~~~~~~~~~

软件安装就不说了,这个自己发挥吧。

首先我要创建一个ftpuser的账号,指定这个账号ftp访问到/ftpdata目录

useradd –M –d /ftpdata –s /bin/bash ftpuser

设置密码:echo 123456 | passwd ftpuser --stdin

 # 创建ftp数据目录

mkdir /ftpdata

# 授权,否则ftpuser账号无权限

chown ftpuser:ftpuser /ftpdata/

注意:本地账号登录模式,创建的账号必须是/bin/bash模式,否则无法登录。(这个要注意,经过测试使用/sbin/nologin不好用)

接下来重点到了,配置vsftpd.conf的配置文件

首先我们要了解一下ftp分主动模式和被动模式2种

主动模式:客户端与服务器端的21端口建立连接,然后客户端会发送随机端口n(n>1024)到服务器端作为数据传输端口,然后服务器端会使用20端口主动连接客户端的数据端口,进行数据传输。(注意,是服务器端主动发起连接客户端的随机端口,如果客户端有防火墙,可能会出问题)

vsftpd.conf中的配置为:

Pasv_enable = no

被动模式:客户端与服务器端的21端口建立连接,然后服务器端会返回n(n>1024)端口到客户端作为数据传输端口,客户端接收到后,主动发起到服务器端的n数据端口进行数据传输。

配置为:

Pasv_enable = yes

限定端口范围:

Pasv_min_port=30000

Pasv_max_port = 30999

vsftpd.conf配置文件内容:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
chown_username=ftpuser
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=NO
local_root=/opt/ftpdata
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
allow_writeable_chroot=YES
use_localtime=YES
pasv_enable=YES
pasv_min_port=30060
pasv_max_port=30090

以上参数对应解释:

#关闭匿名访问

anonymous_enable=NO

# 允许本地用户登录

local_enable=YES

# 登录用户具有写权限

write_enable=YES

# 新增文件默认umask:666-022=644(权限)

local_umask=022

# 启用日志

xferlog_enable=YES

# 上传文件默认用户

chown_username=ftpuser

# 日志

xferlog_file=/var/log/xferlog

# 日志格式

xferlog_std_format=YES

# 锁定chroot_list列表用户不允许切换到上级目录,只在指定根目录下

chroot_local_user=NO

# 指定登录账号访问的根目录

local_root=/opt/ftpdatau

# 启用chroot_list_file配置项指定的用户列表文件

chroot_list_enable=NO

#chroot_list_file=/etc/vsftpd/chroot_list

listen=NO

listen_ipv6=YES

# 使用默认pam认证账号

pam_service_name=vsftpd

# 启用黑白名单,

userlist_enable=YES

# 只允许在user_list中的用户可以登录,在VSFTP启动时依然会去检查#/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

userlist_deny=NO

#开启tcp_wrappers支持 

tcp_wrappers=YES

# 运行账号登录具有写权限

allow_writeable_chroot=YES

#使用本地系统时间

use_localtime=YES

# 被动模式

pasv_enable=YES

# 被动模式开启的数据传输口

# 被动模式最小端口号30060

pasv_min_port=30060

# 被动模式最大端口号30090

pasv_max_port=30090

#空闲连接超时 
idle_session_timeout=600 

#数据传输超时 
data_connection_timeout=120 

#PAVS请求超时 
ACCEPT_TIMEOUT=60 

#可接受的最大client数目 
max_clients=100

#本地用户的传输比率(b/s) 
#local_max_rate=5120000

配置完成后。要重启服务

systemctl restart vsftpd

最后,最后,最重要的来了:

/etc/vsftpd目录文件说明:

/etc/vsftpd/ftpusers                控制登陆系统用户的机制,出现在该文件中的用户不允许使用ftp服务器

/etc/logrotate.d/vsftpd            滚动日志配置文件

/etc/vsftpd/user_list               配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO实现黑白名单此处需要注意的是:黑白名单的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny选项默认为YES(黑名单),即该文件中出现的用户不允许登陆VSFTP,就算手动添加userlist_deny=NO(白名单)即只允许该文件中出现的用户允许登陆VSFTP,在VSFTP启动时依然会去检查/etc/vsftpd/ftpusers文件并且禁止该文件中的用户登录

/etc/vsftpd/vsftpd.conf             VSFTP主配置文件,所有的配置选项必须顶格写,配置文件中#后带空格的是说明,不带空格的是注释掉的配置选项

修改如下:

ftpusers:文件中是系统的一些默认账号,不动,这个里面的账号是不能够登录ftp的

user_list:清空这个文件,将新用户:ftpuser 添加进来,表示只运行ftpuser这个用户能够登录ftp系统,如果有其他账号,那么就添加到这个文件中。(切记,登录ftp的账号不可以在ftpusers中)

 

结束~~~~~~~~以上为亲测。

另外增加个其他的变动:要求只允许账号登录后在当前账号的根目录下,以上配置修改如下:

# 锁定chroot_list列表用户不允许切换到上级目录,只在指定根目录下

chroot_local_user=NO

# 启用chroot_list_file配置项指定的用户列表文件

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

userlist_enable=YES

新建chroot_list文件,并添加需要登录系统的账号

这个方法需要自己测试一下。

原文地址:https://www.cnblogs.com/zy6103/p/13710572.html