CentOS7 配置 vsftpd 服务
Posted Technofiend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7 配置 vsftpd 服务相关的知识,希望对你有一定的参考价值。
1、安装vsftpd
yum install -y vsftpd
2、编辑配置文件
vi /etc/vsftpd/vsftpd.conf
#是否开启匿名用户,匿名都不安全,不要开
anonymous_enable=NO
#允许本机账号登录FTP
local_enable=YES
#允许账号都有写操作
write_enable=YES
#local_umask的意思是指:
# 文件目录权限:777-022=755
# 文件权限:666-022=644
# 这有点反人类了,并且没有人跟我说是减去的。注意理解!!!
local_umask=022
#匿名用户是否有上传文件的功能,不要开
#anon_upload_enable=YES
#匿名用户是否有创建文件夹的功能,不要开
#anon_mkdir_write_enable=YES
#进入某个目录的时候,是否在客户端提示一下
dirmessage_enable=YES
#日志记录
xferlog_enable=YES
#开放port模式的20端口的连接
connect_from_port_20=YES
#允许没人认领的文件上传的时候,更改掉所属用户
#chown_uploads=YES
#chown_uploads=YES的前提下,所属的用户
#chown_username=whoever
#日志存放的地方
#xferlog_file=/var/log/xferlog
#日志成为std格式
xferlog_std_format=YES
#用户多久不管,服务器会主动断开连接,单位秒
#idle_session_timeout=600
#数据连接超时
#data_connection_timeout=120
#以 ftpsecure 作为此一服务执行者的权限。
#因为 ftpsecure 的权限相当的低,因此即使被入侵,入侵者仅能取得nobody 的权限喔!
#nopriv_user=ftpsecure
#异步停用,由客户发起
#async_abor_enable=YES
#使用ascii格式上传文件
#ascii_upload_enable=YES
#使用ascii格式下载文件
#ascii_download_enable=YES
#欢迎词
#ftpd_banner=Welcome to blah FTP service.
#以anonymous用户登录时候,是否禁止掉名单中的emaill密码。
#deny_email_enable=YES
#以anonymous用户登录时候,所禁止emaill密码名单。
#banned_email_file=/etc/vsftpd/banned_emails
#限制用户只能在自己的目录活动
chroot_local_user=YES
#例外名单,如果是YES的话,这个有点怪,不懂别乱开,上面的选项会跟这个名单反调(会被上面的选项影响)。
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#是否允许使用ls -R等命令
ls_recurse_enable=NO
#监听ipv4端口,开了这个就说明vsftpd可以独立运行,不用依赖其他服务。
listen=YES
#监听ipv6端口,还没普及呢!
# listen_ipv6=YES
#pam模块的名称,放置在 /etc/pam.d/vsftpd ,认证用
pam_service_name=vsftpd
#使用允许登录的名单
userlist_enable=YES
#限制允许登录的名单,前提是userlist_enable=YES,其实这里有点怪~!
userlist_deny=NO
#允许 限制在自己的目录活动的用户 拥有写权限
allow_writeable_chroot=YES
#Tcp wrappers : Transmission Control Protocol (TCP) Wrappers 为由 inetd 生成的服务提供了增强的安全性。
tcp_wrappers=YES
干净版:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user=YES
#chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=NO
listen=YES
# listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=NO
allow_writeable_chroot=YES
tcp_wrappers=YES
3、添加用户和密码
useradd -d /home/helloftp -s /bin/bash helloftp
passwd helloftp
4、编辑/etc/vsftpd/user_list
这个是运行登录ftp的名单
在文件最后加上 helloftp
5、(避免影响,能连上再开) 关闭selinux和iptables
setenforce 0
service firewalld stop
service iptables stop
6、启动服务与设置开机启动ftp
systemctl start vsftpd.service
systemctl enable vsftpd.service
特别注意:
设置了 chroot_local_user=YES
后,用户不能登录
原因是 没设置 allow_writeable_chroot=YES
然后用 FileZilla 折腾吧!。加密方式:普通FTP,我被坑过好几次了!
FTP有两种模式:
1、主动模式(port)
1、客户用 客户端口A 连接 FTP服务 的 21 端口。
2、客户 主动扔一个 客户端口B 给FTP服务器。
3、告诉服务器说:“服务器啊,你以后就往 客户端口B 传输数据,我以后就往你的 服务器20端口 传输数据”。
其次解析:
FTP服务的port模式 只有两个端口:20 和 21。
服务器20端口:负责传输数据
服务器21端口:负责沟通与控制
客户端口:
客户端口A:一个任意的非特权端口(端口号大于1024)
客户端口B:等于 客户端口A + 1
2、被动模式(PASV)
1、客户端打开两个端口: 客户端口A、 客户端口B
2、客户 用 客户端口A 连接 FTP服务21端口
3、提交PASV命令,服务器 返回一个 FTP服务端口B
4、客户 用 客户端口B 连接 FTP服务端口B
其次解析:
FTP服务的PASV模式 只有两个端口:FTP服务端口B 和 21。
服务器B端口: 负责传输数据 ----------- 一个任意的非特权端口(端口号大于1024)
服务器21端口:负责沟通与控制
客户端口:
客户端口A:一个任意的非特权端口(端口号大于1024)
客户端口B:等于 客户端口A + 1
主动模式优点:如果设置防火墙的时候,我只需要开放 20 和 21端口即可了。
被动模式优点:服务器拥有主导权。令客户连接我的哪个端口就哪个端口,比较安全。
以上是关于CentOS7 配置 vsftpd 服务的主要内容,如果未能解决你的问题,请参考以下文章