ftp服务
1,ftp的定义
ftp:// ##文件传输协议
2.ftp协议提供的软件
在rhel7中:vsftpd
3.部署ftp服务
ftp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录
下载文件(其本地ftp用户可以读取这些文件)
4,/etc/vsdftpd/vsftpd.conf #服务配置文件
5,ftp://id #可在浏览器上访问
6,连接时部分报错的分析;
id #解释
500 #文件系统权限过大
530 #用户认证失败
550 #服务本身功能未开放
553 #本地文件系统权限过小
ftp部署
1,服务端部署:
安装vsftpd
安装 lftp
开启vsftpd服务,并设置开机自启动
开启火墙,并添加ftp服务到火墙白名单
方法一:
输入命令
systemctl start firewalld.service #开启防火墙
firewall-cmd --permanent --add-service=ftp #开启火墙,并添加ftp服务到火墙白名单
firewall-cmd --reload #重新加载
firewall-cmd --list-all #查看ftp服务是否已经添加到火墙白名单中
lftp 172.25.254.100 #使用ftp访问主机(ls有内容显示,则代表登录成功,否则不成功)
方法二:
firewall-config #用图形更改防火墙设置
注: 在options选项中选择第一个选项,然后关闭窗口。
2,关闭selinux
getenforce #查看selinux状态
显示enforcing,则代表没有关闭
将selinux的状态改为disabled
重启服务器(因为这个修改是内核级的,所以我们需要重启虚拟机)
查看,修改成功
3,客户端部署:
安装lftp
测试:登录服务器成功(服务器ip:172.25.254.100)
FTP服务的基本信息
1软件安装包:vsftpd
2,默认发布目录:/var/ftp
3,协议接口:21/tcp
4,服务配置文件:/etc/vsftpd/vsftpd.conf
注意:编辑配置文件后,一定要记得重启服务
5,报错id的解析:
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开启
553 本地文件系统权限过小
ftp的安全部署
通过编辑服务配置文件:/etc/vsftpd/vsftpd.conf,进行安全部署
为了方便后续的测试,给服务端新建一个用户,并设置密码
(1)匿名用户登录的设定:
anonymous_enable=YES|NO 匿名用户是否可以登陆 (YES为可以登录)
修改成NO,则匿名用户不能登录
编辑配置文件后,一定要重启服务。
测试:
匿名用户上传:
write_enable=YES/NO #ftp是否对用户可写,即上传,下载,创建等功能
anon_upload_enable=YES/NO # 允许匿名用户是否可以上传
在服务端:
systemctl restart vsftpd ##重启vsftpd服务
chgrp ftp /var/ftp/pub ##更改该文件的组为ftp
chmod 775 /var/ftp/pub ##允许该文件被ftp组可读可写
在客户端:
注:put为上传文件
匿名用户建立家目录:
anon_mkdir_write_enable=YES|NO #匿名用户是否可以创建家目录
在服务端:
在客户端验证:
匿名用户上传文件的权限修改:
anon_mask=022 匿名用户新增文件时系统保留的权限为022
在服务端:
在客户端:
验证如下:
注:由于系统对文件保留执行权限,所以文件最后的权限为777-022=644
匿名用户建立家目录:
non_mkdir_write_enable=YES/NO #匿名用户是否可以创建家目录(33行)
在服务端:
vim /etc/vsftpd/vsftpd.conf
在客户端:
验证如下:
在没有添加配置文件的参数前
在添加了配置文件参数之后
匿名用户下载:
anon_world_readable_only=YES|NO #设定参数值为no表示匿名用户可以下载
在服务端:
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
在客户端:
验证如下:
注:下载的命令是get
匿名用户删除:
anon_other_write_enable=YES|NO #匿名用户是否可以删除文件
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
匿名用户使用的用户身份修改
chown_uploads=YES #所有匿名上传的用户文件的所属用户将会被改成chown_username(默认在48行)
chown_uesername=westos #匿名用户身份指定,必须为服务段已有用户(默认在49行)
在客户端:
验证如下:
匿名用户使用的用户身份修改:
chown_uploads=YES 所有匿名上传的用户文件的所属用户将会被改成chown_username(默认在48行)
chown_username=redhat 匿名用户身份指定,必须为服务端已有用户(默认在49行)
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
发现上传文件的用户的uid已经变成westos的uid为1001
匿名用户上传文件的最大速率:速度为100k:
anon_max_rate=102400 #最大上传速率,单位bit
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
发现上传速率保持在100K左右
匿名用户最大连接设备:
max_clients=2 #只允许两个用户登陆该ftp服务器
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
检测如下:
发现只有一台可以连接到!
(2)本地用户的设定:
本地用户的登陆;
local_enable=YES|NO #本地用户是否可以登陆
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
本地用户家目录的修改:
local_root=/directory #家用户权限应没有w
write_enable=YES #本地用户写权限限制
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsgtpd ##重启服务
在客户端:
验证如下:
本地用户上传文件权限:
local_umask=022 #本地用户新增文件时系统保留的权限
在服务端:
vim /etc/csftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
上传的/etc/fstab文件的权限为777-022=644
限制本地用户浏览根目录:
chroot_local_user=YES #将本地用户锁定到自己的家目录中
重启服务systemctl restart vsftpd
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
在对vsftpd的文件进行配置之前,发现可以浏览家目录
在对文件进行了参数配置之后,发现浏览不了家目录,该用户被锁定在了自己的家目录中。
本地用户黑名单的建立:
#黑名单中的用户只能浏览自己的家目录,白名单的用户可以浏览家目录
chroot_local_user=NO #NO表示下面的路径为黑名单
chroot_list_enable=YES #表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_list #黑名单路径
重启服务systemctl restart vsftpd
在服务端:
touch /etc/vsftpd/chroot_list ##建立用户黑名单文件
vim /etc/vsftpd/chroot_list ##在里面添加的用户不能进入根目录
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
当student登录的时候,发现不能切到家目录,被锁定到了自己的家目录中,因为student在黑名单中,但用westos登录后发现可以进入家目录的根
本定用户白名单的建立;
#黑名单中的用户只能浏览自己的家目录,白名单的用户可以浏览家目录
chroot_local_user=YES #YES表示下面的路径为白名单
chroot_list_enable=YES #表示开启黑白名单功能
chroot_list_file=/etc/vsftpd/chroot_list #白名单路径
重启服务systemctl restart vsftpd
在服务端:
touch /etc/vsftpd/chroot_list ##建立用户白名单文件
vim /etc/vsftpd/chroot_list ##编辑白名单文件
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
student用户在白名单中,可以浏览家目录
westos不是白名单上的用户,被锁定在了自己的家目录中
(3)限制本地用户登陆:
用户永久黑名单的建立:
在服务端设置:
编辑文件,添加用户在该文件中即可。
vim /etc/vsftpd/ftpusers ##用户永久黑名单,只要出现在该名单上的用户不能登录ftp服务器
在客户端:
验证如下
用户临时黑白名单的建立:
更改配置文件:vim /etc/vsftpd/vsftpd.conf 中添加参数:userlist_deny=YES|NO #当为YES时,为黑名单,NO时为白名单
编辑文件vim /etc/vsftpd/user_list
添加用户即可。
重启服务systemctl restart vsftpd
在服务端:
vim /etc/vsftpd/vsftpd.conf ##更改配置
systemctl restart vsftpd ##重启服务
在客户端:
验证如下:
(5)虚拟用户的设定:
1)创建虚拟用户身份:
vim /etc/vsftpd/viruser #新建虚拟用户文件名单
内容:westos1
123
westos2
123
westos3
123
虚拟用户文件的加密
db_load -T -t hash -f /etc/vsftpd/viruser /etc/vsftpd/viruser.db #虚拟用户文件的加密(hash加密)
建立虚拟文件与/etc/vsftpd/vsftpd.conf的联系;
vim /etc/pam.d/virt #指定文件名称为任意名称
内容:account required pam_userdb.so db=/etc/vsftpd/viruser
auth required pam_userdb.so db=/etc/vsftpd/viruser
解析: 用户或密码: account,auth
判定方式: required
指向插件: pam_user.so
帐号文件: db=/etc/vsftpd/viruser
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
更该配置文件:/etc/vsftpd/vsftpd.conf
内容:pam_service_name=virt #关联/etc/pam.d目录下的virt文件
guest_enable=YES #虚拟用户可以登陆
guest_username=ftp #虚拟用户登陆时用的身份
验证:
2)虚拟用户帐号独立家目录设置;
mkdir -p /var/ftpuserdir/westos{1..3} #家目录的名字必须与虚拟帐号的名相同
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
更改配置文件:vim /etc/vsftpd/vsftpd.conf
内容:local_root=/var/ftpuserdir/$USER #设置用户进入的家目录为/var/ftpuserdir/$USER,表示当前用户的名字
user_sub_token=$USER #设置该配置文件识别,(user符号时使用shell里面的user)
在服务端:
在客户端:
lftp 172.25.254.123 -u westos1
ls
3)虚拟帐号独立配置:
user_config_dir=/etc/vsftpd/user_conf 设置虚拟用户独立配置路径
准备工作:
mkdir -p /etc/vsftpd/user_conf ##创建独立配置路径
vim /etc/vsftpd/user_conf ##编辑该文件
vim /etc/vsftpd/vsftpd.conf ##更改配置文件
systemctl restart vsftpd ##重启服务
内容:anon_upload_enable=YES
更改配置文件:vim /etc/vsftpd/vsftpd.conf
内容:user_config_dir=/etc/vsftpd/user_conf #设置虚拟用户独立配置路径
验证:
在客户端:
lftp 172.25.254.123 -u westos1
cd /pub
put /etc/fstab
发现可以上传.