1.FTP的定义
文件传输协议(英文:File Transfer Protocol,缩写:FTP) 是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
ftp:// ##文件传输协议
2.FTP协议提供的软件
在rhel7中:vsftpd
vsftpt 提供三种远程的登录方式:
(1)匿名登录方式:不需要用户名和密码就可以登录到服务器上
(2)本地用户方式:需要用户名和密码才能登录,而且这些用户必须为系统已经存在的用户
(3)虚拟用户:同样需要用户名和密码才能登录,但是这些用户不是系统存在的用户
3.部署FTP服务
1.安装vsftpd、lftp服务
yum install vsftpd lftp -y ##安装服务端vsftpd和客户端lftp的应用软件
systemctl start vsftpd ##开启服务
systemctl enable vsftpd ##设置开机自启动
2.将ftp服务设置为防火墙允许的服务
图形界面处理方法
systemctl start firewalld
firewall-config ##防火墙策略,将ftp作为防火墙允许访问的应用
进入此界面后作以下三件事:
(1)Configuration选择Permanent
(2)在pub选项里勾选ftp
(3)Option选择Reload Firewalld
firewall-cmd --list-all ##显示防火墙信息
分析:service一行显示防火墙不阻拦的应用列表。
命令行界面处理方法
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
3.ftp服务的基本信息
软件安装包: vsftpd
默认发布目录: /var/ftp
协议接口: 21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
报错id的解析:
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
4、将内核级别的防火墙selinux 关闭。
vim /etc/sysconfig/selinux
改为 disabled
然后 重启
。
重启后输入 getenforce
命令查看更改是否生效。
4.ftp服务对用户的配置设定
注意: 每次更改配置文件都要重启服务让更改生效。
vim /etc/vsftpd/vsftpd.conf
1.匿名用户
1)匿名用户是否可以登录
anonymous_enable=YES/NO
anonymous_enable=YES
anonymous_enable=NO
2)匿名用户上传
vim /etc/vsftp/vsftpd.conf
write_enable=YES ##ftp是否对登录用户可写
anon_upload_enable=YES ##是否允许匿名用户上传
chgrp ftp /var/ftp/pub ##更改pub目录的所有组为ftp
chmod 775 /var/ftp/pub ##更改pub目录权限
分析: 默认匿名用户登录时采用的是系统的ftp用户身份,将pub目录的权限改为所属组为ftp并且对所有组可写。
anon_upload_enable=YES
anon_upload_enable=NO
3)匿名用户家目录修改
anon_root=/directory
在 /mnt/ 下创建三个文件后,将家目录更改为 /mnt/
4)匿名用户上传文件默认权限修改
anon_umask=xxx
5)匿名用户建立目录
anon_mkdir_write_enable=YES/NO
6)匿名用户下载
anon_world_readable_only=YES/NO ##设定参数值为no表示匿名用户可以下载
7)匿名用户删除
anon_other_write_enable=YES/NO
8)匿名用户使用的用户身份修改
chown_uploads=YES
chown_username=student
chown_upload_mode=0644
分析: 我们更改了匿名用户身份为jiekouma用户后,上传文件查看其所有者id为1000,系统上查看jiekouma用户id后,确实为1000。说明匿名用户上传文件时的确是jiekouma用户身份。
9)最大上传速率
anon_max_rate=102400
更改前
更改后
10)最大连接数
max_client=2
例子:
max_client=1
第一台连接
第二台连接
2.本地用户
1)本地用户能否登录
local_enable=YES/NO #本地用户是否可以登录
write_enable=YES/NO #ftp是否对登录用户可写
local_enable=YES
local_enable=NO
2)本地用户家目录修改
local_root=/directory
首先,我们创建**/xiaoma目录,并在这个目录下创建flower文件,更改本地用户家目录为/xiaoma**。
分析:用户的家目录被唯一指定了。
3)本地用户上传文件权限
local_umask=xxx
4)限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
为锁定之前:
分析:普通用户可以查看到根目录和其他目录的所有文件,这对系统来说并不安全。
锁定后:
分析: 锁定后用户切换不到其他目录,只能在自己的家目录进行操作。系统安全大大提高。
5)用户黑名单建立
更改配置文件
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
建立黑名单
vim /etc/vsftpd/chroot_list
黑名单用户jiekouma登录情况:
分析:在黑名单的用户被锁定在自己的家目录。
其他用户登录的情况:
分析:不在黑名单的用户仍可以查看其他目录及文件的信息。
6)用户白名单建立
更改配置文件
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
建立白名单
vim /etc/vsftpd/chroot_list
这里需要注意的是:白名单和黑名单配置文件为同一个文件,只需要改变 vsftp 配置文件的参数,黑名单就变成了白名单
白名单用户jiekouma用户登录情况:
分析: 白名单建立后,在名单上的用户可以访问其他目录和文件。
未在白名单上的用户
分析:白名单建立后,默认不在白名单的用户都不能访问其他目录及文件。
7)限制本地用户登录
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
永久黑名单:
vim /etc/vsftpd/ftpusers
分析:黑名单用户jiekouma不能成功登录,但是其他用户可以正常登录。
临时黑名单
分析:这里在临时黑名单写入用户名称,jiekouma也不能正常登录,其他用户可以登录,但是更改配置文件一些参数后,临时黑名单会变为白名单~
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登录ftp
分析:用户临时黑名单经过更改vsftp.conf配置文件后,成为了白名单。需要注意的是,/etc/vsftpd/ftpusers为永久黑名单,也就是说同在永久黑名单和白名单的用户,仍然不可以登录系统。
3.ftp虚拟用户的设定
1.创建虚拟帐号身份
vim /etc/vsftpd/userfile
ftpuser1
123
ftpuser2
123
ftpuser3
123
2.对保存密码的文件进行hash加密
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db
3.建立对用户身份进行检查的文件
vim /etc/pam.d/ftpauth ##文件名称任意
文件内容:
account required pam_userdb.so db=/etc/vsftpd/userfile
账户 必须满足 使用此插件 查看此文件(已加密文件,不用加后缀.db)
auth required pam_userdb.so db=/etc/vsftpd/userfile
认证
4.更改配置文件相关参数
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpauth ##使用哪个文件来检查/etc/pam.d/ftpauth
userlist_enable=YES ##开启列表
tcp_wrappers=YES
guest_enable=YES ##开启虚拟
guest_username=ftp ##虚拟帐号身份指定
例子:
分析: 虚拟用户建立成功后,默认本地用户不能登录。这里所有的虚拟用户的家目录都是匿名用户的默认目录。实际上,每个虚拟帐号的家目录都是可以独立起来的。
5.虚拟帐号家目录独立设定
1)更改配置文件
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER ##设定家目录为用户名
user_sub_token=$USER ##使$USER在此文件中可用
2)建立虚拟用户家目录
mkdir /var/ftpuserdir/ftpuser{1..3} -p ##虚拟用户创建家目录
touch /var/ftpuserdir/ftpuser1/file1
touch /var/ftpuserdir/ftpuser2/file2
touch /var/ftpuserdir/ftpuser3/file3
chmod u-w /var/ftpuserdir/*
例子:
6.虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
user_config_dir=/etc/vsftpd/userconf ##指定虚拟用户的单独配置文件的目录 mkdir -p /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/ftpuser1 ##必须与自己的用户名相同 在此文件中设定配置文件中的所有参数,此文件的优先级高
在此文件中设定配置文件中的所有参数,此文件的优先级高
例子:
关于FTP的内容就是这些。