由于之前的服务器用的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. Elasticsearch开发环境搭建(Eclipse\MyEclipse + Maven)

    前提是, Elasticsearch 编程API入门系列---说在前面的话 Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) setting.xml配置文件 如何在M ...

  2. MyBatis数据持久化(七)多表连接查询

    本节继续以多表连接查询的案例介绍使用resultMap的好处,对于两张以上的表进行关联查询,当我们有选择的从不同表查询所需字段时,使用resultMap是相当方便的.例如我们有两张表,分别为用户表Us ...

  3. Springboot如何利用http请求控制器

    写好了接口,现在想用postman测试一下这个接口是否正确,想请问怎么传入请求参数?先谢谢了! Springboot如何利用http请求控制器 >> java这个答案描述的挺清楚的:htt ...

  4. POJ 2976 Dropping tests【二分 最大化平均值】

    题意:定义最大平均分为 (a1+a2+a3+---+an)/(b1+b2+---+bn),求任意去除k场考试的最大平均成绩 和挑战程序设计上面的最大化平均值的例子一样 判断是否存在x满足条件 (a1+ ...

  5. 给DOM操作生成的元素添加事件

    问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...

  6. 优动漫PAINT个人版绘制树叶教程

    超详细树叶绘制法,更有配套绘树小TIPE!让你画树So Easy~一秒变身,画树达人! 优动漫PAINT个人版软件下载:http://www.dongmansoft.com/chanpin.html ...

  7. scrapy框架学习

    一.初窥Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...

  8. 由Request Method:OPTIONS初窥CORS(转)

    刚接触前端的时候,以为HTTP的Request Method只有GET与POST两种,后来才了解到,原来还有HEAD.PUT.DELETE.OPTIONS…… 目前的工作中,HEAD.PUT.DELE ...

  9. NOIp模拟赛三十

    心态崩了的一天 先Orz yrx 开场五分钟yrx大吼一声:“这B题不是原题吗” hjw:“对哦好像我也做过哦” 过了十分钟yrx又大吼一声:“这C题我也做过啊,洪水那题啊” 于是 像我这种傻逼A题一 ...

  10. CF1029E Tree with Small Distances (贪心)

    题目大意:给你一棵边权为1的树,让你加入一些边,使得根节点(1号节点)到其他节点的最短距离不大于2 并没有想到贪心...... 正解的贪心思路是这样的 用一个堆维护当前距离最远的点,然后把根节点和它的 ...