CentOS 7 FTP环境部署
FTP协议有两种工作方式:
1)port方式:主动模式port(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求 , 服务器接受连接 , 建立一条命令链路 当需要传送数据时 , 服务器从20端口向客户端的空闲端口发送连接请求 , 建立一条数据链路来传送数据 2)pasv方式:被动模式pasv(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求 , 服务器接受连接 , 建立一条命令链路 当需要传送数据时 , 客户端向服务器的空闲端口发送连接请求 , 建立一条数据链路来传送数据FTP是仅基于tcp的服务 , 不支持udp FTP使用2个端口 , 一个数据端口和一个命令端口(也可叫做控制端口) 通常来说这两个端口是21(命令端口)和20(数据端口) 但FTP工作方式的不同 , 数据端口并不总是20 这就是主动与被动FTP的最大不同之处 一)主动FTP模式主动方式的FTP工作流程:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口 , 也就是21端口 然后客户端开始监听端口N+1 , 并发送FTP命令“portN+1”到FTP服务器 接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1) 针对FTP服务器前面的防火墙来说 , 必须允许以下通讯才能支持主动方式FTP:1)任何大于1024的端口到FTP服务器的21端口 (客户端初始化的连接)2)FTP服务器的21端口到大于1024的端口 (服务器响应客户端的控制端口)3)FTP服务器的20端口到大于1024的端口 (服务器端初始化数据连接到客户端的数据端口)4)大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)二)被动FTP模式FTP被动模式的连接方式有效解决了服务器发起到客户的连接问题 , 这种方式由叫做PASV , 当客户端通知服务器它处于被动模式时才启用 在被动方式FTP中 , 命令连接和数据连接都由客户端发起 , 这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题 当开启一个FTP连接时 , 客户端打开两个任意的非特权本地端口(N>1024和N+1) 第一个端口连接服务器的21端口 , 但与主动方式的FTP不同 , 客户端不会提交PORT命令并允许服务器来回连它的数据端口 , 而是提交PASV命令 这样做的结果是服务器会开启一个任意的非特权端口(P>1024) , 并发送PORTP命令给客户端 然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据 对于服务器端的防火墙来说 , 必须允许下面的通讯才能支持被动方式的FTP:1)从任何大于1024的端口到服务器的21端口(客户端初始化的连接)2)服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)3)从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)4)服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)主动FTP: 命令连接:客户端>1023端口 ------> 服务器 21端口 数据连接:客户端>1023端口 <------ 服务器 20端口被动FTP: 命令连接:客户端>1023端口 ------> 服务器 21端口 数据连接:客户端>1023端口 ------> 服务器>1023端口三)主动与被动FTP优缺点:主动FTP对FTP服务器的管理有利 , 但对客户端的管理不利 因为FTP服务器企图与客户端的高位随机端口建立连接 , 而这个端口很有可能被客户端的防火墙阻塞掉 被动FTP对FTP客户端的管理有利 , 但对服务器端的管理不利 因为客户端要与服务器端建立两个连接 , 其中一个连到一个高位随机端口 , 而这个端口很有可能被服务器端的防火墙阻塞掉 随着WWW的广泛流行 , 许多人习惯用web浏览器作为FTP客户端 大多数浏览器只在访问ftp://这样的URL时才支持被动模式 这到底是好还是坏取决于服务器和防火墙的配置 通常我会选用被动模式的FTP [root@ftp ~]# yum -y install vsftpd
# 备份配置文件
[root@ftp ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
# 简化配置文件内容
[root@ftp ~]# grep -Ev '^#|^$' /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf
# 修改配置文件
anonymous_enable=NO # 是否禁止匿名用户登录
local_enable=YES # 是否允许本地用户登录
write_enable=YES # 是否允许写入
local_umask= # 本地用户文件掩码
xferlog_enable=YES # 是否在上传/下载文件时记录日志
connect_from_port_20=NO # 是否使用20端口传输数据(是否使用主动模式)
xferlog_std_format=YES # 是否使用标准日志格式
xferlog_file=/var/log/xfer.log # 日志文件路径
chroot_local_user=NO # 是否限制所有的本地用户在自己的家目录
chroot_list_enable=YES # 是否指定不能离开家目录的用户
chroot_list_file=/etc/vsftpd/chroot_list # 指定不能离开家目录的用户名单文件
allow_writeable_chroot=YES # 是否开启家目录可写
listen=YES # 是否开启ipv4监听
listen_ipv6=NO # 是否开启ipv6监听
pam_service_name=vsftpd # 使用pam模块控制,vsftpd文件在/etc/pam.d/目录下
userlist_enable=YES # 是否开启用户本地用户名单, 当userlist_deny=NO时 , userlist_file名单内的用户为白名单,反则反之
userlist_deny=YES # 决定禁止/允许userlist_file名单内的用户登录
tcp_wrappers=YES # 是否允许tcp_wrappers管理
pasv_enable=YES # 是否允许pasv模式
pasv_min_port= # pasv模式使用的最小端口号
pasv_max_port= # pasv模式使用的最大端口号
download_enable=NO # 是否允许下载
userlist_file=/etc/vsftpd/user_list # 用户名单文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf # 用户配置文件
创建本地用户
# 创建本地用户指定家目录
[root@ftp ~]# useradd -d /var/ftp/pub/user1 -s /sbin/nologin user1
# 设置密码
[root@ftp ~]# passwd user1
# 添加到禁止离开家目录的列表中
[root@ftp ~]# echo user1 >> /etc/vsftpd/chroot_list
# 修改权限
[root@ftp ~]# chown -R user1.user1 /var/ftp/pub/user1/
[root@ftp ~]# ll -d /var/ftp/pub/user1/
drwx------. user1 user1 10月 : /var/ftp/pub/user1/
# 添加防火墙策略
[root@ftp ~]#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
[root@ftp ~]#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport : -j ACCEPT
[root@ftp ~]# getenforce
Permissive
[root@ftp ~]# systemctl start vsftpd
最后就可以通过ftp://ip在浏览器里访问上面的ftp(只有被动模式的ftp才能再浏览器里访问)也可使用Filezilla等工具连接ftp,不过要在客户端里手动修改成被动模式 ftp登陆后的路径锁定到账号家目录下ftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性比较高ftp,可以结合SSL来解决问题# 如果没有输出此类消息 那么说明该版本的svftp不支持ssl加密
[root@ftp user1]# ldd /usr/sbin/vsftpd |grep libssl
libssl.so. => /lib64/libssl.so. (0x00007f17c0622000) # 生成加密证书
[root@ftp ~]# openssl req -x509 -nodes -days -newkey rsa: \-keyout /etc/vsftpd/vsftpd.pem \-out /etc/vsftpd/vsftpd.pem
Generating a bit RSA private key
.....................................++++++
......++++++
writing new private key to '/etc/vsftpd/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name ( letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:haidian
Organization Name (eg, company) [Default Company Ltd]:ftpssl
Organizational Unit Name (eg, section) []:ftpssl
Common Name (eg, your name or your server's hostname) []:ftp
Email Address []:damowang.cn@gmail.com
# 修改配置文件
[root@ftp user1]# vim /etc/vsftpd/vsftpd.conf ssl_enable=YES # 是否启用ssl加密
allow_anon_ssl=NO # 是否允许匿名用户使用ssl加密
force_local_data_ssl=YES # 非匿名用户传输数据时是否加密
force_local_logins_ssl=NO # 匿名用户登录时是否加密
ssl_tlsv1=YES # 是否激活tls v1加密
ssl_sslv2=NO # 是否激活sslv2加密
ssl_sslv3=NO # 是否激活sslv3加密
rsa_cert_file=/etc/vsftpd/vsftpd.pem # rsa证书的位置
重启vsftpd服务
[root@ftp ~]# systemctl restart vsftpd
使用Filezilla连接查看是否为TSL加密

什么是SSL、TSL、HTTPS?
SSL 的全名是 Secure Sockets Layer,即安全套接字层,简而言之,這是一种标准技术,用于保持网际网络连接安全以及防止在两个系统之间发送的所有敏感资料被罪犯读取及修改任何传输的信息,包括潜在的个人详细信息 两个系統可以是伺服器与客户端 (例如购物网站与浏览器),或者伺服务器至伺服务器 (例如,含有个人身份信息或含有薪资信息的应用程序)
这样做是为了确保使用者与网站、或两个系统之间传输的任何信息保持无法被读取的状态 此技术可使用加密算法以混淆传输中的信息,防止骇客在信息公国连接发送时读取信息 此信息可能是任何敏感或个人细信息,包括信用卡号与其他财务信息、姓名与地址等等
TSL (Transport Layer Security,传输层安全协议) 是更新、更安全的 SSL 版本 我们仍将安全性凭证成为 SSL,因为这是比较常用的词
HTTPS (Hyper Text Transfer Protocol Secure,超文本传输协议安全) 会在网站受到 SSL 凭证保护时在网址中出现 该凭证的详细信息包括发行机构与网站拥有人的企业名称,可以通过点击浏览器网址栏上的锁定标记进行查看
CentOS 7 FTP环境部署的更多相关文章
- Centos下PPTP环境部署记录
PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访问公司资源的新型技术.它能将PPP(点到点协议)帧封装成IP数据包,以便能够在基于IP的互联网上进行传输.PP ...
- Linux下FTP环境部署梳理(vsftpd和proftpd)
在日常运维工作中,常部署到的FTP是vsftpd和proftd.之前写了Linux下FTP虚拟账号环境部署总结,下面简单说下本地用户下的FTP环境部署过程: 简单梳理下FTP主动和被动两种工作模式: ...
- Centos下SVN环境部署记录
大多数情况下,我们日常工作中用的版本控制系统都会选择分布式的Git,它相比于集中式的SVN有很多优势.但是有些项目软件基于自身限制,可能只支持SVN做工程同步.废话就不多说了,下面记录下SVN的部署和 ...
- DotNet Core 1.0 集成 CentOS 开发与运行环境部署
一. DotNet Core 1.0 开发环境部署 操作系统安装 我们使用CentOS 7.2.1511版本. 安装libunwind库 执行:sudo yum install libunwi ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...
- Linux下FTP虚拟账号环境部署总结
vsftp的用户有三种类型:匿名用户.系统用户.虚拟用户.1)匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous.2)本地用户登录:使用系统用户登录,在/etc/passwd中 ...
- 在 CentOS 7上Virtualbox+phpVirtualBox完整虚拟化环境部署
一.phpVirtualBox简介 VirtualBox是一套为不同操作系统而设的 x86 虚拟化产品.它是一个机器/硬件的虚拟化产品,功能上与 VMware Server.Parallel ...
- Web应用之LAMP源码环境部署
一.LAMP环境的介绍 1.LAMP环境的重要性 思索许久,最终还是决定写一篇详细的LAMP的源码编译安装的实验文档,一来是为了给自己一个交代,把技术进行系统的归纳,将技术以极致的形式呈现出来,做为一 ...
随机推荐
- 移动端click事件出现300ms延迟
问题分析: 双击缩放是指手在屏幕上快速点击两次,iOS自带的Safari浏览器会将网页缩放至原始比例.当用户在屏幕上单击某元素时,浏览器会先捕获此处单击,但浏览器不知道用户是要单击链接还是要双击该部分 ...
- bootstrap_栅格系统_响应式工具_源码分析
-----------------------------------------------------------------------------margin 为负 使盒子重叠 等高 等高 ...
- [LeetCode] Goat Latin 山羊拉丁文
A sentence S is given, composed of words separated by spaces. Each word consists of lowercase and up ...
- Jmeter应用-接口测试
1.BS架构应用性能 2.HTTP协议接口功能与性能 3.FTP协议接口功能与性能 4.Mysql数据库性能 5.MongoDB数据库性能 6.支持自定义Java组件开发 测试计划-右键-添加线程组 ...
- ArcGIS AddIn 批量设置栅格图层背景色为透明
protected override void OnClick() { // // TODO: Sample code showing how to access button host // Arc ...
- body里面的onload和window.onload,window.load的区别
区别:body里面的onload是在“页面加载完成后执行的动作”window里面的onload是在“页面加载时执行的动作” window.load这个应该只是表明事件方法,但并未执行,比如click表 ...
- VUE组件间数据方法的传递,初步了解
父组件的数据传递到子组件: 子组件:(其中fMsg是要从父组件传递过来的数据,注意fMsg要在子组件props里先定义) 父组件:(使用v-bind,将自身数据绑定给中转属性fMsg,从而通过 子组件 ...
- C++ 实验2
#include <iostream> using namespace std; template<class T> void insertionSort(T a[],int ...
- Java学习--抽象类和接口
https://www.cnblogs.com/dolphin0520/p/3811437.html 抽象类 先了解一下[抽象方法]—一种特殊的方法,只有声明,没有具体的实现 abstract vo ...
- Chrome浏览器添加控件
1. 添加user agent swithcher模拟浏览器内核 方法: 下载user agent switcher后,打开谷歌浏览器,先复制chrome://extensions/ 到浏览器地址栏 ...