CentOS7 vsftpd搭建

永久关闭SELinux:

这里吃过大坑,一定要关闭SELinux。

vi /etc/sysconfig/selinux
SELINUX=disabled

重启系统才会生效

临时关闭:
setenforce 0

查看:getenforce

安装vsftpd与配置文件路径:

yum install vsftpd
# 先备份原配置文件
sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf_backup

限制用户登录:/etc/vsftpd/ftpusers

/etc/vsftpd/ftpusers文件内的用户名禁止登录 FTP,文件内已有的默认禁止的用户名有 root、daemon、bin、sys 等。如果需要禁止某个用户登录,可将用户名添加到该文件(每行一个用户名)。该文件由 PAM 模块的/etc/pam.d/vsftpd配置文件指定:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

vsftpd 也有自己的限制用户登录的管理机制,详见/etc/vsftpd/vsftpd.conf文件中userlist_file字段介绍。
PS: 如果有本地用户没有在 /etc/ftpusers 文件内,却依然无法登录,打开sudo vim /etc/pam.d/vsftpd,找到下面这句话,注释掉,重启服务,再尝试登录:

#auth	required	pam_shells.so

使用本地账号登入并指定登入目录

添加本地FTP账号,并且不允许这些账号作为系统登入使用:
useradd test1 -s /sbin/nologin -d /home/test1
passwd test1
#-s /sbin/nologin,不允许该账号作为系统登入;
#-d /home/test1,手工指定该账号家目录,可选。

打开/etc/vsftpd/vsftpd.conf文件:配置如下:

local_root=/home/ftp 
chroot_local_user=YES 
# 默认chroot_local_user这条代码是被注释掉的,
# 如果没有配置local_root,而配置了chroot_local_user,会导致用户无法登入FTP问题。

注意:/home/ftp这个目录权限不能是777,否则会因为权限原因访问不了,可以配置成chmod 755 /home/ftp,然后添加一个文件夹配置成777权限,作为用户使用。也可以为每一个用户创建一个文件夹,然后使用:mkdir test、chown bruce test,把新建文件夹,作为用户的拥有者,那么这个用户就有增删改查的权限了。
vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的。
chroot_local_user=YES,账号锁定主目录,账号登入后访问主目录路径。

配置不同本地账号,主目录不同

经过测试,不能用账号的家目录做主目录,否则访问会失败:
如:test1账号主目录为/var/test1;test2账号主目录为/var/test2.

vim /etc/vsftpd/vsftpd.conf 
local_enable=YES 
local_root=/home/ftp 
chroot_local_user=YES 
# 用户配置目录 
user_config_dir=/etc/vsftpd/userconfig 

然后在vsftpd目录下,创建userconfig目录,并生成对应账号test1、test2的文件,然后在文件里指定主目录路径:

mkdir userconfig 
cd userconfig 
vi test1 
local_root=/var/test1 
vi test2 
local_root=/var/test2 

Vsftpd配置详解

文件路径 说明
/etc/vsftpd/vsftpd.conf 主配置文件
/usr/sbin/vsftpd Vsftpd的主程序
/etc/rc.d/init.d/vsftpd 启动脚本
/etc/pam.d/vsftpd PAM认证文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
/etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件。记录不允许访问FTP服务器的用户名单,管理员可以把一些对系统安全有威胁的用户账号记录在此文件中,以免用户从FTP登录后获得大于上传下载操作的权利,而对系统造成损坏。(注意:linux-4中此文件在/etc/目录下)
/etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件。这个文件中指定的用户缺省情况(即在/etc/vsftpd/vsftpd.conf中设置userlist_deny=YES)下也不能访问FTP服务器,在设置了userlist_deny=NO时,仅允许user_list中指定的用户访问FTP服务器。(注意:linux-4中此文件在/etc/目录下)
/var/ftp 匿名用户主目录;本地用户主目录为:/home/用户主目录,即登录后进入自己家目录
/var/ftp/pub 匿名用户的下载目录,此目录需赋权根chmod 1777 pub(1为特殊权限,使上载后无法删除)
/etc/logrotate.d/vsftpd.log Vsftpd的日志文件

匿名访问权限

默认情况下,匿名用户所有上传下载,所使用的用户都是ftp用户的权限,若要上传文件,则需要ftp用户有写的权限,若要下载,则需要ftp用户有读的权限。

#打开匿名用户模式 
anonymous_enable=YES

#打开全局写权限 
write_enable=YES 

#开启匿名用户上传权限
anon_upload_enable=YES 

#开启匿名用户创建目录的权限 
anon_mkdir_write_enable=YES

#开启匿名用户可以删除目录和文件,需自己添加 
anon_other_write_enable=YES

#开启匿名用户下载权限,需自己添加 
anon_world_readable_only=YES

#设置匿名用户可以下载自己上传的文件,需自己添加 
anon_umask=022

#设置匿名用户的登录目录(如需要,需自己添加并修改) 
anon_root=/home/ftp 

注意:/home/ftp这个目录权限不能是777,否则会因为权限原因访问不了,可以配置成755,然后添加一个文件夹配置成777权限,作为匿名用户使用。vsftpd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的。

连接超时:

配置空闲的用户会话的中断时间:如下配置将在用户会话空闲5分钟后被中断,以释放服务器的资源:

Idle_session_timeout=300

配置空闲的数据连接的中断时间:如下配置将在数据空闲连接1分钟后被中断,同样也是为了释放服务器的资源

Data_connection_timeout=60

配置客户端空闲时的自动中断和激活连接的时间:如下配置将使客户端空闲1分钟后自动中断连接,并在30秒后自动激活连接

Accept_timeout=60
Connect_timeout=30

active和passive模式的配置

控制端口为21,数据端口一般为20;

有两种工作模式:被动和主动模式,差别在于建立数据连接时是由谁来主动建立连接,被动模式是由客户端来主动连接服务器提供的数据侦听端口。而主动模式是由服务端来主动连接客户端,但是由于客户端的防火墙等策略,可能会失败。

默认是passive模式
在命令行输入vim /etc/vsftpd/vsftpd.conf:

active mode配置:
pasv_enable=NO (passive模式关闭)
pasv_min_port=3000
pasv_max_port=4000
port_enable=YES (active模式开启)
connect_from_port_20=YES (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。)

passive mode配置:
pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000

设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如3000-4000。
如果不配置pasv_enable=NO,默认是passive模式

限制最大连接数和传输速率

在FTP服务器的管理中,无论对本地用户还是匿名用户,对于FTP服务器资源的使用都需要进行控控制,避免由于负担过大造成FTP服务器运行异常,可以添加以下配置项对FTP客户机使用FTP服务器资源进行控制:
对vsftpd.conf文件中配置:

max_client:设置项 用于设置FTP服务器所允许的最大客户端连接数,值为0时表示不限制。例如max_client=100表示FTP服务器的所有客户端最大连接数不超过100个。
max_per_ip:设置项 用于设置对于同一IP地址允许的最大客户端连接数,值为0时表示不限制。例如max_per_ip=5表示同一IP地址的FTP客户机与FTP服务器建立的最大连接数不超过5个。
local_max_rate:设置项 用于设置本地用户的最大传输速率,单位为B/s,值为0时表示不限制。例如local_max_rate=500000表示FTP服务器的本地用户最大传输速率设置为500KB/s.
anon_max_rate:设置项 用于设置匿名用户的最大传输速率,单位为B/s,值为0表示不限制。例如ano_max_rate=200000,表示FTP服务器的匿名用户最大传输速率设置为200KB/s.

你可能感兴趣的:(Linux)