vsftp迁移记录笔记
由于之前的服务器用的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迁移记录笔记的更多相关文章
- VS2010/2012配置优化记录笔记
VS2010/2012配置优化记录笔记 在某些情况下VS2010/2012运行真的实在是太卡了,有什么办法可以提高速度吗?下面介绍几个优化策略,感兴趣的朋友可以参考下,希望可以帮助到你 有的时候V ...
- EF code First数据迁移学习笔记(转)
转自:http://www.cnblogs.com/icyJ/p/migration.html 准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-pa ...
- EF code First数据迁移学习笔记
准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework //安装EF环境 2.在项目下新建类(Paper) ...
- Linux下一次数据仓库进行迁移记录
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52768613 前言:数据库每天的 ...
- EFCore合并多条迁移记录
方法来自 merge-migrations-in-entity-framework-core 更新数据库到最新结构 删除迁移目录下的所有迁移脚本 新建一个迁移 注释掉Up()和Down()方法中的代码 ...
- MySQL平时记录笔记
零,mysql的安装 http://blog.csdn.net/mhmyqn/article/details/17043921 https://www.cnblogs.com/wangjunyan/p ...
- laravel记录笔记Laravel 连接数据库、操作数据库的三种方式
laravel中提供DB facade(原始查找).查询构造器.Eloquent ORM三种操作数据库方式 1.连接数据库 .env 数据库配置 DB_HOST=localhost dbhost DB ...
- weblogic服务目录迁移记录
weblogic服务,由于前期的规划不好,导致后期有点问题!为了更加规范运行服务及执行相关操作,故进行服务迁移... 先决条件:weblogic都是单个aminserver运行的,单个服务 问题解决: ...
- 一次lvs迁移记录
需求:从117.119.33.99迁移到122.14.206.125,lvs为dr模式,系统版本为debian7 1.安装lvs和keepalived # aptitude install -y ip ...
随机推荐
- BZOJ 3166 set+可持久化trie树(OR 莫队)
思路: 1.找次大值 我们不妨设当前点是次大的 那这段区间为 左边第二个比它大的点的坐标+1 和右边第二个比它大的点的坐标-1 2.用可持久化trie树找异或最大值 也可以用莫队 //By Siriu ...
- C++之易混淆知识点三---算法分析
最近复习算法,感到有一丝丝忘记的困惑,赶紧记下来... 一.分治法 分治法的思想就是“分而治之”,很明显就是将规模比较庞大.复杂的问题进行分治,然后得到多个小模块,最好这些小模块之间是独立的,如果这些 ...
- js小结2
1.includes和contains 对于字符串,数组来说,判断包含是includes,对classList是contains 2.编辑span内容,enter提交(如何避免keydown之后换行: ...
- 《汇编语言(第三版)》cmp指令
# cmp指令 本质 cmp是比较指令,cmp的功能相当于减法. 格式 cmp 操作对象1,操作对象2 功能 计算操作对象1-操作对象2,但并不保存结果,可以根据flag标志寄存器来判断结果. 正向判 ...
- swift语言点评十二-Subscripts
Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the m ...
- B. Recursive Queries 打表
Code: #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...
- (WC2016模拟十一)【BZOJ4695】最假女选手
ps:好久没更博啦……这几天连着有模拟赛,等初赛前后休息的时候来疯狂补坑吧……顺便补一下前面的数论啥的? 题解: mdzz我场上写了个15分暴力长度跟标算差不多... 线段树大法好啊!这题听说很多人做 ...
- NuSOAP简介 php中使用webservice
许多机构已经采用了Apach和PHP作为他们的Web应用环境.在Web services模式中采用PHP可能看上去可能会比较难.但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端 ...
- java流与文件的操作 文件加密
课后作业 1,源代码 import java.io.*; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttribu ...
- thinkphp5 编辑时 唯一验证 解决办法
若定义了相关的验证规则,如: namespace app\seller\validate; use think\Validate; class Goodsmtag extends Validate { ...