搭建FTP

一、FTP概述

samba  :主要用于内网文件传输。

FTP :主要用于公网的文件传输,FTP本身的功能是明文传输,但是可以通过SSL加密保护。

FTP:文件传输协议。

FTP服务器。

在FTP的使用当中,用户经常遇到的两个概念:“下载”和“上传”。

下载:就是把文件从远程主机拷贝到自己的电脑上。

上传:就是把自己电脑上的文件拷贝到远程主机上。

0 - 1024端口 :特权端口

FTP连接及传输模式:

控制连接:TCP  21端口,用于发送FTP命令信息。

数据连接:TCP  20 端口,用于上传、下载数据。

数据连接的建立类型:

主动模式:

服务端从20端口主动向客户端发起的连接。

被动模式:(生产环境中更适合操作)

服务端在指定范围内某个端口被动等待客户端连接。

FTP用户的类型:

匿名用户:anonymous  或  ftp

本地用户:帐号名称、密码等信息保存在passwd、shadow文件中。

虚拟用户:将多个虚拟用户映射到一个真实的系统用户,系统用户作为接口登录。

FTP服务器搭建方式:

windows下常见有:

IIS、Serv-U

Linux下常见有:

wu-ftpd、Proftpd、vsftpd(RHEL)

FTP客户端常见程序:

CuteFTP、FlashFXP、LeapFTP、Filezilla、gftp、kuftp、

FTP命令(安装包ftp)

vsftp软件包:

官方站点:http://vsftpd.beasts.org/(翻墙)

主程序: /usr/sbin/vsftpd

服务名: vsftpd

用户控制列表文件:(用来对限制用户权限的)

/etc/vsftpd/ftpusers#目录中的用户不可登录

/etc/vsftpd/user_list#根据配置文件中的设置决定里面的用户可用与否。

主配置文件:

/etc/vsftpd/vsftpd.conf

设置虚拟用户步骤:

创建账号数据:

1、建立虚拟FTP用户的账号数据库文件;

2、创建FTP根目录及虚拟用户映射的系统用户;

3、建立支持虚拟用户的PAM认证文件;

添加虚拟用户支持:

4、在vsftpd.conf文件中添加支持配置;

5、为个别虚拟用户建立独立的配置文件;

启动服务并测试:

6、重新加载vsftpd配置;

7、使用虚拟FTP账户访问测试。

二、配置文件详解

1、匿名权限控制

anonymous_enable=YES#启用匿名访问。

ano_umask=022#匿名用户所上传文件的权限掩码。

anon_root=/var/ftp#匿名用户的FTP根目录。

anon_upload_enable=YES#允许上传文件。

anon_mkdir_write_enable=YES#允许创建目录。

anon_other_write_enable=YES#开放其他写入权。

anon_max_rate=0#限制最大传输速率(字节/秒)。

2、本地用户权限控制

local_enable=YES#是否启用本地系统用户。

local_umask=022#本地用户所上传文件的权限掩码。

local_root=/var/ftp#设置本地用户的FTP根目录。

chroot_local_user=YES#是否将用户禁锢在主目录。

local_max_rate=0#限制最大传输速率(字节/秒)。

3、常用的全局配置项

listen_address=192.168.4.1#设置监听的IP地址。

listen_port=21#设置监听FTP服务的端口号。

write_enable=YES#是否启用写入权限。

download_enable=YES#是否允许下载文件。

max_clients=0#限制并发客户端连接数。

max_per_ip=0#限制同一IP地址的并发连接数。

Pasv_min_port=50000

Pasv_max_port=60000

#将客户端的数据连接端口改在50000-60000之间。

4、访问限制

userlist_enable=YES#是否启用user_list列表文件。

userlist_deny=YES#是否禁用user_list中的用户。

userlist_deny=NO#只允许user_list中的用户登录。

5、其它安全选项

connect_timeout=60#连接超时时间。

accept_timeout=60#处理的超时时间。

data_connection_timeout=300#数据连接超时时间。

idle_session_timeout=300#会话的建立连接时间。

ftpd_banner=xxx和banner_file=/path/file#是否启用欢迎信息。

tcp_wrappers=YES#是否启用tcp_wrappers支持。

三、安装与实验

1、安装环境

服务器端:

yum  -y  install  vsftpd

service  vsftpd  start

iptables  -F

setenforce   0

客户端:

yum   -y   install   ftp

登录方式:

ftp  192.168.216.155

2、匿名的验证方式(服务器IP:1.1.1.5)

安装好环境后进入客户端使用ftp登录:

ftp  1.1.1.5

#回车后提示要输入用户名,默认输入ftp就可以了。

#匿名模式不用输入密码,直接回车。

#登录成功后标志。

#登录失败后标志。

#   !可用于退出登录。

#匿名登录后默认目录,/var/ftp/。

#进入服务器端可见。

使用匿名ftp搭建yum源服务器:

安装好环境后进行

服务器端设置:

cd  /var/ftp/pub/#进入到ftp默认登录目录。

mkdir  leng/#设置一个挂载目录。

chmod  777  leng#给目录设置最大权限。

umount  /dev/sr0#卸载之前挂载的光盘,没挂可省。

mount  /dev/sr0  /var/ftp/pub/leng/

#挂载到leng目录。

service   vsftpd  restart

#重启服务。

客户端设置:

cd   /etc/yum.repos.d/

#进入到yum源目录。

rm   -rf   *

#删除当前目录下所有文件

vi   leng.repo

[leng]

name=yum  server

baseurl=ftp://1.1.1.5/pub/leng/

enabled=1

gpgcheck=0

#设置客户端yum源目录路径。

yum  list

#发现yum 搭建成功。

测试上传下载:

安装好环境后进行

服务器端设置:

cd   /var/ftp/pub/

#进入ftp登录目录

touch  1.txt

#建立一个测试文件

vim /etc/vsftpd/vsftpd.conf

#进入到vsftpd服务配置文件,ftp默认只允许下载,上传需要修改配置文件。

anon_upload_enable=YES

#取消这一行的注释,表示允许上传数据到服务器,保存退出。

service  vsftpd  restart

#重启服务,这样就可以了嘛?

在Linux中,除了对服务要有写权限,还要对目录有写权限。建议不要去改目录权限。

chown  ftp  /var/ftp/pub

#修改目录所属主

客户端设置:

touch  2.txt

#新建一个用户测试的文件

ftp  1.1.1.5

#登录ftp服务器,匿名方式登录

#不用密码直接回车

#下载文件成功

#上传文件成功

测试限制端口使用范围:

环境搭建好后

服务器端设置:(用本地用户测试)

useradd  leng

passwd  leng

#新建用户leng,密码123.

vi  /etc/vsftpd/vsftpd.conf

pasv_enable=YES

pasv_min_port=50000

pasv_max_port=50005

#在文件尾加入三行,开启被动端口范围,限制在(50000-50005)之间。

anon_upload_enable=YES

#取消这一行的注释,允许上传文件。

service  nsftp  restart

客户端设置:

dd if=/dev/zero of=8.txt bs=1M count=800

#建立一个大一点的文件用于上传到服务器测试端口,测试速度要快,实在不行,文件大一点,也可先在服务器端打好命令。

ftp  1.1.1.5

#用本地用户登录,必须输入密码。

put   8.txt

#FTP登录后上传文件

切换到服务器:

netstat  -anpt

#发现限制端口范围生效了。

测试设置用户限制:

环境搭建好后

服务器端设置:

新建二个用户mm、nn,设置好密码。

vi  /etc/vsftpd/vsftpd.conf

userlist_enable=YES

#默认是开启的。

vi  /etc/vsftpd/user_list

mm

#在文件尾加入mm用户。

客户端:

ftp  1.1.1.5

#先登录mm,发现登录不了。

再登录nn:

#登录成功。

#如果把userlist_enable=YES改为userlist_enable=NO,发现,mm和nn用户都能登录。

#如果userlist_enable=YES,再加上userlist_deny=NO,发现,mm能登录,nn不能登录。

#在/etc/vsftpd/下有个文件ftpusers,里面是禁止登录的用户,优先级更高于user_list文件。如果把mm再加入到ftpusers文件中,不用重启服务,会发现mm用户不能再登录了,ftpusers文件默认生效。

四、设置虚拟用户

虚拟用户:为了防止在服务器上创建过多的用户

实验前请确定FTP配置文件中没有是初始的。

yum  -y  install  vsftpd

#安装服务器端所需要的文件

1、建立虚拟FTP用户的账号数据库文件,文件名任意取,文件中内容奇数行写用户名,偶数行写密码,一行只能定义一个用户名。

cd   /etc/vsftpd/

vi  ceshi.list

#新建文件用于写入用户和密码,加入以下虚拟用户:

db_load  -T  -t  hash  -f  ceshi.list  ceshi.db

#把数据文件用hash算法转换成 .db 数据库文件

chmod  600  ceshi.*

#设置用户密码文件除管理员外其他人不可见。

2、创建FTP根目录及虚拟用户映射的系统用户;

useradd  -d  /home/ceshi  -s  /sbin/nologin  ceshi

#创建一个普通用户,指定用户家目录并设置该用户不可登录。

cd   /home

chmod  755  ceshi/

#设置用户家目录权限

3、建立支持虚拟用户的PAM认证文件;

cd   /etc/pam.d/

cp   vsftpd   vsftpd.pam

#备份一个PAM认证文件

vi   vsftpd.pam

#打开文件进行修改设置

#%PAM-1.0

auth       required     pam_userdb.so  db=/etc/vsftpd/ceshi

account    required     pam_userdb.so   db=/etc/vsftpd/ceshi

#指定认证的信息,删除文件多余信息。

#设置用户认证文件

添加虚拟用户支持:

4、在vsftpd.conf文件中添加支持配置;

cd  /etc/vsftpd

vi  vsftpd.conf

#在文件尾加入

guest_enable=YES

#启用虚拟用户认证

guest_username=ceshi

#设置虚拟用户认证所用的真实系统用户名称

pam_service_name=vsftpd.pam

#指定认证的文件名

user_config_dir=/etc/vsftpd/config

#指定配置文件目录(自定义)

5、为个别虚拟用户建立独立的配置文件;

cd   /etc/vsftpd/

mkdir   config/

touch  user1  user2  user3

#新建三个文件和虚拟用户名一样的文件。

vi  user1

anon_upload_enable=YES

#设置user1可上传的权限。

vi  user2

anon_mkdir_write_enable=YES

#设置user2可创建目录权限。

#user3不作修改,使用默认权限。

启动服务并测试:

6、重新加载vsftpd配置;

service  vsftpd  restart

iptables  -F

setenforce  0

7、使用虚拟FTP账户访问测试。

touch   aa   bb   cc

#客户端建立测试文件

ftp  1.1.1.5

#使用FTP远程登录,先测试user1,登录密码123。

#上传成功,退出登录,再使用user2用户登录

#上传失败,创建目录成功,再使用user3用户登录

#无法创建目录也无法上传文件

#由于下载没有做出限制,所以,所有用户都可下载。

五、FTP+SSL

1、用FTP服务器做实验抓取user1登录的用户名和密码:

tcpdump  port  21  -nA

使用虚拟用户user1在客户端登录

ftp 1.1.1.5

#再去服务器端查看,  发现里面的内容有这么两条,刚好是登录的用户名和密码。

原因:

FTP默认是明文传输。

解决:

使用FTP+SSL

查看FTP是否支持SSL

2、FTP+SSL

openssl  req  -new  -x509  -nodes  -out  vsftpd.pem  -keyout  vsftpd.pem

openssl:指定给SSL加密的命令。

req:生成。

-new:表示新建一个证书。

-x509:证书的格式。

-nodes:表示在生成证书的时候,指定不为证书生成默认的加密程序(默认新建证书会生成一个密码保护)。

-out :指定证书的名字。

-keyout:指定私钥的文件名。

国家——省/州——城市——公司——组织——服务器——邮件地址

#命令回车后输入的信息分别是

chmod  400  vsftpd.pem

#设置文件权限为400

cp  vsftpd.pem /etc/ssl/certs/

#把证书拷贝到默认的目录

vi  /etc/vsftpd/vsftpd.conf

ssl_enable=YES

#启用加密证书

allow_anon_ssl=YES

#允许匿名用户使用加密程序

force_local_data_ssl=YES

#强制本地用户数据传输时使用SSL。

force_local_logins_ssl=YES

#强制本地用户登录时使用SSL。

force_anon_data_ssl=YES

#强制匿名用户数据传输时使用SSL。

force_anon_logins_ssl=YES

#强制匿名用户登录时使用SSL。

ssl_tlsv1=YES

#指定加密时使用的协议

ssl_sslv2=NO

ssl_sslv3=NO

#加密协议一共三个,不使用的也必须指定。

rsa_cert_file=/etc/ssl/certs/vsftpd.pem

#指定证书所在位置

#保存退出

service vsftpd restart

tcpdump  port  21  -nA

#监听21端口信息

#使用远程工具登录连接后,再去看服务器,发现密码已经找不到了。

********************

注意事项:

********************

1、FTP不允许上传目录,可压缩或直接在服务器上建立目录,不过FTP默认不允许建立目录的,要建立目录,取消anon_mkdir_write_enable=YES前的注释。

2、FTP中不支持  rm  命令,删除目录要用  rmdir  命令。

3、本地用户登录,如果没有设限制,默认是家目录以外的目录的,,在服务器上不安全,开启chroot_local_user=YES 选项就可。

4、FTP默认所有可登录用户都是可下载文件的。

5、客户端使用  ?  查看FTP是可使用的命令。

6、客户端使用  ! 退出,会清空你之前输入的历史命令,而 exit  命令退出不会。(发现exit好像不是退出连接)

7、搭建FTP服务器,根目录用需要分太大的空间,用户上传的文件都上传到家目录,所以应该多分给 home 目录。

8、/etc/vsftpd/ftpusers文件中出现的任何用户名都不允许登录FTP,不管userlist中如何设置。

9、虚拟用户可设置每个用户的不同访问权限,而本地用户不行。

时间: 2024-10-25 03:12:39

搭建FTP的相关文章

Windows server 2008 r2搭建FTP服务器

最近需要搭建FTP服务器,顺着书上的教程走一遍流程. 1. 安装FTP服务 图一 图二 图三 可以看到上面提示并未启动windows自动更新,这个需要注意一下. 2. 新建FTP站点 准备FTP文件夹: 图四 开始新建站点: 图五 图六 此步由于没有SSL证书所以选择无. 图七 这里给予所有用户读取的权限. 图八 图九 这样子可以算是初步弄好,虽然在服务器端是可以访问的,但是由于没有设置防火墙,所以外面是暂时访问不了的. 图十 如果只是测试用的话,可以将防火墙关闭,但是真正使用的话则需要进一步的

RedHat5.9下搭建FTP服务器

FTP服务:基于C/S结构的文件传输协议 FTP会话属于复合TCP连接: 控制连接:TCP 21端口,发送FTP命令信息 数据连接:TCP 20端口,上传/下载数据 实验环境: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 一. 实验要求:配置可匿名上传FTP服务 1.安装软件包 [[email protected] ~]# rpm -q vsftpd package vsftpd is not installed

CentOS搭建FTP

Centos搭建FTP,yum 傻瓜式搭建,犹如喝水那么简单,按照这方法还不能搭建出来,证明你不是这块料. 1,         安装:vsftpd,可以通过光盘或网络安装 光盘安装:挂载ios镜像,mount /dev/cdrom /mnt 进入cd /mnt目录,找到vsftpd安装包即可 在线安装:yum install vsftpd –y 完成后就可以使用ftp 默认安装路径是在/var/ftp/pub. 2,         拷贝光盘镜像 首先把光盘的ios中Packages目录里面的

linux下搭建ftp服务

操作系统:centos7.0 64位 使用vsftpd搭建ftp服务 1.yum install vsftpd 2.启动/重启/关闭vsftpd服务器[[email protected] ftp]# /sbin/service vsftpd restartShutting down vsftpd: [ OK ]Starting vsftpd for vsftpd: [ OK ]OK表示重启成功了.启动和关闭分别把restart改为start/stop即可.如果是源码安装的,到安装文件夹下找到st

centos7 搭建ftp服务器

本文采用最新的centos7 来学习搭建linux各种服务器,今天分享的是搭建ftp服务器(ps:不建议使用最新的系统去学习,因为系统发生了改变,好多以前的搭建服务器的方法就不行了,比如说centos7将防火墙由iptables换为了firewall,再按照原来的教程去搭建就会遇到很多问题.....,当然如果只是想用服务器大可在安装的时候勾选相应的选项系统会自动安装好相关的服务)由于本人运气比较差,所以在安装的过程遇到了各种奇葩的问题,并且本人还是一个刚入门的小菜鸟,因此花了足足3天才算把ftp

搭建FTP服务器

FTP服务器软件: FTP服务使用FTP协议来进行文件的上传和下载. 注:如果新下载了一个软件而不会安装,则先将软件解压,然后进入软的目录,打如下命令来查看软             件的安装帮助:       #man   INSTALL   或#man   README 实验拓扑: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 实验一:测试默认安装vsftpd的结果 匿名用户与本地用户都可以登录 匿名用户登录到

RedHat6.2搭建FTP服务器

我的环境: A:Red Hat Enterprise 6.2 IP:192.168.16.12 此机作测试端 B:Red Hat Enterprise 6.2 IP:192.168.16.13 此机做FTP服务端 B机上搭建FTP服务器: 下载并安装vsftpd-2.2.2-6.el6_0.1.i686 [[email protected] ~]# rpm -ivh vsftpd-2.2.2-6.el6_0.1.i686.rpm 创建测试用户: [[email protected] ~]# us

ubuntu12.04下搭建ftp服务器

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网服务器上搭建一个ftp的服务器. 1.安装ftp 首先在终端下键入如下内容,安装ftp服务器: sudo apt-get install vsftpd 2.配置ftp 修改ftp的配置文件,该文件在/etc目录下,在终端中键入如下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的修改以下几个配置项即可: #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_e

Linux系统搭建FTP服务器

在Linux系统中搭建FTP服务器 一.搭建概述: 在Linux系统中搭建一台FTP服务器是很必要的,这个服务器只要你搭建成功以后就可以在这个服务器上存放一些你自己需要的一些软件.文档.手册等等.搭建好以后就可以直接使用这个服务器,提升了你自己的一个工作速度和一些工作的简便方法.下面就来具体的搭建一下.本问是自己一个人摸索搭建的,如有什么不妥的地方请多多指教.谢谢! 二.搭建步骤: 1.启动Linux虚拟机,并在命令终端上操作. 2.检测一下系统中是否安装FTP服务器 命令:rpm-qa | g

从建立yum仓库到搭建ftp以及http服务

1 什么是yum仓库 yum工作需要依赖C/S架构工作模式的文件服务器,服务器中存放了yum工作时所需的程序包.yum接收到需要安装的程序包的名称之后,通过文件共享协议(或者文件传输协议),在配置文件中指向的yum仓库(可以是多个)中查询需要的程序包.找到之后,通过文件下载协议,将程序包下载至本地yum的缓存目录中,当安装完成后,缓存目录便会被删除 yum的配置文件位置在/etc/yum.repos.d/base.repo,用vim工具编辑下. yum内容格式: 1 [base] 2 name=