由于之前的服务器用的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. webpack的像素转vw loader插件

    这是一款针对webpack的像素转vw单位的loader插件. 笔者公司中,h5 rem的开发方案目前已经渐渐开始转向vw方案,因此本工具应运而生. 目前所制作的h5,大部分设计稿分辨率都是750的宽 ...

  2. Django(part3)

    URLConf:负责url到view的map,就是一个urls.py module,通常在project和app级别都要定义, #mysite/urls.py from django.conf.url ...

  3. HTML基础——网站信息显示页面

    1.语法和规范 HTML文件都是以.html或者.htm结尾的.建议使用.html结尾. HTML文件分为头部分(<head></head>)和体部分(<body> ...

  4. 阿里巴巴和印度最大移动支付和商务平台Paytm

    2015年9月29日,阿里巴巴和印度最大移动支付和商务平台Paytm发布联合声明,宣布阿里巴巴集团及其旗下金融子公司蚂蚁金服将向Paytm注入新资金.阿里称这是一项“战略性的”投资. 蚂蚁金服已经在2 ...

  5. c#学习0217

    1 继承 继承 1 子类是否继承了父类的构造函数 答案:子类并没有继承父类的构造函数 但是子类或默认调用父类的无参数的构造函数 在子类中创建父类对象 这样子类才可以使用父类的成员 如果在父类中声明了有 ...

  6. POJ 2739 Sum of Consecutive Prime Numbers【素数打表】

    解题思路:给定一个数,判定它由几个连续的素数构成,输出这样的种数 用的筛法素数打表 Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memo ...

  7. shell-1.shell概述、2.shell脚本执行方式

    目录

  8. swift语言点评十三-Lazy

    Lazy Stored Properties A lazy stored property is a property whose initial value is not calculated un ...

  9. C语言的常用printf打印占位符%d, %u, %f, %s, %c, %o, %x

    占位符含义及用法 代码: #include <stdio.h> int main(int argc, char const *argv[]) { , b = -; // 默认10进制赋值 ...

  10. tinymce原装插件源码分析(四)-fullscreen

    fullscreen 作为一款文本编辑器,全屏功能是非常有必要的.在插件中主要是修改一些css style和触发resize事件. style问题(反例): 见github源码:https://git ...