FTP服务器
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源
(1)最主要的功能是:服务端与客户端进行文件的传输。
(2)为了更安全地使用ftp协议,我们选择较为安全但功能较少的vsftp这个软件。
(3)ftp的功能简介:进行文件的传输与管理
1、不同等级的用户身份。
2、命令记录与日志文件记录
3、限制用户活动的目录chang root (chroot)
vsftpd服务设置
一、部署ftp服务
首先我们需要搭建好实验环境
(ip、yum源、client名字(可改可不改)、selinux关闭)
(1)配置好ip
(2)配置好yum源,可以下载vsftpd
(3)更改名字
(4)selinux关闭,关闭内核加强型火墙的作用,编辑完要reboot(内核编辑文件)
(5)开启ftp服务
(6)在火墙里面添加ftp服务
(7)测试
(8)rpm -ql vsftpd 看该服务的安装目录 /var/ftp /var/ftp/pub
(9)rpm -qc vsftpd 看该服务的配置文件 /etc/vsftpd/vsftpd.conf
/etc/logrotate.d/vsftpd | 日志文件 |
---|---|
/etc/pam.d/vsftpd | 认证文件 |
/etc/vsftpd/ftpusers | 黑名单文件 |
/etc/vsftpd/user_list | 用户名单文件 |
/etc/vsftpd/vsftpd.conf | 配置文件 |
二、ftp服务的基本信息
软件安装包 | vsftpd |
---|---|
默认发布目录 | /var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
在实验时,会有报错:
报错id分析:
500 | 文件系统权限过大 |
---|---|
530 | 用户认证失败,服务器不允许或者密码错误 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
三、对匿名用户(anonymous)的相关设定
(每次修改完配置文件,必须重启服务才有效)
(1)是否允许匿名用户访问
anonymous_enable=YES|NO
(2) 匿名用户上传(put)
anon_upload_enable=YES
chmod 775 /var/ftp/pub
(3)匿名用户家目录修改
anon_root=/direcotry
(4)匿名用户上传文件默认权限修改
anon_umask=xxx
(5)匿名用户建立目录
anon_mkdir_write_enable=YES|NO
(6)匿名用户下载(get)
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
下载成功
(7)匿名用户删除
anon_other_write_enable=YES|NO
(8)匿名用户使用的用户身份修改
chown_uploads=YES
choen_username=student(必须是存在的用户)通过查看上传的文件的uid
四、对本地用户的设定
(1)本地用户是否可以访问
local_enable=YES|NO ##本地用户登陆限制
(2)write_enable=YES|NO ##本地用户写权限限制
(3)本地用户家目录修改
local_root=/directory
(4)本地用户上传文件权限
local_umask=xxx
(5)限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES此参数要求去掉自己对家目录的写权限。
chmod u-w /home/*
不能访问
五、最大上传限速
anon_max_rate=102400 单位为字节/秒
六、最大链接数
max_clients=2
七、黑白名单的设定
(1)本地用户黑名单的设定
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
(2)本地用户白名单建立(不在名单中的不可以访问)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
(3)限制本地用户登陆
vim /etc/vsftpd/ftpusers ##用户黑名单
永久黑名单ftpusers,(不管怎么修改配置文件都不行)
(4)vim /etc/vsftpd/user_list ##用户临时黑名单
(5)用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
八、ftp虚拟用户的设定(创建虚拟帐号身份)
步骤一:编辑文件,添加虚拟用户及其密码
vim /etc/vsftpd/westosfile(文件名称westosfile任意)
步骤二:对密码加密
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db
加密命令 转换 建立 加密 文件 被加密的文件 加密后的文件(我们打开是打开 这个文件)
方式
哈希
步骤三:设置转换桥梁
vim /etc/pam.d/westos (westos文件名称任意)(我们查看vsftpd.cof,可以看到认证时候是使用pam认证)
步骤四:在配置文件vsftpd.conf中添加命令,使步骤三生效
pam_service_name=westos
guest_enable=YES
验证:lftp 172.25.254.x -u user1(虚拟用户)都可以访问服务器(为了实验效果,将userlist deny=NO注释)
九、虚拟帐号身份指定
guest_username=westos
chmod u-w /home/westos
十、虚拟帐号家目录独立设定(使虚拟用户的登陆进去不再是ftp用户的默认家目录)
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/
U
S
E
R
u
s
e
r
s
u
b
t
o
k
e
n
=
USER user_sub_token=
USERusersubtoken=USER
验证,此时可以看到此时user1的家目录是他自己家目录
十一、虚拟帐号配置独立(想让哪个用户干什么用户就干什么 ,vsftpd的安全性就体现在这里)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/user1 在此文件中设定配置文件的参数,此文件的优先级最高。(注意,要改所属组为ftp)