您现在的位置是:首页 > 日记日记

centos 搭建vsftp

薄荷2022-02-21【日记】1人已围观

简介vsftpd 是“very secure FTP daemon安全是其最大的特点之一。 vsftpd 是一个 UNIX 操作系统上运行的服务器的名称,如 Linux、BSD、Solaris、 HP-UNIX以上系统完全免费,开放源代码ftp支持许多其他 的服务器软件FTP 服务器不支持的特点。

例如:安全要求高,带宽限制好,可伸缩性好,可创建虚拟用户,支持IPv6.高速。

vsftpd是一款在Linux最受推崇的发行版FTP服务器程序。小巧轻快,安全易用。

特点:

①vsftpd 是以一般身份启动服务,所以对于 Linux 系统使用权限低,对于Linux 系统的危害相对降低。此外, vsftpd 亦利用 chroot() 此函式改变根目录,使系统工具不会被改变vsftpd 误用该服务;

②任何需要高执行权限的 vsftpd 指令是一个特殊的上层程序( parent process ) 控制 ,上层程序享有的高执行权限功能相当低,不影响Linux 以自身系统为准;

③所有来自 clients 端,想要使用上层程序提供的更高执行权限vsftpd 指令的需求被视为『不可信任的要求』在使用上层程序的功能之前,必须经过相当程度的身份确认。chown(), Login 要求等动作;

④另外,上述上层程序中仍使用 chroot() 限制用户执行权限的功能。

1.安装vsftpd

环境:CentOS Linux release 7.6.1810 (Core)

vsftpd版本:vsftpd.x86_64 0:3.0.2-25.el7

1.1、执行yum命令安装

[root@Sungeek ~]# yum -y install vsftpd

1.修改配置文件

根据以下修改配置文件

[root@Sungeek ~]# cd /etc/vsftpd

[root@Sungeek ~]# vim vsftpd.conf

复制代码

#匿名,默认no

anonymous_enable=NO

#必须为此设定值YES 时,在/etc/passwd内部账户可以通过实体用户登录我们vsftpd主机

local_enable=YES

#具有写权限

write_enable=YES

#本地用户创建文件或目录的掩码

local_umask=022

#当dirmessage_enable=YES这个项目可以设置为转让vsftpd找档案显示信息!也可以设置其他档名!

dirmessage_enable=YES

#当设定为YES记录用户的上传和下载日志。记录日志和下一个xferlog_file设置选项有关

xferlog_enable=YES

xferlog_std_format=YES

#上传和下载日志存储路径

xferlog_file=/var/log/xferlog

#开启20端口

connect_from_port_20=YES

#系统安全设置值:

#ascii_download_enable=YES(NO)

#如果设定为YES ,那么 client 可使用 ASCII 格式下载文件。

#一般来说,这个设置项目的启动可能会导致DoS 攻击,所以预设是NO。

#ascii_upload_enable=YES(NO)

#类似于上一个设置,但这个设置是针对上传的!预设是NO。

ascii_upload_enable=NO

ascii_download_enable=NO

#以下效果可通过搭配实现:

#①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户可以切换到其他目录;文件中未列出的用户不能切换到其他目录。

#②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户不能切换到其他目录;未列出文件的用户可以切换到其他目录。

#③当chroot_list_enable=NO,chroot_local_user=YES所有用户都不能切换到其他目录。

#④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#这个是pam我们把模块的名字放在/etc/pam.d/vsftpd

pam_service_name=vsftpd

#当然,我们都习惯了支持TCP Wrappers的啦!

tcp_wrappers=YES

#不添加以下报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()

allow_writeable_chroot=YES

#ftp的端口号

listen_port=60021

#启动被动式联机(passivemode)

pasv_enable=YES

#以上两个是和passive mode 使用的 port number如果你想用65400到65410 这个 11 port 可以这样设置被动数据连接

pasv_min_port=65400

pasv_max_port=65410

#FTP访问目录

local_root=/data/ftp/

复制代码

1.3.添加防火墙并打开相关端口

如果在这里进行测试,可以先关闭防火墙

[root@tsemongo01 vsftpd]# systemctl stop firewalld

如果是正式环境,最好打开防火墙,添加相应的端口

复制代码

#添加主端口

[root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=60021/tcp

success

#添加被动端口

[root@tsemongo01 vsftpd]# firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp

success

[root@tsemongo01 vsftpd]# firewall-cmd --reload

success

复制代码

2、创建FTP用户

添加FTP用户命令:useradd XXX

设置FTP用户密码:passwd XXX

[root@Sungeek vsftpd]# useradd -d /data/ftp/ -s /sbin/nologin ftpuser

[root@Sungeek vsftpd]# passwd ftpuser

查看FTP无法通过用户是否设置SSH只能使用登录FTP

[root@Sungeek vsftpd]# vim /etc/passwd

找到创建用户/bin/bash修改为/sbin/nologin

设置用户访问权限:

[root@Sungeek vsftpd]# chown -R ftpuser /data/ftp

3、设置vsftpd启动服务启动

[root@Sungeek ~]# systemctl enable vsftpd.service

4.启动暂停检查服务状态的命令

[root@Sungeek ~]# systemctl start vsftpd.service

[root@Sungeek ~]# systemctl status vsftpd.service

5、安装ftp验证客户端是否可以连接

随便用一个ftp客户端访问测试是否连接成功!我用的是FileZilla Client

6、常见问题

6.1、问题1:

这种情况是说明配置文件里面设置的chroot_list_file=/etc/vsftpd/chroot_list没有找到这个文件

直接去/etc/vsftpd目录cp一个user_list或者在配置文件中更名

6.2、问题2:

这种情况是selinux没有关闭,关闭selinux即可

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

Tags: