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 用户登录日志及下载上传简易日志