FTP服务

本文详细介绍了FTP协议的工作模式,vsftpd的安全特性,以及如何配置FTP服务以支持本地用户、虚拟用户和匿名访问。涉及权限设置、yum源配置、SELinux策略和PAM认证,为读者提供了FTP服务器管理的全面指南。
摘要由CSDN通过智能技术生成

#FTP的概念
FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20用于进行数据传输,端口21用于接受客户端发出的相关FTP命令与参数。FTP服务器普遍部署于内网中,具有容易搭建、方便管理的特点。而且有些FTP客户端工具还可以支持文件的多点下载以及断点续传技术,因此得到了广大用户的青睐。
在这里插入图片描述
FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端则是向服务器发送连接请求,以建立数据传输链路的主机。FTP协议有下面两种工作模式。

  • 主动模式:FTP服务器主动向客户端发起连接请求。

  • 被动模式:FTP服务器等待客户端发起连接请求(默认工作模式)。

vsftp

由于FTP、HTTP、Telnet等协议的数据都是使用明文进行传输的,因此从设计上就是不可靠的。人们为了满足以密文方式传输文件的需求,发明了vsftpd服务程序。vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费。此外,它还具有很高的安全性、传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点。在不影响使用的前提下,管理者可以自行决定客户端是采用匿名开放、本地用户还是虚拟用户的验证方式来登录vsftpd服务器。这样即便黑客拿到了虚拟用户的账号密码,也不见得能成功登录vsftpd服务器。

FTP服务使用者

  • 本地用户
    如果用户在远程FTP服务器上拥有shell登陆帐户,称此用户为本地用户,本地用户可以输入自己的账号密码进行授权登录,其登录的目录是自己的家目录($home),本地用户既可以下载也可以上传。

  • 虚拟用户
    如果用户在远程FTP服务器上拥有账号,且此账号只用于文件传输服务,则称此用户为虚拟用户。通常,虚拟用户使用与系统用户分离的用户认证文件。虚拟用户可以通过输入自己的账号和密码进行授权登录。当授权访问的虚拟用户登录系统后,其登录的目录是VSFTP为其指定的目录。虚拟用户既可以下载又可以上传。

  • 匿名用户
    如果用户在远程的FTP服务器上没有账号,则称此用户为匿名用户(Anonymous用户)。若FTP提供匿名访问权限,用户可以输入anonmous或ftp和口令登录,登录后,其访问的是匿名FTP服务器的根目录(默认为/var/ftp),一般只提供下载功能,不支持上传。

实战

  • 配置yum源
[root@localhost yum.repos.d]# mv Ce* bar/
[root@localhost yum.repos.d]# ls
bar
[root@localhost yum.repos.d]# mkdir /cdrom
[root@localhost yum.repos.d]# mount /dev/cdrom /cdrom
mount: no medium found on /dev/sr0
[root@localhost yum.repos.d]# mount /dev/cdrom /cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost yum.repos.d]# echo /dev/cdrom /cdrom iso9660 defaults 0 0 >> /etc/fstab
[root@localhost yum.repos.d]# cat local.repo 
[local]
name=local
baseurl=file:///cdrom
enabled=1
gpgcheck=0
[root@localhost yum.repos.d]# ls
bar  local.repo
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
local                                          | 3.6 kB     00:00     
(1/2): local/group_gz                            | 166 kB   00:00     
(2/2): local/primary_db                          | 3.1 MB   00:00     
Loading mirror speeds from cached hostfile
repo id                          repo name                      status
local                            local                          3,971
repolist: 3,971

  • 安装FTP服务
[root@localhost ~]# yum install -y vsftpd
  • 配置FTP文件
    在文件最上面添加一行anon_root=/opt
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
  • 启动服务,关闭防火墙、selinux
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# getenforce 
Disabled
[root@localhost ~]# systemctl stop firewalld
  • 访问测试ftp://192.168.0.20
    在这里插入图片描述

自定义配置VSFTP文件

[root@localhost ~]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
[root@localhost ~]# grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf
[root@localhost ~]# cat /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
自己写的ftp服务端程序代码,支持{"USER", do_user }, {"PASS", do_pass }, {"CWD", do_cwd }, {"XCWD", do_cwd }, {"CDUP", do_cdup }, {"REIN", do_rein },//重新初始化,此命令终止USER,重置所有参数,控制连接仍然打开,用户可以再次使用USER命令 {"QUIT", do_quit }, /*------------传输参数命令------------*/ {"PORT", do_port },//数据端口,主要向服务器发送客户数据连接的端口 //格式为PORT h1,h2,h3,h4,p1,p2,其中32位的IP地址用h1,h2,h3,h4表示,16位的TCP端口号用p1,p2表示 {"PASV", do_pasv },//此命令要求服务器数据传输进程在指定的数据端口侦听,进入被动接收请求的状态 {"TYPE", do_type },//文件类型,可指定ASCII码、EBCDIC码、Image、本地类型文件等参数 /*------------服务命令----------------*/ {"RETR", do_retr },//下载文件 {"STOR", do_stor },//上传 {"APPE", do_appe },//上传,如文件已存在,数据附加到尾部 {"REST", do_rest },//重新开始 {"RNFR", do_rnfr }, {"RNTO", do_rnto },//重命名文件或目录 {"ABOR", do_abor },//异常终止 {"DELE", do_dele },//删除文件 {"RMD", do_rmd },//删除目录 {"XRMD", do_rmd }, {"MKD", do_mkd },//新建目录 {"XMKD", do_mkd }, {"PWD", do_pwd },//打印当前目录 {"XPWD", do_pwd }, {"LIST", do_list },//列目录详细清单 {"NLST", do_nlst },//列目录短清单 {"SYST", do_syst },//获取系统信息 {"STAT", do_stat },//返回服务器状态 {"SIZE", do_size },//获得文件大小 {"HELP", do_help }, {"NOOP", do_noop }, {"SITE", do_site }, }等命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值