运维实施30-FTP服务

FTP服务介绍

FTP(File Transfer Protocol)是一种应用非常广泛并且古老的一个互联网文件传输协议。

  • 主要用于互联网中文件的双向传输(上传/下载)、文件共享

  • 跨平台Linux、Windows

  • FTP是C ==client==/S ==server==架构,拥有一个客户端和服务端,使用TCP协议作为底层传输协议,提供可靠的数据传输

  • FTP的默认端口21号(命令端口)20号(数据端口,主动模式下),默认被动模式下

  • FTP程序(软件)vsftpd

FTP软件名称 => vsftpd =>(very secure ftp daemon)

1、FTP服务的客户端工具

Linux:ftp(密码登录)、lftp(匿名登录)

Windows:FlashFXP(虚拟主机)、FileZilla ==IE、Chrome、Firefox 新版本的浏览器不支持==

lftp和ftp工具区别:

  • lftp:默认是以匿名用户访问

  • ftp:默认是以用户名/密码方式访问

  • lftp可以批量并且下载目录

FTP的两种运行模式(了解)

在FTP服务中,其一共拥有两种模式(主动模式+被动模式)

==参考点,FTP的服务器端。==

 

 如果是FTP服务器端主动连接客户端=>主动模式,如果是客户端主动连接FTP服务器端=>被动模式。

主动模式

cmd:命令端口(发送FTP请求)

data:数据端口(后期用于传输数据)

1.客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2.服务端的21号命令端口响应客户端的随机命令端口
3.服务端的20号端口主动==>请求连接客户端的随机数据端口 ==> 经过客户端的防火墙
4.客户端的随机数据端口进行确认
被动模式
1.客户端打开大于1023的随机命令端口和大于1023的随机数据端口向服务的的21号端口发起请求
2.服务端的21号命令端口响应客户端的随机命令端口
3.客户端主动连接服务端打开的大于1023的随机数据端口 ==> 需要开放端口的操作只需要设置在服务器上
4.服务端进行确认

FTP默认使用的就是被动模式!

比如服务端使用:1024~5000

防火墙设置一个规则1024~5000放行

FTP配置文件中MIN102

搭建FTP服务(重要)

步骤概述:

  • 关闭防火墙和selinux

  • 配置yum源(mount /dev/sr0 /mnt)

  • 软件三部曲

  • 了解配置文件

  • 根据需求修改配置文件来完成服务的搭建

  • 启动服务,开机自启动

  • 测试验证

第一步:关闭防火墙与SELinux
systemctl stop firewalld
systemctl disable firewalld
​
setenforce 0
​
vim /etc/selinux/config
SELINUX=disabled
第二步:配置YUM源
有网配置公网YUM源(阿里、清华、华为),没网就配置本地YUM源
mount /dev/sr0 /mnt
yum clean all
yum makecache
第三步:安装vsftpd软件(FTP => vsftpd)
yum install vsftpd -y
第四步:启动ftp服务并添加到开机启动项中
systemctl start vsftpd
systemctl enable vsftpd
第五步:测试FTP是否安装成功
ifconfig ens33
​
inet 192.168.66.138  netmask 255.255.255.0  broadcast 192.168.66.255
find / -name pub -type d

基于浏览器的访问(新浏览器不支持)

基础cmd命令行访问

C:\Users\ccdj>ftp 192.168.66.138
连接到 192.168.66.138。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用户(192.168.66.138:(none)): anonymous
331 Please specify the password.
密码:
​
230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Jun 09  2021 pub
226 Directory send OK.
ftp: 收到 64 字节,用时 0.00秒 64.00千字节/秒。

基于Windows资源管理器的访问

基于FlashFxp、FileZilla软件

基于ftp以及lftp命令进行连接(Linux与Linux之间的FTP文件传输)

需要单独安装

yum install ftp lftp -y
​
ftp 10.1.1.10
ftp 192.168.66.138
​
Connected to 192.168.66.138 (192.168.66.138).
220 (vsFTPd 3.0.2)
Name (192.168.66.138:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp内输入help可以查看指令帮助

FTP的配置文件详解(重要)

在Server服务器端,使用rpm -ql vsftpd

rpm -ql vsftpd
​
/usr/lib/systemd/system/vsftpd.service          启动脚本
/etc/vsftpd                                     配置文件的目录
/etc/vsftpd/ftpusers                            用户列表文件,黑名单
/etc/vsftpd/user_list                           用户列表文件,可黑可白(默认是黑名单)
/etc/vsftpd/vsftpd.conf                         配置文件(主配置文件)
/usr/sbin/vsftpd                                程序本身(二进制的命令)
/var/ftp                                        匿名用户的默认数据根目录
/var/ftp/pub                                    匿名用户的扩展数据目录

vsftpd配置文件详解:

  • anonymous_enable=NO

    • 作用:禁止匿名用户登录。

    • 说明:设置为 NO 时,FTP 服务器不允许匿名访问,所有用户必须使用有效的用户名和密码登录。

  • local_enable=YES

    • 作用:允许本地用户登录。

    • 说明:设置为 YES 时,系统上的本地用户可以使用 FTP 登录。

  • write_enable=YES

    • 作用:启用写操作。

    • 说明:设置为 YES 时,允许用户执行上传、删除、重命名等写操作。

  • local_umask=022

    • 作用:设置本地用户的文件权限掩码。

    • 说明:值为 022 表示上传的文件默认权限为 644(rw-r--r--),目录默认权限为 755(rwxr-xr-x)。

  • dirmessage_enable=YES

    • 作用:启用目录消息功能。

    • 说明:当用户进入某个目录时,会显示该目录下的 .message 文件内容。

  • connect_from_port_20=YES

    • 作用:启用从端口 20 进行数据连接。

    • 说明:设置为 YES 时,FTP 数据连接将使用标准端口 20。

  • chroot_local_user=YES

    • 作用:将本地用户限制在其主目录中。

    • 说明:设置为 YES 时,用户无法访问其主目录之外的文件。

  • allow_writeable_chroot=YES

    • 作用:允许 chroot 目录可写。

    • 说明:设置为 YES 时,即使用户的主目录是可写的,也不会触发安全限制。

  • chroot_list_enable=YES

    • 作用:启用 chroot 用户列表功能。

    • 说明:设置为 YES 时,可以通过指定的列表文件控制哪些用户被限制在主目录中。

  • chroot_list_file=/etc/vsftpd/chroot_list

    • 作用:指定 chroot 用户列表文件的位置。

    • 说明:该文件包含需要限制或不限制主目录的用户列表。

  • listen=NO

    • 作用:是否以独立模式运行 vsftpd。

    • 说明:设置为 NO 时,vsftpd 不会直接监听端口,而是依赖于 xinetd 或其他服务管理器。

  • local_root=/data/kefu

    • 作用:设置本地用户的根目录。

    • 说明:所有本地用户登录后,默认进入 /data/kefu 目录。

  • pam_service_name=vsftpd

    • 作用:指定 PAM(Pluggable Authentication Modules)服务名称。

    • 说明:用于定义 vsftpd 使用的 PAM 配置文件。

  • userlist_enable=YES

    • 作用:启用用户列表功能。

    • 说明:设置为 YES 时,可以通过用户列表文件控制哪些用户可以或不可以登录。

  • tcp_wrappers=YES

    • 作用:启用 TCP Wrappers 支持。

    • 说明:设置为 YES 时,vsftpd 会使用 /etc/hosts.allow/etc/hosts.deny 文件进行访问控制。

grep -v ^# /etc/vsftpd/vsftpd.conf
​
grep -v ^# /etc/vsftpd/vsftpd.conf >
/etc/vsftpd/vsftpd.conf

man 5 vsftpd.conf

FTP任务解决方案

任务背景

简单来说:根据我们所学的内容(FTP)搭建一个客户服务系统(主要涉及客服资料上传与下载)

1.客服人员必须使用用户名密码(kefu/123)的方式登录服务器来下载相应文档
2.不允许匿名用户访问
3.客服部门的相关文档保存在指定的目录里/data/kefu  ==> local_root=/data/kefu
4.客服用户使用用户kefu/123登录后就只能在默认的/data/kefu目录里活动

创建客服账号(Server)

useradd kefu
echo 123 | passwd --stdin kefu

不允许匿名用户访问

vim /etc/vsftpd/vsftpd.conf
​
anonymous_enable=NO 

配置修改完毕后,一定要重启vsftpd服务

systemctl restart vsftpd

指定账号访问的目录

mkdir /data/kefu -p
​
vim /etc/vsftpd/vsftpd.conf
local_root=/data/kefu

限定目录下活动

禁kefu用户只能在/data/kefu目录下

vim /etc/vsftpd/vsftpd.conf
​
chroot_local_user=YES

配置修改完毕后,一定要重启vsftpd服务

systemctl restart vsftpd

无法上传

之所以无法上传,主要原因在于kefu这个账号对于/data/kefu文件夹没有w写权限

#setfacl -R -m u:kefu:rwx /data/kefu
systemctl restart vsftpd

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

allow_writeable_chroot=YES

local_root=/data/kefu

chroot_local_user=YES

禁锢目录补充

chroot_local_user=YES 禁锢所有用户

需求:我们能不能给一小部分用户开通非禁权限。

vim /etc/vsftpd/vsftpd.conf
chroot_list_enable=YES                            开启用户列表文件
chroot_list_file=/etc/vsftpd/chroot_list        指定用户列表文件

echo kefu >>/etc/vsftpd/chroot_list                     代表客服这个账号不会被禁在指定目录

systemctl restart vsftpd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值