首页 > 其他分享 >FTP服务

FTP服务

时间:2023-12-17 15:23:31浏览次数:31  
标签:FTP enable 服务 ftp vsftpd YES root localhost

目录

FTP服务

FTP是什么

FTP(File TransferProtocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。tcp协议:20,21端口。

重要端口:21端口(传输指令)、22端口(传输数据)

FTP模型

用户接口:提供一个用户接口并使用客户端协议解释器的服务

客户端协议解释器:向远程服务器发送命令 并建立客户数据传输过程

服务端协议解释器:响应客户协议机发出的命令并驱动服务端数据传输过程

客户端数据传输协议:负责完成和服务器数据传输过程及客户端本地文件系统的通信

服务端数据传输协议:负责完成和客户数据过程及服务器端文件系统的通信

两种模式

Standard模式(主动模式)

FTP客户端首先和FTP Server的TCP
21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

Passive模式(被动模式)

在建立控制通道的时候和standard模式类似,当客户端通过这个通道发送PASV命令的时候,FTP
server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server将通过这个端口进行数据的传送,这个时候FTp server不再需要建立一个新的和客户端之间的连接

注:以上的说明主动和被动,是相对于的FTP server端而判断,如果server去连接client开放的端口,说明是主动的,相反,如果client去连接server开放的端口,则是被动。

  • 主动模式:服务器主动发起数据连接
  • 被动模式:服务器被动等待数据连接

VSFTPD服务介绍

  • 服务包:vsftpd
  • 服务类型:由Systemd启动的守护进程
  • 配置单元:/usr/lib/systemd/system/vsftpd.service
  • 守护进程:/usr/sbin/vsftpd
  • 端口:21(ftp),20(ftp‐data)
  • 主配置文件:/etc/vsftpd/vsftpd.conf
  • 用户访问控制配置文件:/etc/vsftpd/ftpusers /etc/vsftpd/user_list
  • 日志文件:/etc/logrotate.d/vsftpd
  • 配置文件参数
参数 作用
listen=NO 是否以独立运行的方式监听服务
listen_address=ip地址 设置要监听的IP地址
listen_port=21 设置FTP服务的监听端口
download_enable=YES 是否允许下载文件
userlist_enable=YES 设置用户列表为"允许"
userlist_deny=YES 设置用户列表为"禁止"
max_clients=0 最大客户端连接数,0为不限制
max_per_ip=0 同一IP地址的最大连接数,0为不限制
anonymous_enable=YES 是否允许匿名用户访问
anon_upload_enable=YES 是否允许匿名用户上传文件
anon_umask 匿名用户上传文件的umask
anon_root=/var/ftp 匿名用户的ftp根目录
anon_mkdir_write_enable=YES 是否允许匿名用户创建目录
anon_other_write_enable=YES 是否开放匿名用户的其他写入权限(重命名、删除等)
anon_max_rate=0 匿名用户的最大传输速率,0为不限制
local_enable=yes 是否允许本地用户登录
local_umask=022 本地用户上传文件的umask值
local_root=/vat/ftp 本地用户的ftp根目录
chroot_local_user=YES 是否将用户权限禁锢在ftp目录,以确保安全
local_max_rate=0 本地用户的最大传输速率,0为不限制

基础配置

安装vsftp

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

准备分发的文件

[root@localhost ~]#touch /var/ftp/abc.txt

启动服务

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

关闭防火墙

[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0

客户端工具

Linux

区别

ftp工具是一定要输入用户名称和密码

登录成功或者失败ftp会给出提示、lftp不会直接给出登录成功或者失败的结果

第一种(ftp)

[root@localhost ~]# yum install ftp -y
[root@localhost ~]# ftp <IP地址>
Name (192.168.28.33:root):anonymous
password:直接回车

第二种(lftp)

[root@localhost ~]# yum install lftp -y
[root@localhost ~]# lftp <IP地址>

注意

ftp默认禁止root等用户登录

vim /etc/vsftpd/user_list
//在该配置文件中可以看见所有被禁止登录的用户

Windows

第一种

  • 可以在浏览器、运行窗口或者资源管理器中输入ftp://IP地址/,这样访问的是ftp的根位置,如果需要访问相关目录可以输入ftp://IP地址/目录/文件名

第二种

  • 在cmd窗口中,输入命令ftp <IP地址>即可访问

需要注意的是直接访问ftp服务器的IP地址时访问的根位置目录是/var/ftp如下图,比如如果需要访问pub里的test可以访问ftp://192.168.28.33/pub/test

案例1 实现匿名用户访问

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_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 ~]# systemctl restart vsftpd
linux的目录权限会限制我们不允许往里面新建文件,但是如果直接添加目录的w权限又会导致触发他的安全判断问题,所以就把ftp目录里的pub目录的属主和属主改为ftp解决,并且添加写权限
chown ftp.ftp /var/ftp/pub
chmod 777 /var/ftp/pub
现在就可以往里面写文件了

案例2 实现本地用户访问

//使用本地用户登录成功时位置在家目录的位置

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
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 ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl enable vsftpd

注意:出现在/etc/vsftpd/ftpusers /etc/vsftpd/user_list这两个文件
中的内容将会被定义为黑名单

案例3 虚拟用户访问

  1. 创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。

    [root@localhost ~]# cd /etc/vsftpd/
    [root@localhost vsftpd]# vi vuser.list
    eagle
    centos
    cisco
    centos
    huawei
    centos
    
  2. 使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件。

    [root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
    [root@localhost vsftpd]# file vuser.db
    vuser.db: Berkeley DB (Hash, version 9, native byte-order)
    [root@localhost vsftpd]# vi vuser.db
    //查看user.db文件的详细信息 此时用户名与密码已被加密,用vi命令无法看出原始账号密码
    
  3. 降低数据库文件的权限(避免其他人看到数据库文件的内容)

    [root@localhost vsftpd]# chmod 600 vuser.db
    
  4. 把原始的明文信息文件删除。

    [root@localhost vsftpd]# rm -f vuser.list 
    
  5. 创建一个本地用户,用来做虚拟用户在本地的代理,为了安全起见,禁止这个本地用户登录

    [root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
    //创建了一个ftproot用户,此后虚拟用户在访问内容存放在该用户目录下
    [root@localhost vsftpd]# ls -ld /var/ftproot/
    drwx------. 2 virtual virtual 59 8月 10 23:04 /var/ftproot/
    [root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/
    //降权禁止登录
    
  6. 新建一个用于虚拟用户认证的PAM文件vsftpd.vu,利用pam模块(linux内核的一个认证模块)做一个认证。

    [root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu
    auth required pam_userdb.so db=/etc/vsftpd/vuser
    account required pam_userdb.so db=/etc/vsftpd/vuser
    //写入
    
  7. 修改配置文件

    [root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf
    //修改以下配置
    anonymous_enable=NO
    local_enable=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=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.vu #记得修改这里为我们自己的认证文件
    userlist_enable=YES
    tcp_wrappers=YES
    [root@localhost vsftpd]# systemctl restart vsftpd
    

    用刚刚创建好的用户登录,但是只能登录,不能写文件,想要给权限,这个用户的权限是被匿名用户权限控制的

  8. 个性化定制权限

    [root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/
    [root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/
    [root@localhost vusers_dir]# touch huawei
    [root@localhost vusers_dir]# vi cisco
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    [root@localhost vusers_dir]# vi /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    local_enable=YES
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=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.vu
    userlist_enable=YES
    tcp_wrappers=YES
    user_config_dir=/etc/vsftpd/vusers_dir #告诉主配置文件我们这里还有配置
    [root@localhost vusers_dir]# systemctl restart vsftpd
    

    只对cisco用户的配置文件进行修改,huawei用户无改动。所以仅cisco用户可以在ftp文件夹进行修改

  9. 功能检测

    huawei用户不可修改

    cisco用户可修改

标签:FTP,enable,服务,ftp,vsftpd,YES,root,localhost
From: https://www.cnblogs.com/yysjdys/p/17909115.html

相关文章

  • 使用DNS查询Web服务器IP地址
    浏览器并不具备访问网络的功能,其最终是通过操作系统实现的,委托操作系统访问服务器时提供的并不是浏览器里面输入的域名而是ip地址,因此第一步需要将域名转换为对应的ip地址域名:www.baidu.comip地址是一串数字tcp/ip的网络结构:计算机通过集线器连接在一起构成一个个子网,子网......
  • 使用Go实现一个百行聊天服务器
    前段时间,redis作者不是整了个c语言版本的聊天服务器嘛,地址,代码量拢共不过百行.于是,心血来潮下,我也整了个Go语言版本.简单来说就是实现了一个聊天室的功能.将所有注释空行都去掉,刚好100行实现.废话不多说,先上代码:packagemainimport( "fmt" "log" "net"......
  • 服务器raid5两块硬盘离线数据恢复
    IBMV5000的故障如下:一块硬盘红灯闪亮,机器还在正常运行,但没有多久,系统就不能正常运行,这时才发现另一块硬盘的红灯也在闪亮。 磁盘阵列数据恢复过程:1.启动服务器,自检至阵列时按Ctrl+M进入NetRaid管理程序。查看阵列信息,发现硬盘下线,运用修改配置将一硬盘强行设置成上线。重新启......
  • 阿贝云免费云服务器个人评价
    阿贝云是一家提供免费云服务器的云服务提供商,下面是对其性能的评价。首先,阿贝云的免费云服务器性能表现良好。它提供了稳定可靠的服务器运行环境,可以满足简单的网站部署、数据存储和应用开发等基本需求。免费云服务器配置合理,RAM和CPU资源分配足够,可以支持一般的应用程序运行。......
  • 服务器系统安装
    制作支持UEFI引导的U盘在Systemx服务器上安装WindowsServer2008R2操作系统本例是在Systemx3550M55463型上通过U盘安装WindowsServer2008R2操作系统,其他机型以U盘方式安装系统或者以刻录DVD光盘方式安装系统,也可参考本例。 若服务器全新或者所有阵列及数据皆可删除,也......
  • Linux配置DHCP服务
    一、DHCP简介DHCP(动态主机配置协议,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于简化IP地址的分配和管理。它在局域网中广泛应用,旨在为内部网络主机自动分配IP地址,以及为网络管理员提供集中管理手段。DHCP的主要作用和优点:集中管理:DHCP允许网络管理员集中......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本机......
  • Redis远程字典服务
    1介绍Redis(RemoteDictionaryServer)是一个开源的内存数据存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sortedsets)等。2使用场景相对于使用数据库,它读取更方便,时间更短相对于存储在硬盘上,它可......
  • 修改服务器名称
    转载请注明出处:在Ubuntu系统中,可以通过以下方法来修改主机名:1.使用hostnamectl命令:sudohostnamectlset-hostnamenew-hostname在这个命令中,new-hostname是设置的新的主机名。这个命令会立即更改主机名,并且不需要重启系统。2.编辑配置文件:sudovi/etc/hostname......