linux学习之-vsftp

摘要:
大多数防火墙不允许外部启动的连接,因此ftp通过防火墙的活动模式通常受到限制。

一、简介

  vsftp是一个基于GPL发布的类unix系统上使用的ftp服务器软件,它的全称是very secure FTP ,软件的编写初衷是为了代码的安全,另外高速与高稳定性也是vsftp的两个重要特性。

二、ftp服务的连接方式

  ftp并不是只单一的支持一种工作模式,它可以支持主动模式(active ftp)和被动模式(passive ftp)两种模式。

  1 主动模式

  首先,ftp客户端随机开启一个大于1024的端口S,并和服务器的21端口建立连接,然后打开一个S+1端口进行监听,同时向服务器发出PORT(S+1)命令,(port命令表示了客户端用什么端口接受数据)。服务器端在传送数据的时候,通过自己的TCP 20端口发送数据,因此ftp必须和客户端建立一个新的连接用于数据传输。

linux学习之-vsftp第1张

  2 被动模式

  在被动模式下建立控制通道类似于在主动模式下建立通道的操作:ftp客户端随机开启一个大于1024的端口S 向服务器的21 号端口发起连接,同时会开启一个S+1 号端口,然后向服务器发送PASV 命令,通知服务器处于被动模式。服务器收到命令后,开放一个大于1024的端口P 进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,通过S+1 号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

linux学习之-vsftp第2张

  通过这两种模式的介绍可以看出,主动模式的FTP是服务器主动连接客户端的数据端口,被动模式的ftp是服务器被动地等待客户端连接自己的数据端口。   多数防火墙都不允许接受外部发起的连接,所以ftp的主动模式通过防火墙通常都会受到限制。ftp的被动模式通常用于防火墙后的ftp客户访问外借的ftp服务器。因此,如果有防火墙,最好是采用被动模式,但是如果对安全的需求很高,还是建议采用主动模式较好。

三、安装

  • 安装方式

  1.可以通过包管理器直接安装编译好的二进制文件。

  2.可以去官网上下载源码包自己编译安装。

  • 安装过程

  1.使用wget下载官方源码包

wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz

  2.解压文件

 tar -zxvf vsftpd-3.0.2.tar.gz 

  3.编译安装

#进入到解压的文件夹内
cd vsftpd-3.0.2/
#里面有自带的安装说明文件INSTALL

#根据自己的实际需求,修改builddefs.h头文件
#里面定义了一些编译选项,可以根据自己的要求选择是否编译某个模块,
#例如,tcp_wrapper等。

#进行编译
make
#查看是否编译成功,成功的话会有vsftpd二进制文件生成
ls -l vsftpd

编译时出现错误如下,可以查看:http://www.cnblogs.com/z-books/p/4171195.html

/usr/bin/ld: cannot find -lcap
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
#解决办法
#根据上面连接可知,查看是否安装了libcap文件
rpm -qa|grep libcap

#查看libcap的相关文件
rpm -ql libcap

#查看Makefile文件
#根据查看可以知道,需要libcap.so文件
#做一个链接
ln -s /lib64/libcap.so.2 /lib64/libcap.so

#继续编译
make

#设置一些vsftpd需要的必须条件
#vsftpd默认配置中需要一个nobody用户
useradd nobody

#默认配置中需要一个空的目录
mkdir /usr/share/empty/

#对于匿名FTP,需要一个ftp用户,还有它的主目录
mkdir /var/ftp
useradd -d /var/ftp ftp

#更改匿名用户主目录权限
chown root.root /var/ftp
chmod og-w /var/ftp

#安装vsftpd配置文件,可执行文件,man手册
make install
#复制配置文件到/etc
cp vsftpd.conf /etc

#vsftpd可以独立运行或者依附于超级服务
#独立运行
vim /etc/vsftpd.conf
#增加一行
listen=YES
#这可以告诉vsftpd它以独立服务运行,而不是依赖于超级服务

#运行vsftpd
/usr/local/sbin/vsftpd &

#安装ftp客户端
yum install ftp

#测试
ftp localhost
#匿名登录用户名ftp,密码为空
#如果不能访问,可以关闭selinux
#添加端口21,22到iptables或者关闭iptables服务

 三、实现方式

  vsftp的实现方式有三种形式:

  1.匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问;

  2.本地用户形式:以/etc/passwd中的用户名为认证方式;

  3.虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。

比较:相对于ftp的本地用户形式来说,虚拟用户只是ftp服务器的专有用户,虚拟用户只能访问ftp服务器所提供的资源,这大大增强了系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取ftp服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的ftp站点来说,虚拟用户是一种极好的解决方案。

免责声明:文章转载自《linux学习之-vsftp》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇esxi中CentOS7不停机加磁盘并扩容现有分区js动态设置根元素的rem方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SecureCRT 上传文件的两种方法 Zmodem、SFTP

Zmodem: 无论有xshell还是secureCRT连接linux的时。 默认都用一个zmodem可以帮助window和linux之间传输文件 很方便和实用的工具。 不过默认是无法使用的 需要安装lrzsz软件 直接云安装就可以了 yum install  lrzsz 安装完之后,如果windows要给linux传文件。只需要点住文件,拖动到xshen...

linux磁盘分区,挂载,卸载分区

前言 一个分区代表了一块具体的存储空间,Linux通过挂载的技术将这块空间挂载了一个具体的目录下面。 简单的说就是分区,格式化,挂载 分区:fdisk /dev/sdc 格式化:mkfs -t xfs /dev/sdc1 挂载:mount /dev/sdc1 /newdisk  参考  https://www.cnblogs.com/superlsj/p...

linux命令alias永久配置

需求:清屏的指令是:clear,感觉用着不爽,写这个命令太慢,想自定义命令:cls 解决:命令别名指令:alias 1:查看当前系统中有哪些别名:命令行输入:alias 2:添加我们自己的别名:alias cls='clear'  回车就完成了 问题: 这样的配置在重启linux后失效,怎么才能永久保持呢? 解决: 1:cd ~进入用户home目录 2:下...

Linux命令之dd

dd [OPERAND] dd 选项 复制一个文件,根据[OPERAND]进行转换和格式化 (1). OPERAND参数 说明1:dd的选项只有’--help’和’--version’,也就是帮助与版本信息。而下列都是[操作数],而非选项。 说明2:读取是输入,写入是输出 说明3:不指定if,默认从标准输入读取。如果不指定of,默认写入到标准输出 bs=B...

Linux—scp 命令详解(文件传输)

命令格式 [root@localhost ~]# scp [参数] [原路径] [目标路径] 命令功能 scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。linux的scp命令可以在linux服务器之间复制文件和目录。 命令参数 -1 强制scp命令使用协议ssh1 -2 强制scp命令使用协议ss...

gcc/g++编译

1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).汇编,将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] (3).编译,将汇编语言文件编译为目标代码(机器代码)生成.o的文件[汇编器as] (4).链接,将目标代码,生成可执行程序[链接器ld] [参数详解]   -x lang...