由于之前的服务器用的window下的ftp安全性和稳定性都不好,所以我们才把ftp迁移到linux环境下

vsftp概述:

vsftpd 它可以运行在多平台系统上面,是一个完全免费的、开放源代码的ftp服务器软件,Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全,支持很多其他的 FTP 服务器所不支持的特征,非常高的安全性、灵活的带宽限制控制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。 

ftp

FTP 是File Transfer Protocol(文件传输协议)的英文简称,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层。

关于7层OSI模型的理解大家可以参考这篇文档:https://www.cnblogs.com/qishui/p/5428938.html

FTP使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的”三次握手”的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。

 关于TCP的三次握手原理大家可以参考这篇文章:http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

FTP会话时包含了两个通道,一个叫控制通道,端口号21;一个叫数据通道,端口号20。 
控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。 
数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。

关于ftp的主动模式和被动模式大家可以参考这篇文章:https://blog.csdn.net/zhangyuan12805/article/details/71425385

1.    主动模式的工作原理(PORT模式)

          1.客户端对服务器发起请求,连接的是服务器的21号端口,客户端的端口号N是大于1024的随机端口

2.服务器的21号端口给予客户端响应数据流

3.服务器打开20号端口去连接客户端的N+1的端口

          4.客户端给予响应,数据开始传输

2.    
被动模式的工作原理(PASV模式)

1.客户端对服务器发起的请求连接是服务器的21号端口,客户端的端口号N是大于1024的随机端口
2.服务器的21号端口给予客户端响应 
3.服务器打开一个大于1024的随机端口,客户端使用N+1端口号去连接服务器打开的端口 
4.服务器给予响应,于是数据开始传输


在linux上,如果不配置pasv_enable=NO,默认是passive模式。

vsftp提供3种远程的登录方式: 
匿名登录方式 
  就是不需要用户名,密码。直接匿名登录ftp server
本地用户方式 
  需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户。 
虚拟用户方式 
  同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,在你linux系统中是没有的(没有该用户帐号)

迁移记录:

一、安装vsftp
yum install -y vsftpd
yum install -y pam

二、添加对应用户
mkdir -/home/test

/usr/sbin/groupadd test
/usr/sbin/useradd -g test test-s /sbin/nologin

useradd -d /home/test test

三、修改vsftp.conf配置
anonymous_enable=NO 禁止匿名访问
local_enable=YES 允许本地用户访问vsftp服务器
write_enable=YES 允许上传
download_enable=YES 允许下载
local_umask=022 去掉写的权限
dirmessage_enable=YES 是否显示目录说明文件,默认yes
xferlog_enable=YES 维护日志文件,详细记录上传和下载操作
connect_from_port_20=YES ftp数据传输默认端口
xferlog_std_format=YES 上传 下载明细日志
chroot_local_user=NO #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
chroot_list_enable=YES 是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)
chroot_list_file=/etc/vsftpd/chroot_list 限制用户的名单文件路径
listen=YES
vsftpd_log_file=/var/log/vsftpd.log
dual_log_enable=YES 日志等级
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES 使用wrappers作为主机访问控制方式
guest_enable=YES
guest_username=test
virtual_use_local_privs=YES
listen_port=9099 ftp登录端口
pasv_enable=YES 启用被动模式
pasv_min_port=10221 Default: 0 (use any port) ) pasv使用的最小端口
pasv_max_port=10231 (Default: 0 (use any port) ) pasv使用的最大端口
pasv_promiscuous=YES (Default: NO ) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
ftpd_banner=Welcome to ebuy FTP service !! 登录界面显示说明
user_config_dir=/home/posftp #指定用户的home目录

四、修改防火墙配置:(这步非常关键否则开启防火墙之后用户能登录但不能访问用户的home目录)

vi /etc/sysconfig/iptables-config 在配置的结尾处添加以下配置

IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

配置注意ip_conntrack_ftp"与nat_ftp的顺序,添加好之后stop防火墙然后在启动防火墙即可
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

添加防火墙规则:

vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 10221:10231 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9099 -j ACCEPT

五、修改系统默认的ftp端口
vi /etc/services

修改成:

ftp 9099 /tcp

ftp 9099 /udp

六、重启iptables vsftp即可下载测试

chkconfig --level 35 vsftpd on
chkconfig vsftpd --add

命令行登录测试:

lftp  IP:9099

七、日志切割配置:

vim /etc/logrotate.d/vsftp
/var/log/vsftpd.log{
daily
rotate 365
missingok
notifempty
compress
dateext
sharedscripts
postrotate
/etc/init.d/vsftpd restart
endscript
}

/usr/sbin/logrotate -d -f /etc/logrotate.d/vsftp 测试配置文件是否生效

/usr/sbin/logrotate -f /etc/logrotate.d/vsftp 切割日志

 八、迁移数据:

把原来服务器上面的ftp文件目录直接打成gzip包直接用ftp上传到已创建好的通原来服务器上同名目录的下即可访问、上传、下载测试

九、配置说明:

chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd/chroot_list
然后把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list中即可(一行一个用户名,此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)

######################################################
主动模式与被动模式的区别:

p模式分为主动模式(active mode)和被动模式(passive mode),ftp是tcp连接,所以要进行三次握手

1. active和passive模式的配置:

在命令行输入vim /etc/vsftpd/vsftpd.conf:

1> active mode:

pasv_enable=NO (passive模式关闭)
pasv_min_port=3000
pasv_max_port=4000
port_enable=YES (active模式开启)
connect_from_port_20=YES (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。)

2>passive mode:

pasv_enable=YES
pasv_min_port=3000
pasv_max_port=4000

设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如3000-4000。

 

在linux上,如果不配置pasv_enable=NO,默认是passive模式。

########################################################
运维日志查看路径
xferlog 用户下载上传明细日志
vsftp.log 用户登录日志及下载上传简易日志

vsftp迁移记录笔记的更多相关文章

  1. VS2010/2012配置优化记录笔记

    VS2010/2012配置优化记录笔记 在某些情况下VS2010/2012运行真的实在是太卡了,有什么办法可以提高速度吗?下面介绍几个优化策略,感兴趣的朋友可以参考下,希望可以帮助到你   有的时候V ...

  2. EF code First数据迁移学习笔记(转)

    转自:http://www.cnblogs.com/icyJ/p/migration.html 准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-pa ...

  3. EF code First数据迁移学习笔记

    准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework  //安装EF环境 2.在项目下新建类(Paper) ...

  4. Linux下一次数据仓库进行迁移记录

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613 前言:数据库每天的 ...

  5. EFCore合并多条迁移记录

    方法来自 merge-migrations-in-entity-framework-core 更新数据库到最新结构 删除迁移目录下的所有迁移脚本 新建一个迁移 注释掉Up()和Down()方法中的代码 ...

  6. MySQL平时记录笔记

    零,mysql的安装 http://blog.csdn.net/mhmyqn/article/details/17043921 https://www.cnblogs.com/wangjunyan/p ...

  7. laravel记录笔记Laravel 连接数据库、操作数据库的三种方式

    laravel中提供DB facade(原始查找).查询构造器.Eloquent ORM三种操作数据库方式 1.连接数据库 .env 数据库配置 DB_HOST=localhost dbhost DB ...

  8. weblogic服务目录迁移记录

    weblogic服务,由于前期的规划不好,导致后期有点问题!为了更加规范运行服务及执行相关操作,故进行服务迁移... 先决条件:weblogic都是单个aminserver运行的,单个服务 问题解决: ...

  9. 一次lvs迁移记录

    需求:从117.119.33.99迁移到122.14.206.125,lvs为dr模式,系统版本为debian7 1.安装lvs和keepalived # aptitude install -y ip ...

随机推荐

  1. 跨域调用接口——WebClient通过get和post请求api

    AJAX不可以实现跨域请求,经过特殊处理才行.一般后台可以通过WebClient实现跨域请求~ //get 请求        string url = string.Format("htt ...

  2. (转载) Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题

    Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题 标签: scrollviewandroid滑动嵌套 2015-07-16 17:24 1112 ...

  3. 我的Java历程_Java对象类型的转换

    向上转型: 可以将子类对象看作是父类对象叫做“向上转型”,由于向上转型是从一个较为具体的类向较为抽象的类的转换,所以它总是安全的. 例如:可以将正方形.长方形叫做是四边形,但是不能说四边形是正方形或长 ...

  4. NOIp2018模拟赛三十五

    两道大数据结构把我砸懵 成绩:未提交 Orz xfz两道正解 A:[BZOJ4049][CREC2014B]mountainous landscape B:CJB的大作(CF改编题)

  5. JDBC读写MySQL的大字段数据

    JDBC读写MySQL的大字段数据   不管你是新手还是老手,大字段数据的操作常常令你感到很头痛.因为大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式 来处理的.而非一般的字段 ...

  6. 一个 VUE 组件:实现子元素 scroll 父元素容器不跟随滚动(兼容PC、移动端)

    介绍 我们经常遇到一种情况.当滑动滚动条区域时,子元素滚动条到底部或顶部时就会触发父级滚动条,父级滚动条同理会继续向上触发,直至body容器.这是浏览器默认的滚动行为. 但是很多情况,我们想要子元素滚 ...

  7. Vue异步组件Demo

    Vue异步组件Demo 在大型应用中,我们可能需要将应用拆分为多个小模块,按需从服务器下载.为了进一步简化,Vue.js 允许将组件定义为一个工厂函数,异步地解析组件的定义.Vue.js 只在组件需要 ...

  8. [LeetCode] 455. 分发饼干 assign-cookies(贪心算法)

    思路: 尽量先将小饼干分配给胃口小的孩子,故而饼干和孩子胃口都应该先排序. python中,a.sort()只能用于a为list, sort()是可变对象的方法,无参数,无返回值,但会影响改变对象. ...

  9. 利用shell脚本添加环境变量

    在shell脚本设置了环境变量,如export LIBRARY_PATH=./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误 error while loading shared lib ...

  10. Eclipse WEB项目更改项目名

    可能很多人都碰到过 WEB 项目需要改名字的事情,不过不是每个人都能很顺畅地完成这个事情.这里简单给大家介绍两种改项目名的方法 1. 在Eclipse 中修改项目名 没错这种方法跟你预料的一样简单,当 ...