200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用FTP协议的服务 包括匿名用户验证访问 用户验证访问 虚拟用户验证访问等

使用FTP协议的服务 包括匿名用户验证访问 用户验证访问 虚拟用户验证访问等

时间:2020-03-08 16:33:15

相关推荐

使用FTP协议的服务 包括匿名用户验证访问 用户验证访问 虚拟用户验证访问等

目录

1、FTP服务概述

2、在服务端安装vsftpd程序

3、基于匿名用户验证访问的 FTP 服务

4、测试匿名 FTP服务

5、基于用户验证访问的FTP服务

6、基于用户验证访问的FTP服务的测试

7、FTP的其他服务

8、基于虚拟用户验证访问的FTP服务

9、基于虚拟用户验证访问FTP服务的测试

写在开头,作者是小白,刚开始学习linux这一块的知识,所以文章可能写的有些乱和繁杂,希望读者能够理解,因为是初学者,所以文中有些观点可能并不正确,希望有大佬能够指出,拜谢!!

1、FTP服务概述

FTP连接及连接模式

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

数据连接:TCP 20(端口号),用于上传,下载数据

数据连接的建立类型

主动模式:服务端从20端口主动向客户端发起连接

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

从运维角度来看,被动模式比较合适

####FTP 传输模式####

1、主动模式:

服务器主动发起数据连接。首先客户端向服务器的21端口建立FTP管理连接

客户端以PORT命令告诉服务器“我打开了某个端口”你来连我。

这个时候服务器以源端口20(用于发送数据的端口) 向客户端“我打开了某个端口”(随机端口号)请求并建立连接。

2、被动模式:场景:客户端有防火墙

客户机主动发起数据连接。首先客户端向服务器的21端口建立FTP管理连接

客户端有防火墙,这个时候服务器连接客户机是连不起来的,因为客户端有

防火墙,需要被动模式,

服务端以PASV命令告诉客户端“我打开了某个端口”你来连我。

于是客户端以随机端口号向服务端“我打开了某个端口”进行建立数据连接

文本模式:又称为ASCII模式,一般用于存文本的传输。

二进制模式:这种模式不会转换文件中文本的字符序号

在二者之间,二进制模式比文本模式更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,无需指定

###FTP 用户的类型###

1、匿名用户

2、本地用户(放在/etc/vsftpd/user_list中的用户)

3、虚拟用户

###Vsftpd 软件包##

1、官方站点:/

2、主程序:/usr/sbin/vsftpd

3、服务名:vsftpd

4、用户控制列表文件

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

5、主配置文件

/etc/vsftpd/vsftpd.conf

###常见的 FTP 客户端程序###

1、ftp 命令

2、CuteFTP

3、FlashFXP

4、LeapFTP

5、Filezilla

6、gftp

8、kuftp

###常见的 FTP 服务器程序###

1、IIS

2、Serv-U

3、wu-ftpd

4、Proftpd

5、vsftpd(Very Secure FTP Daemon)

2、在服务端安装vsftpd程序

关闭防火墙

[root@localhost ~]# systemctl stop firewalld ##当前关闭防火墙,临时的

[root@localhost ~]# systemctl disable firewalld ##开机不启用防火墙 永久关闭的

关闭核心防护(和写数据有关系的)

[root@localhost ~]# setenforce 0 ##当前关闭核心防护,临时的

[root@localhost ~]# vi /etc/selinux/config ##开机不启核心防护 永久关闭的

SELINUX=disabled

[root@localhost ~]# init 6 ##重启虚拟机

[root@zhengkun ~]# rpm -qa | grep vsftpd ##查看是否安装了vsftpd

【注意】服务端安装的是vsftpd,只有安装vsftpd才会有ftp目录和pub目录以及匿名用户ftp等。

##如果没有安装

[root@localhost ~]# mount /dev/cdrom /mnt ####挂载光盘

##rpm安装

[root@localhost ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm ####安装FTP软件包

用rpm安装,还需要永久挂载光盘。否则重启虚拟机挂载的光盘就没了。

或者使用yum安装(需要先配置yum源,配置本地源或者线网源)

[root@localhost ~]# yum -y install vsftpd ####安装FTP软件包

####基于匿名访问 FTP 服务---####

1、准备匿名 FTP 访问的目录

FTP的根目录是不允许匿名用户或者其他用户有写入权限(否则有500报错的)

为了后续测试方便,可以在/var/ftp目下创建一个测试文件(压缩包)

[root@localhost ~]# tar zcf /var/ftp/vsftpdconf.tar.gz /etc/vsftpd

[root@localhost ~]# ll /var/ftp

总用量 4

drwxr-xr-x 2 root root 6 8月 3 pub

-rw-r--r-- 1 root root 2795 9月 29 18:24 vsftpdconf.tar.gz

3、基于匿名用户验证访问的 FTP 服务

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

###备份一下vsftpd.conf文件,并将备份的文件改名为vsftd.conf.bak。

[root@localhost ftp]# grep -vE "^#|^$" /etc/vsftpd/vsftpd.conf ####过滤相关配置文件

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

########根据上述配置,编辑匿名配置脚本 #########

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf ####编辑匿名登录配置文件

anonymous_enable=YES ####允许匿名访问

local_enable=NO ####若不需要启动本地用户,可以设置NO

write_enable=YES####开放服务器的写入权限

anon_umask=022 ####设置匿名用户上传数据的权限掩码

anon_upload_enable=YES ####允许匿名用户上传文件

anon_mkdir_write_enable=YES####允许匿名用户创建目录

anon_other_write_enable=YES####允许匿名用户覆盖删除等管理操作

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=NO ####因未启用本地用户,可将用户列表功能禁用

tcp_wrappers=YES

方便大家复制

匿名访问共享文件的vsftpd.conf的配置

anonymous_enable=YES

local_enable=NO

write_enable=YES

anon_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=NO

tcp_wrappers=YES

[root@localhost ~]# systemctl start vsftpd#####启动vsftpd服务

[root@localhost ~]# netstat -anpt | grep "vsftpd" #####查看vsftpd服务是否启动 有21端口表示开启 ,如果提示没有netstat命令,表示没有安装net-tools,用yum安装,安装一下my-tools: yum -y istall net-tools

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 59598/vsftp

4、测试匿名 FTP服务

第一种测试方法:

Window主机在我的电脑浏览器地址栏中输入ftp://20.0.0.54/ 就可以进行匿名访问。

不能直接在ftp目录下进行传文件 下文件 删文件操作。因为ftp目录不允许匿名用户修改。即使修改ftp目录的访问权限也需要用户登录。

所以只能在pub中进行操作。所以要更改pub的权限为757,重启一下vsftpd服务,再用ftp://20.0.0.54/pub就可以在在里面进行传文件 下文件 删文件操作。

第二种测试方法:

另起一台虚拟机作为客端【注意】客户端安装的是ftp程序,安装ftp才能用ftp命令。

[root@localhost ~]# yum -y install ftp ###yum安装 ftp软件 也可以用rpm安装

[root@localhost ~]# ftp 20.0.0.54 ###ftp客户端连接 20.0.0.54,这个ip地址根据你的服务端的ip地址来定

提示successful表示登陆成功

使用ftp作为Name(用户名)登录,ftp服务中的ftp用户就表示匿名用户,相当于samba服务中的nobody用户,所以这也是一种匿名用户登录方式。匿名用户登录不需要输入Password直接回车就行。

【插个知识点】

{

虚拟机的账号信息存放在/etc/passwd目录下,可以用下行命令查看账号信息

less /etc/passwd ###表示查看账号信息

查看用户详细信息时,最后面是/sbin/nologin,像上图这样的,表示该账号是程序账号。

}

###客户端从服务端下载文件###

ftp> lcd /opt ####将本地目录切换到/opt目录

ftp> get vsftpdconf.tar.gz ####下载vsftpdconf.tar.gz到/opt

ftp> quit####退出

ll /opt####查看opt目录是否下载成功

###客户端向服务端上传文件###

ftp> cd pub ####将ftp目录切换到pub目录

ftp> ls ####ls查看一下pub目录的内容

ftp> lcd /root ####将本地目录切换到/root目录

ftp> put initial-setup-ks.cfg ####上传initial-setup-ks.cfg【注:这里我上传的是文件,如果上传文件夹会报错not a plain file:有知道怎么解决的大神希望可以帮忙评论一下】

ftp> ls ####从新查看pub目录的内容,查看是否上传成功

输入quit,退出ftp命令行

###直接用wget下载文件

wget ftp://20.0.0.54/vsftpdconf.tar.gz 【注】此时你的工作目录在哪,文件就会下载在哪。

5、基于用户验证访问的FTP服务

[root@localhost opt]# useradd laya###新建账户laya

[root@localhost opt]# passwd laya###设置账户密码

[root@localhost opt]# useradd vanko###新建账户laya

[root@localhost opt]# passwd vanko###设置账户密码

[root@localhost opt]# useradd hunter###新建账户laya

[root@localhost opt]# passwd hunter###设置账户密码

[root@l###修改vsftpd.conf配置文件###ocalhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=077

chroot_local_user=YES

allow_writeable_chroot=YES

anon_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=NO

tcp_wrappers=YES

#####重启vsftpd服务####

[root@localhost ~]# systemctl restart vsftpd

####在客户端重新登录ftp,登录到20.0.0.54#####

[root@zhengkun var]# ftp 20.0.0.54

这里的密码就是刚才创建账号时的密码。

6、基于用户验证访问的FTP服务的测试

[root@localhost opt]# ls >uptest.txt ####在/opt目录下做一个测试文件

[root@localhost opt]# ftp 20.0.0.54 ####登录ftp

Name (192.168.32.16:root): laya ####使用laya账户

ftp> put uptest.txt ####上传测试文件

ftp> ls###查看测试文件

ftp> quit

【注】这里的测试文件是上传在laya的家目录下的 cd /home/laya

####给账户登录做下白名单,使用部分账户能登录#####

[root@localhost ~]# vi /etc/vsftpd/user_list #####在白名单上添加账户laya

laya

[root@localhost ~]# vi /etc/vsftpd/ftpusers #####在ftpusers上添加账户vanko

vanko

hunter账号不进行任何操作

【ftpusers不收vsftpd.conf配置的影响,它是一个黑名单,在他上面的账号,不允许登入ftp】

#####重新配置vsftpd.conf######

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=077

chroot_local_user=YES

allow_writeable_chroot=YES

anon_umask=022

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_ipv6=NO

pam_service_name=vsftpd

userlist_enable=YES #####这个白名单功能开启

userlist_deny=NO#####黑名单功能关闭 不禁用user_list列表中的用户tcp_wrappers=YES

#####重启vsftpd服务器####

[root@localhost ~]# systemctl restart vsftpd

####这样配置,user_list起到的就是白名单的作用,此时只有user_list中的账号允许登录。也就是只有laya账号可以登陆####

####修改一下userlist_enable和userlist_deny就可以将user_list变为黑名单####

userlist_enable=YES #####这个白名单功能开启

userlist_deny=YES #####黑名单功能如果也开启

#####重启vsftpd服务器####

[root@localhost ~]# systemctl restart vsftpd

####这样配置,user_list起到的就是黑名单的作用,此时只有user_list中的账号就不允许登录了,也就是说只有hunter账号可以登陆####

7、FTP的其他服务

1、修改vsftpd服务的监听地址、端口

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

。。。。。省略。。。。。

listen=YES

listen_address=20.0.0.54 ###修改监听地址

listen_port=2121###修改端口(默认端口是21)

[root@localhost ~]# systemctl restart vsftpd

#####测试#####

#####在客户端登录ftp######

ftp 20.0.0.54 2121 ####因为修改了端口号,所以登录时要加端口号2121####

2.限制FTP的并发连接数,传输速度

vi /etc/vsftpd/vsftpd.conf

追加配置

max_clients=20 ####限制并发的客户端最大是20个

max_per_ip=2 ####限制一个IP的最大连接数是2个

local_max_rate=200000 ####限制本地用户的传输速率是200KB/S

[root@localhost ~]# systemctl restart vsftpd

8、基于虚拟用户验证访问的FTP服务

###最好重新配置一下yum源,不然会有一些莫名其妙的错误###

###首先关闭防火墙和核心防护###

####在服务端yum安装vsftpd####

####vi /etc/vsftpd/vusers.list,配置虚拟用户####

【注】奇数行是账号,偶数行是密码。

####此时查看vusers.list发现是明文,不安全#####

####创建DB格式的数据文件对vusers.list进行加密-----特点:这个文件是加密的####

[root@localhost ~]# cd /etc/vsftpd/

[root@localhost vsftpd]# db_load -T -t hash -f vusers.list vusers.db

[root@localhost vsftpd]# file vusers.db

#####出于安全考虑将vusers.list和vusers.db的权限改为600####

插个知识点:

samba服务的共享文件夹opt就放在根目录下 /opt

ftp服务的共享文件夹ftp放在根目录下的var目录下 /var/ftp

添加虚拟用户映射的账号、创建FTP的根目录

[root@zhengkun vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual

[root@zhengkun vsftpd]# cd /var/ftproot/

[root@zhengkun ftproot]# ll

####查看ftproot目录的详细信息,发现访问权限不够,需要修改,改为755###

[root@zhengkun vsftpd]# cd /var/ftproot

[root@zhengkun ftproot]# chmod 755 /var/ftproot/

[root@zhengkun ftproot]# ll /var

###在ftproot中建立两个目录,虚拟账户的目录###

[root@zhengkun ftproot]# mkdir john

[root@zhengkun ftproot]# mkdir mike

为虚拟用户建立PAM认证模块

[root@localhost ftproot]# vi /etc/pam.d/vsftpd.vu

#%PAM-1.0

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

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

修改vsftpd配置、添加虚拟用户支持、为不同用户建立独立的配置文件

[root@localhost ftproot]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO (当然你也可以设成YES,同时允许匿名用户登陆)

local_enable=YES (必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的)

guest_enable=YES(启用虚拟用户)

anon_umask=022 (虚拟用户的umask值)

guest_username=virtual(将虚拟用户映射为本地virtual用户)

pam_service_name=vsftpd.vu(指定PAM配置文件,文件已经在/etc/pam.d/存在)

user_config_dir=/etc/vsftpd/vusers_dir(指定不同虚拟用户配置文件的存放路径)

创建vusers_dir目录用来存放虚拟用户配置文件(要与前面不同虚拟用户配置文件的存放路径保持一致

mkdir /etc/vsftpd/vusers_dir

###查看是否创建成功

cd /etc/vsftpd/vusers_dir

###为虚拟用户john创建配置文件###

vi john

local_root=/var/ftproot/john (用户目录在哪)

anon_upload_enable=YES (是否允许上传)

anon_mkdir_write_enable=YES (是否允许创建目录)

anon_other_write_enable=YES(是否允许写)

###为虚拟用户mike创建配置文件###

local_root=/var/ftproot/mike (用户目录在哪)

anon_mkdir_write_enable=NO(是否允许创建目录)

anon_other_write_enable=NO(是否允许写)

###重启一下vsftpd服务###

systemctl restart vsftpd

systemctl enable vsftpd ###将vsftpd服务设置为开机自启###

9、基于虚拟用户验证访问FTP服务的测试

###用Xftp7 登录ftp20.0.0.53,或者直接在文件地址栏中输入ftp://20.0.0.53发现登陆不了,会报一个500的错###

###这里会有个bug必须加上下面这句,新建一个john组,将用户john添加到john组中,shell描述改为程序账户才能登录##

groupadd john

adduser -g john -s /sbin/nologin john

###然后再试###

就可以登录了。

尝试新建文件夹,有可能会报错,我做了两遍,第一遍直接可以新建,第二遍需要用下面的命令更改一下ftproot路径下的所有文件或文件夹的访问权限

chmod 777 -R /var/ftproot

改完之后就可以新建了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。