FTP搭建

1、FTP简介:

在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。

"下载"文件就是从远程主机拷贝文件至自己的计算机上;

"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。

用Internet语言来说,用户可通过客户机程序向(从)远程主机上传下载)文件。

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信。

20端口用于建立数据连接,并传输文件数据;

21端口用于建立控制连接,并传输FTP控制命令。

根据FTP服务器在建立数据连接过程中的主、被动关系,FTP数据连接分为主动模式和被动模式:

主动模式:服务器主动发起数据连接。首先由客户端向服务端的21端口建立FTP控制连接,当需要传输数据时,客户端以PORT命令告知服务器“我打开了某端口,你过来连接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接。

被动模式:服务器被动等待数据连接。如果客户机所在网络的防火墙禁止主动模式连接,通常会使用被动模式。首先由客户端向服务端21端口建立FTP控制连接,当需要传输数据时,服务器以PASV命令告知客户端“我打开了某个端口,你过来连接我”,于是客户端向服务器的该端口(非20)发送请求并建立数据连接。

FTP用户类型

匿名用户:anonymous 或 ftp,提供任意密码都可以通过服务器的验证,一般用于提供公共文件的下载。

本地用户:直接使用本机的系统用户,账号名称、密码等信息保存在 passwd、shadow 文件中。

虚拟用户: 使用独立的账号/密码数据文件,将FTP账户与系统账户的关联性降至最低,可以为系统提供更好的安全性。

anonymous_enable=YES:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限

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

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

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

anon_other_write_enable=YES:开放匿名用户其他写入权

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

local_root=/var/ftp:设置本地用户的 FTP 根目录
local_enable=YES:本地用户可以登陆
write_enable=YES:本地用户可写
anon_world_readable_only=YES:匿名用户可以下载
anon_other_write_enable=YES:匿名用户可以删除
anon_mkdir_write_enable=YES:匿名用户可以新建目录

2、搭建过程

1、实验环境:

搭建好yum源、关闭selinux

server1服务器端:172.25.1.1

server2客户端:172.25.1.2

注意:lftp和vsftpd不一样,vsftpd是服务端需要安装的服务,lftp是客户端需要安装的服务

可能的报错:

500         文件系统权限过大

530         用户认证失败

550        服务功能未开放

553        本地文件系统权限过小

2、服务器端:

[root@server1 ~]# yum install -y vsftpd

[root@server1 ~]#systemctl start vsftpd
[root@server1 ~]#systemctl enable vsftpd

若此时防火墙处于开机状态,则:

[root@server1 ~]#firewall-cmd --permanent --add-server=ftp             //让防火墙允许ftp服务通过

[root@server1 ~]#firewall-cmd --reload             //重新加载防火墙

[root@server1 ~]#cd /var/ftp/pub/                    //ftp的默认发布目录,可以给目录下随便下载点东西

1.设置匿名用户上传

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf                       //ftp的配置文件

anon_upload_enable=YES                                 //匿名用户可上传

write_enable=YES                    //本地用户可写

[root@server1 ~]# systemctl restart vsftpd

[root@server1 pub]# chmod 775 /var/ftp/pub
[root@server1 pub]# chgrp ftp /var/ftp/pub

3、客户端下载服务lftp

[root@server2 ~]# yum install -y lftp

[root@server2 ~]# lftp 172.25.1.1                            //使用lftp连接时默认进入的是服务器端的/var/ftp/

可以看出已经上传成功,应该注意:上传文件的时候必须在pub目录下进行匿名用户是否可以上传的前提是本地用户可写

[root@server1 pub]# ls                     //此时可以在服务器端看到passwd文件已经上传到服务器
passwd  zabbix

2.匿名用户上传速率的设置

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf     

 anon_max_rate=102400                   将速率设置为100K                     


[root@server1 pub]# systemctl restart vsftpd

对比不设置上传速率与设置之后的区别,可以看出上传速率明显受到限制

3.umask的设置

默认本地文件的权限为022

local_umask=022

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

修改之后是:

修改后的文件权限已经被更改

3.限制本地用户浏览目录,即只有登陆服务器端的用户(本地用户)才可进行访问

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf


[root@server1 pub]# systemctl restart vsftpd

服务器端拥有用户student,密码为redhat ;没有用户linux

客户端拥有用户linux,密码为redhat

此时,我们以linux进行登陆

[root@server2 ~]# lftp 172.25.1.1 -u linux                   //可以看出访问被拒

若用student进行登陆:

[root@server2 ~]# lftp 172.25.1.1 -u student                  //可以看出用服务器端的本地用户进行登陆可以访问

4.用户黑白名单的设定

首先是黑名单的设定(锁定在家目录中)

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# vim /etc/vsftpd/chroot_list

[root@server1 pub]# systemctl restart vsftpd

刚才student用户是可以进行访问的

[root@server2 ~]# lftp 172.25.1.1 -u student                      //可以看出此时已经无法访问根目录了

其次是白名单的设定

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf


[root@server1 pub]# systemctl restart vsftpd

[root@server2 ~]# lftp 172.25.1.1 -u student

[root@server2 ~]# lftp 172.25.1.1 -u linux                    //可以看出此时是可以访问的

除白名单student外其他用户均不可进行访问

5.用户黑白名单的永久设定

  • 设置永久黑名单

[root@server1 pub]# vim /etc/vsftpd/ftpusers  

[root@server2 ~]# lftp 172.25.1.1 -u student                    //登陆失败

  • 设置黑名单让其无法登陆

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

设置user_list_deny为YES时,表示userlist为黑名单

[root@server1 pub]# vim /etc/vsftpd/user_list                 //在配置文件中添加westos用户,并用命令useradd westos创建用户westos

westos

[root@server2 ~]# lftp 172.25.1.1 -u westos                    //因为westos在黑名单中,故登陆不成功

  • 设置白名单

[root@server1 pub]# vim /etc/vsftpd/vsftpd.conf

[root@server1 pub]# systemctl restart vsftpd

 

3、ftp虚拟用户的建立及设定

  • 创建虚拟帐号身份

[root@server1 pub]# yum install pam

[root@server1 ftp]# cd /etc/vsftpd/

[root@server1 vsftpd]# vim userdb                //编辑信息,文件名自定义

[root@server1 vsftpd]# db_load -T -t hash -f userdb userdb.db          //给用户信息文件进行加密

//其中hash为加密方式,userdb为被加密文件,userdb.db为加密后生成的文件

[root@server1 vsftpd]# ls                   //可以看见已经经过加密生成了密文文件 userdb.db

[root@server1 vsftpd]# vim ftpuser        //文件名自定,用来设定用户登陆认证方式

account     required    pam_userdb.so   db=/etc/vsftpd/userdb
auth           required    pam_userdb.so   db=/etc/vsftpd/userdb

[root@server1 vsftpd]# vim /etc/vsftpd/vsftpd.conf

[root@server1 vsftpd]# systemctl restart vsftpd

[root@server2 ~]# lftp 172.25.1.1 -u user1                   //登陆成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值