Linux云服务器下搭建FTP服务器

FTP工作模式简介

FTP工作会启动两个通道:控制通道和数据通道。

控制通道一般由客户端发起,数据连接分两种:port(主动)和pasv(被动)。

PORT模式: 在客户端需要接收数据时,ftp_client(大于1024的随机端口)-PORT命令->ftp_server(21) 发送PORT命令,这个PORT命令包含了客户端是用什么端口来接收数据(大于1024的随机端口,在传送数据时,ftp_server将通过自己的TCP 20 端口和PORT中包含的端口建立新的连接来传送数据。

PASV模式: 传送数据时,ftp_client--PASV命令-->ftp_server(21) 发送PASV命令时,ftp_server自动打开一个1024--5000之间的随机端口并且通知ftp_client在这个端口上传送数据,然后客户端向指定的端口发出请求连接,建立一条数据链路进行数据传输。

安装FTP软件包

#rpm -qa vsftpd          //查看是否已经安装
#yum install -y vsftpd //安装FTP
#rpm -ql vsftpd          //列出安装文件如下
/etc/logrotate.d/vsftpd.            vsftpd的日志文件 
/etc/pam.d/vsftpd                    PAM认证文件 
/etc/rc.d/init.d/vsftpd              启动脚本 
/etc/vsftpd                          vsftpd的配置文件存放的目录 
/etc/vsftpd/ftpusers                禁止使用vsftpd的用户列表文件 
/etc/vsftpd/user_list                禁止或允许使用vsftpd的用户列表文件 
/etc/vsftpd/vsftpd.conf              主配置文件 
/etc/vsftpd/vsftpd_conf_migrate.sh  vsftpd操作的一些变量和设置 
/usr/sbin/vsftpd                    vsftpd的主程序

FTP安全设置

1.为了安全应该禁止匿名用户的登录:将配置文件的anonymous_enable参数设为NO,屏蔽匿名用户上传,创建,删除的功能

#vi  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO 
#anon_upload_enable=YES      上传 
#anon_mkdir_write_enable=YES    创建 
#anon_other_write_enable=YES    删除 
#service vsftpd restart    //重启FTP服务器

2.为加强安全设置:限制系统用户锁定在家目录:

#vi  /etc/vsftpd/vsftpd.conf 
chroot_list_enable=YES 
chroot_list_file=/etc/vsftpd/chroot_list  //把需要限制的用户加入/etc/vsftpd/chroot_list即可

3.限制其他系统用户不能登录ftp:

#cat /etc/vsftpd/ftpusers   //ftpusers是禁止使用FTP用户列表。
#echo "uuu" >>/etc/vsftpd/ftpusers  此时viong不能登录ftp  //这样uuu用户将不能使用FTP

4.使用FTP的配置文件/etc/vsftpd/user_list来控制只有那些用户可以登录FTP:

/etc/vsftpd/user_list 用于存放哪些用户才能登录系统: 
#vi /etc/vsftpd/vsftpd.conf 
#在userlist_enable=YES 的后面添加 
userlist_deny=NO 
userlist_file=/etc/vsftpd/user_list

5.搭建支持SSL加密传输的vsftpd:

首先检查vsftpd软件是否支持SSL:

#ldd /usr/sbin/vsftpd |grep libssl
libssl.so.6 => /lib/libssl.so.6 (0xf7f27000)   ==说明此版本支持
#openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem   //生成vsftpd.pem证书

#vi /etc/vsftpd/vsftpd.conf   //设置主配置文件参数
ssl_enable=YES                                      //是否启用 SSL,默认为no
allow_anon_ssl=NO                                 //是否允许匿名用户使用SSL,默认为no
force_local_data_ssl=YES                       //非匿名用户传输数据时是否加密,默认为yes
force_local_logins_ssl=YES                     //非匿名用户登陆时是否加密,默认为yes
ssl_tlsv1=YES                                          //是否激活tls v1加密,默认yes
ssl_sslv2=YES                                         //是否激活sslv2加密,默认no
ssl_sslv3=YES                                         //是否激活sslv3加密,默认no
rsa_cert_file=/etc/vsftpd/vsftpd.pem          //rsa证书的位置

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

吴奇的专栏

1 篇文章1 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Sorrower的专栏

内核必须懂(二): 文件系统初探

693
来自专栏禁心尽力

Solr_全文检索引擎系统

Solr介绍: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomca...

1918
来自专栏py+selenium

py+selenium一个可被调用的登录测试脚本【待优化】

大部分系统现在都有登录页面,本文主要尝试写一个登录的测试脚本,及另一个脚本调用它登录测试已登录的页面模块。

1112
来自专栏阿杜的世界

Spring Boot:定制static path mappings

在Spring Boot:定制URL匹配规则一文中我们展示了如何调整URL请求匹配到对应的控制器方法的规则。类似得,也可以控制应用程序对静态文件(前提是被打包进...

412
来自专栏Python

Django中请求的生命周期

1. 概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页中...

26110
来自专栏积累沉淀

Java设计模式(九)----外观模式

外观模式 一、定义 二、结构 三、案例 四、特点 一、定义 Facade...

1747
来自专栏GopherCoder

『Ansible 上手指南:2』

1744
来自专栏飞雪无情的博客

Go语言经典库使用分析(三)| Gorilla Handlers 详细介绍

在我们编写web服务端程序的时候,我们可能会对一些甚至全部的Http Request统一处理,比如我们记录每个访问的Request,对提交的Form表单进行映射...

801
来自专栏技术小黑屋

JAR包未加入APK程序

前段时间打包遇到了一个问题,jar包不能加入到apk包中。从Eclipse中完全可以,一旦放到服务器端进行打包就出现了问题。

1163
来自专栏玩转JavaEE

elasticsearch修改数据

上篇文档向读者介绍了Elasticsearch提供的强大的REST API的基本用法,不过这些API的用法都很基础,本文将和读者继续分享更多的API。

522

扫码关注云+社区