博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos 7使用vsftpd搭建FTP服务器
阅读量:6500 次
发布时间:2019-06-24

本文共 4037 字,大约阅读时间需要 13 分钟。

FTP,即:文件传输协议(File Transfer Protocol),基于客户端/服务器模式,默认使用20、21端口号,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于局域网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此FTP服务得到了广大用户的青睐。

FTP协议有以下两种工作模式:

  • 主动模式(PORT):FTP服务器主动向客户端发起连接请求。
  • 被动模式(PASV):FTP服务器等待客户端发起连接请求(FTP的默认工作模式)。

vsftpd是一款运行在Linux操作系统上的FTP服务程序,具有很高的安全性和传输速度。

vsftpd有以下三种认证模式:

  • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登陆。
  • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来简单。
  • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。

表1:vsftpd服务常用的参数以及作用

Centos 7使用vsftpd搭建FTP服务器

一、全局操作

1、安装vsftpd服务

yum -y install vsftpd
2、去掉配置文件里的注释行

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bakgrep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

Centos 7使用vsftpd搭建FTP服务器

3、配置firewalld防火墙开放2231和45000-49000端口

firewall-cmd --permanent --add-port=2231/tcpfirewall-cmd --permanent --add-port=45000-49000/tcpfirewall-cmd --reload

4、配置selinux允许FTP服务

注:没有selinux相关命令的话,需要安装policycoreutils-python包

yum -y install policycoreutils-python.x86_64setsebool -P ftpd_full_access=on

二、匿名开放模式

1、修改配置文件,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES   #启用匿名访问模式anon_umask=022   #匿名用户上传文件的umask值anon_upload_enable=YES   #允许匿名用户上传文件anon_mkdir_write_enable=YES   #允许匿名用户创建目录anon_other_write_enable=YES   #允许匿名用户重命名、删除等操作anon_root=/data/anon   #匿名用户的FTP根目录local_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten_port=2231   #vsftpd服务监听的端口号listen=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESpasv_min_port=45000   #PASV模式最小端口号pasv_max_port=49000   #PASV模式最大端口号

2、创建并授权匿名用户FTP根目录

mkdir -p /data/anon/pubchown -R ftp /data/anon/pub/

3、启动vsftpd服务,并加入开机启动

systemctl start vsftpdsystemctl enable vsftpd

4、测试

Centos 7使用vsftpd搭建FTP服务器

三、本地用户模式

1、修改配置文件,删除之前的匿名模式配置内容,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO   #关闭匿名访问模式local_enable=YESwrite_enable=YESlocal_umask=022local_root=/data/user   #指定本地用户的FTP根目录chroot_local_user=YES   #将用户权限禁锢在FTP目录allow_writeable_chroot=YES   #允许对FTP根目录执行写入操作dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten_port=2231listen=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESpasv_min_port=45000pasv_max_port=49000

2、创建本地用户,并指定家目录

useradd -d /data/user -s /sbin/nologin userecho "123456" | passwd --stdin user

3、重启vsftpd服务

systemctl restart vsftpd
4、测试
Centos 7使用vsftpd搭建FTP服务器

四、虚拟用户模式

1、创建用于FTP认证的用户数据库文件

vim /etc/vsftpd/vuser.txt
注:第一行用户名,第二行密码,依此类推

xuad123456limin123456

明文信息不安全,需要使用db_load命令用哈希(hash)算法将明文信息转换成数据文件,然后将明文信息文件删除。

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.dbchmod 600 /etc/vsftpd/vuser.dbrm -f /etc/vsftpd/vuser.txt

Centos 7使用vsftpd搭建FTP服务器

2、创建虚拟用户映射的系统本地用户和FTP根目录

useradd -d /data/ftproot -s /sbin/nologin virtualchmod -Rf 755 /data/ftproot/

Centos 7使用vsftpd搭建FTP服务器

3、建立用于支持虚拟用户的PAM文件
PAM(可插拔认证模块)是一种认证机制,通过一些动态链接库和统一的API把系统提供的服务与认证方式分开,使得系统管理员可以根据需求灵活调整服务程序的不同认证方式。PAM采用了分层设计(应用程序层、应用接口层、鉴别模块层)的思想,其结构如下图所示。
Centos 7使用vsftpd搭建FTP服务器
新建一个用于虚拟用户认证的PAM文件vsftpd.vu,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据文件的路径,但不用写数据文件的后缀。
vim /etc/pam.d/vsftpd.vu

auth     required     pam_userdb.so  db=/etc/vsftpd/vuseraccount  required     pam_userdb.so  db=/etc/vsftpd/vuser

4、为两个虚拟用户设置不同的权限,xuad拥有所有权限,而limin只有读取权限。

mkdir /etc/vsftpd/vusers_dirtouch /etc/vsftpd/vusers_dir/liminvim /etc/vsftpd/vusers_dir/xuad
anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES

5、修改配置文件,删除之前的匿名模式配置内容,带注释的是需要修改和新增的配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NOanon_umask=022local_enable=YESguest_enable=YES   #开启虚拟用户模式guest_username=virtual   #指定虚拟用户对应的系统用户allow_writeable_chroot=YES   #允许对FTP根目录执行写入操作write_enable=YESlocal_umask=022local_root=/data/ftprootdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten_port=2231listen=NOlisten_ipv6=YESpam_service_name=vsftpd.vu   #指定PAM文件userlist_enable=YEStcp_wrappers=YESuser_config_dir=/etc/vsftpd/vusers_dir   #指定虚拟用户配置文件目录pasv_min_port=45000pasv_max_port=49000

6、重启vsftpd服务

systemctl restart vsftpd
7、测试
Centos 7使用vsftpd搭建FTP服务器
Centos 7使用vsftpd搭建FTP服务器

转载于:https://blog.51cto.com/andyxu/2168875

你可能感兴趣的文章
php中删除评论怎么做的,详解PHP如何实现评论回复删除功能
查看>>
macports 安装php,「macports」MacOS 中 MacPorts 安装和使用 - 金橙教程网
查看>>
php 审计 for linux,for linux是什么意思
查看>>
matlab里面连接器是什么,Oops - an error has occurred
查看>>
matlab建立桌面图标,在ubuntu16.04上创建matlab的快捷方式(实现方法)
查看>>
matlab 识别率,【caffe-Windows】识别率批量输出——matlab实现
查看>>
MATLAB里面的mghglobal函数,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
查看>>
smarty使用php代码,笑谈配置,使用Smarty技术_php
查看>>
oracle数据实际值限制,c# – Oracle数据库TNS密钥“数据源”的值长度超过了’128’的限制...
查看>>
silk v3 decoder php,解码转换QQ微信的SILK v3编码音频为MP3或其他格式
查看>>
linux不能访问80端口,lunux开放80端口(本地访问不了linux文件可能是这个原因)...
查看>>
android单位转换小程序,微信小程序中rpx与rem单位转换
查看>>
html绝对定位重叠,HTML_firefox下绝对定位元素重叠造成不可点击问题,重构地图网站过程中碰到的,f - phpStudy...
查看>>
ps切图教程 android,PS前端切图完整教程
查看>>
html显示服务器状态,显示服务器时间并一直显示(html代码)
查看>>
在线html代码优化,网站seo优化html代码方法
查看>>
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
在html中哪一个不是链接的目标属性,HTML试题
查看>>
android otg 挂载流程,android USB OTG功能如何打开及实现
查看>>
html属性board,pin_board.html
查看>>