Network

腾讯云搭建 FTP 文件服务

2021-05-02  本文已影响0人  刘小白DOER

    笔者报考了腾讯高级云架构工程师认证,最近一段时间就是死磕云计算的知识,在腾讯实验室以及购买的LAMP云服务器上测试学习。今天就来搭建 FTP 文件服务,平时使用ftp服务基本在内部局域网中,腾讯云搭建 FTP可直接在公网上使用。

    FTP 是一个很实用的文件传输协议,方便在客户端和服务器之间进行文件的传输,vsftpd 是在 Linux 上被广泛使用的 FTP 服务器。本文在腾讯云Ubuntu 16以及CentOS 7两个平台下来测试, 利用vsftpd 来搭建一个 FTP 服务。

    安装vsftpd并开启服务后是可以直接使用的,但是是匿名登陆,也无法区分用户访问,为了保障服务器安全需要限制权限,创建专有的 FTP 登录账户。

    Ubuntu 16

    1、安装 VSFTPD

    sudo apt-get install vsftpd -y

    2、启动 VSFTPD

    sudo netstat -nltp | grep 21,通过 netstat 命令可以看到系统已经监听了21端口。

    安装完成后 VSFTPD 会自动启动,如果没有启动,可以手动开启 VSFTPD 服务:sudo systemctl start vsftpd.service。

    3、配置用户访问目录

    新建用户主目录:sudo mkdir /home/uftp

    创建一个用户 uftp:sudo useradd -d /home/uftp -s /bin/bash uftp

     uftp 用户设置密码:sudo passwd uftp

    删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败:sudo rm /etc/pam.d/vsftpd

    4、限制该用户仅能通过 FTP 访问

    为了保障服务器安全,用户 uftp 只能通过 FTP 访问服务器,而不能直接登录服务器:sudo usermod -s /sbin/nologin uftp 

    5、修改 vsftpd 配置文件

    修改 /etc/vsftpd.conf 文件中的配置,直接将如下配置添加到配置文件最下方:

# 限制用户对主目录以外目录访问

chroot_local_user=YES

# 指定一个 userlist 存放允许访问 ftp 的用户列表

userlist_deny=NO

userlist_enable=YES

# 记录允许访问 ftp 用户列表

userlist_file=/etc/vsftpd.user_list

# 不配置可能导致莫名的530问题

seccomp_sandbox=NO

# 允许文件上传

write_enable=YES

# 使用utf8编码

utf8_filesystem=YES

6、新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户

    sudo touch /etc/vsftpd.user_list

    sudo chmod a+w /etc/vsftpd.user_list

    修改 /etc/vsftpd.user_list ,加入刚刚创建的用户:uftp

7、设置访问权限

    设置主目录访问权限,只读:sudo chmod a-w /home/uftp

    新建公共目录,并设置权限(读写):sudo mkdir /home/uftp/public && sudo chmod 777 -R /home/uftp/public

    重启vsftpd 服务:sudo systemctl restart vsftpd.service

8、用户主目录/home/uftp/只读,新建一个文件测试。

    sudo touch /home/uftp/welcome.txt

9、通过 Windows 资源管理器访问

    ftp://uftp:你的密码@<您的 CVM IP 地址>。

    public目录下可以读写,上传和下载,而主目录只能读取。

CentOS 7

1、使用yum安装vsftpd 

    yum install vsftpd -y

2、启动vsftpd 

    systemctl start vsftpd.service

     netstat 命令可以看到系统已经监听了21端口:  netstat -nltp | grep 21

3、访问 ftp://<您的 CVM IP 地址> 可浏览机器上的 /var/ftp 目录了,此时FTP 服务登陆允许匿名登陆,也无法区分用户访问,需要配置 FTP 访问权限。

vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:

vsftpd.conf 为主要配置文件

ftpusers 配置禁止访问 FTP 服务器的用户列表

user_list 配置用户访问控制

    匿名访问让所有人都可以上传文件到服务器上而无需鉴权,而允许切换根目录则可能产生越权访问问题。阻止匿名访问和切换根目录,编辑 /etc/vsftpd/vsftpd.conf:

# 禁用匿名用户

anonymous_enable=NO

# 禁止切换根目录

chroot_local_user=YES

最后重启: systemctl restart vsftpd.service

4、创建 FTP 用户: useradd ftpuser

    为用户 ftpuser 设置密码:echo "Password" | passwd ftpuser --stdin

5、限制该用户仅能通过 FTP 访问

    限制用户 ftpuser 只能通过 FTP 访问服务器,而不能直接登录服务器:

    usermod -s /sbin/nologin ftpuser

6、为用户 ftpuser 创建主目录并约定:

/data/ftp 为主目录, 该目录不可上传文件。

/data/ftp/pub 文件只能上传到该目录下。

创建目录:mkdir -p /data/ftp/pub

设置访问权限:chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub

设置为用户的主目录:usermod -d /data/ftp ftpuser

7、通过 Windows 资源管理器访问

    ftp://uftp:你的密码@<您的 CVM IP 地址>。

    public目录下可以读写,上传和下载,而主目录只能读取。

上一篇下一篇

猜你喜欢

热点阅读