您现在的位置是:首页 > 日记日记
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:
上一篇:centos 安装typecho