Centos7.8搭建FTP服务

FTP服务介绍

  • ftp就是利用文件传输的形式,获取其他机器上的数据、资料

  • ftp是在互联网中进行文件传输的一种协议,基于C/S模式,有一个服务器,一个客户端

  • ftp默认有两个端口

    ​ 一个是20端口,用于数据的传输端口

    ​ 一个是21端口,是ftp服务端用于接收客户端发来的ftp指令和参数

  • ftp服务器安装ftp协议在互联网中提供文件存储,以便客户端能够快捷的访问数据

  • ftp工作模式主要分为两种

    ​ 主动模式:ftp服务器主动向客户端发起连接请求

    ​ 被动模式:ftp服务器在等待,等待客户端发来请求

安装FTP服务

FTP是一种文件传输协议。在Linux下,有一款实现ftp协议的软件,叫vsftpd(非常安全的FTP守护进程服务)
yum install -y vsftpd

FTP客户端下载
yum install -y ftp
  • vsftpd主配置文件:/etc/vsftpd/vsftpd.conf
  • vsftpd允许用户用三种认证模式登录ftp服务器
    • 本地用户模式:基于Linux的本地账号密码进行验证,配置简单,但是安全隐患存在
    • 匿名用户模式:任何人不需要密码直接登录ftp服务器
    • 虚拟用户模式:单独为ftp工具创建用户数据库,基于口令验证账号密码信息,这些数据库仅仅用于FTP的服务,不影响其他程序,因此是最为安全的形式

匿名用户模式

  • 匿名用户是最不安全的方式,一般用于在公开展示一些不重要的信息,允许所有人可以查看的数据
  • ftp匿名用户登录模式,一般打开在企业内网平台下,并且受防火墙规则控制,以保证ftp的基本安全性
vsftpd默认已经开启匿名用户登录了
在配置文件修改或添加以下内容
[root@localhost ~]# grep -Ev "^$|^#" /etc/vsftpd/vsftpd.conf | grep 'anon'
anonymous_enable=YES   是否开启匿名用户登录模式
anon_upload_enable=YES   是否允许匿名用户上传文件
anon_mkdir_write_enable=YES  是否允许匿名用户创建目录
anon_other_write_enable=YES  是否允许匿名用户修改目录

修改完成后启动服务
systemctl start vsftpd

在ftp客户端进行测试
[root@localhost ~]# ftp 192.168.100.200
Connected to 192.168.100.200 (192.168.100.200).
220 (vsFTPd 3.0.2)
Name (192.168.100.200:root): anonymous  #输入账号
331 Please specify the password.
Password:     #匿名用户不需要密码,默认为空,直接回车即可
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,100,200,204,27).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Oct 13  2020 pub
226 Directory send OK.
ftp> 
如果开启了vsftpd的匿名用户创建目录权限,而在客户端不能创建成功,是权限问题导致
ftp> mkdir aa
550 Create directory operation failed.
ftp> 
登录ftp后默认的路径是:/var/ftp/pub/
[root@localhost pub]# ll /var/ftp
total 0
drwxr-xr-x 2 root root 6 Oct 13  2020 pub
默认的属主和用户组都是root,对于其他用户来说不能进行写操作
解决办法:给其他用户加上读写权限或修改用户属主和用户组
chown -R ftp.ftp /var/ftp/pub/
检查权限
[root@localhost pub]# ll /var/ftp
total 0
drwxr-xr-x 2 ftp ftp 6 Oct 13  2020 pub
再次创建
ftp> mkdir aa
257 "/pub/aa" created
ftp>

注:应先在ftp客户端cd进入pub文件夹

本地用户模式

  • 使用linux本地账号的验证模式,比起匿名用户是安全的多
[root@localhost ~]# grep -Ev "^$|^#" /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO  关闭匿名用户登录模式
local_enable=YES     开启Linux本地账号登录模式
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

重启服务
systemctl restart vsftpd

客户端测试
[root@localhost ~]# ftp 192.168.100.200
Connected to 192.168.100.200 (192.168.100.200).
220 (vsFTPd 3.0.2)
Name (192.168.100.200:root): qhj
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/qhj"
写在/etc/vsftpd/ftpusers文件下的用户,是无法登录ftp客户端的
[root@localhost ~]# cat /etc/vsftpd/ftpusers 
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt

虚拟用户模式

  • 顾名思义虚拟用户认证方式,就是虚拟创建出来的用户,对于服务器而言也是最安全的方式
1.安装DB工具,能够转化普通文件为vsftpd识别的数据库加密文件
yum install -y db4 db4-utils

2.创建用于验证vsftpd的数据文件
[root@localhost ~]# cat /etc/vsftpd/ftp_user.txt
qq
123
xx
888

3.由于这样的普通文件很不安全,vsftpd也无法识别该txt的文件数据,因此还得使用db_load命令对这个ftp_user.txt文件进行加密,并且修改文件属性,让普通用户无权查看
3.1 加密文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
[root@localhost ~]# cat /etc/vsftpd/ftp_user.db 
Ѿ󢄖8xx123эh^[root@localhost ~]# 
3.2 降低文件的读写权限
chmod 600 /etc/vsftpd/ftp_user.db
3.3 删除旧的文本文件,保证安全性
rm -rf /etc/vsftpd/ftp_user.txt

4.创建当虚拟用户登录ftp之后进入的文件夹路径,且和Linux中的一个用户做一个映射关系,防止虚拟用户登录后,创建了文件夹,但系统没有此用户会报错的一个问题
4.1 创建一个系统用户和虚拟用户做映射,且指定家目录,禁止用户登录shell
useradd -s /sbin/nologin -d /var/ftpdir virtual_ftp
4.2 检查该用户的家目录
[root@localhost ~]# ll -ld /var/ftpdir/
drwx------ 2 virtual_ftp virtual_ftp 59 May  2 11:21 /var/ftpdir/
4.3 修改文件夹权限、
chmod -R 755 /var/ftpdir/
4.4 将virtual_ftp用户添加到ftpuser文件中,增加系统安全,禁止该用户登录到ftp
[root@localhost ~]# tail -1 /etc/vsftpd/ftpusers 
virtual_ftp

5.修改vsftpd配置文件,添加一个支持虚拟用户验证的PAM文件,PAM是一组安全机制模块,认证文件路径在/etc/pam.d/vsftpd
修改配置文件,注释掉其他或删除,添加如下两行
[root@localhost ~]# tail -2 /etc/pam.d/vsftpd 
auth       required     pam_userdb.so   db=/etc/vsftpd/ftp_user
account    required     pam_userdb.so   db=/etc/vsftpd/ftp_user

6.修改vsftpd配置文件,加载支持虚拟用户模式
[root@localhost ~]# grep -Ev "^$|^#" /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
guest_enable=YES   开启虚拟用户模式
guest_username=virtual_ftp   指定虚拟用户账号
allow_writeable_chroot=YES   如果用户被限制只能在其家目录,允许用户可以对家目录写入数据
user_config_dir=/etc/vsftpd/virtual_user_dir  自定义的vsftpd的用户配置文件

7.针对不同用户设置不同权限
qq:针对该用户,允许能够上传,新建,修改,查看,删除等权限
xx:只读权限
创建一个管理虚拟用户的家目录并创建虚拟用户的配置文件
mkdir /etc/vsftpd/virtual_user_dir

[root@localhost ~]# cat /etc/vsftpd/virtual_user_dir/qq 
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@localhost ~]# cat /etc/vsftpd/virtual_user_dir/xx
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

8.重新启动服务
systemctl restart vsftpd

9.客户端测试
[root@localhost ~]# ftp 192.168.100.200
Connected to 192.168.100.200 (192.168.100.200).
220 (vsFTPd 3.0.2)
Name (192.168.100.200:root): qq
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir bb
257 "/bb" created
ftp> quit
221 Goodbye.

[root@localhost ~]# ftp 192.168.100.200
Connected to 192.168.100.200 (192.168.100.200).
220 (vsFTPd 3.0.2)
Name (192.168.100.200:root): xx
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir cc
550 Permission denied.
ftp> 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值