文件服务器之一FTP服务器
< 一 > FTP 功能简介
简介:
FTP(File Transfer Protocol)是相关当古老的传输协议之一,它最主要的功能是在服务器与客户端之间进行文件传输。这个传输协议使用的是明文传输方式(有很多安全隐患)。
功能:
- 不同等级的用户身份:① 实体用户 user 、② 访客 guest 、③ 匿名用户 anonymous ;
- 命令记录与日志文件记录 —— 利用系统的 syslogd 来进行数据记录,在 /var/log/里查找各项日志信息 ;
- 限制用户活动的目录:(change root , 简称 chroot)将用户的工作范围局限在用户主目录下面 ;
< 二 > vsftpd (Very Secure FTP Deamon)服务器基础设置
1 )实验环境:
server主机(服务器)
- 主机名 —— sever_node1.westos.com
- ip —— 172.25.254.20
- selinux 关闭状态 —— vim /etc/selinux/config 修改selinux配置文件 ; getenforce 查看当前selinux状态 (Disabled) ;
- 火墙开启状态 —— ( firewall-cmd --permanent --add-source=172.25.254.10 --zone=trusted )
systemctl enable --now firewalld ;
firewall-cmd --list-all 查看;
firewall-cmd --permanent --add-service=ftp 添加信任软件服务;
systemctl restart firewalld 重启火墙 ;
- dnf命令 安装vsftpd服务软件 —— dnf install vsftpd -y ; systemctl enable --now vsftpd ;
client主机 (客户端)
- 主机名 —— client_westos-user.com
- ip —— 172.25.254.10
- selinux 关闭状态 —— vim /etc/selinux/config 修改selinux配置文件 ; getenforce 查看当前selinux状态 (Disabled) ;
- dnf命令 安装vsftpd服务软件 —— dnf install vsftpd -y ; systemctl enable --now vsftpd ;
- dnf安装 lftp 协议文本浏览器 ——dnf install lftp -y ;
FTP服务器测试:
- vim /etc/vsftpd/vsftpd.conf —— 12行 anonymous_enable=YES # 设置为允许 anonymous匿名用户登录 vsftpd主机
- firefox file://172.25.254.20 / lftp 172.25.254.20 (lftp 访问方式 必须能列出资源信息才算访问成功)
2 )vsftpd 基本信息
服务名称:
vsftpd.service
配置文件:
/etc/vsftpd/vsftpd.conf
默认匿名用户根目录:
/var/ftp/
主要执行文件:
/usr/sbin/vsftpd
常见报错信息:
- 500 # 权限过大
- 530 # 认证失败
- 550 # 程序本身拒绝
- 553 # 文件系统权限限制
3 )vsftpd.conf 配置值说明
3-1-匿名用户登录的设置值
- anonymous_enable=YES (NO)
设置为允许 anonymous (匿名用户)登录 vsftpd主机
- anon_root=/westosdir
改变家目录
- anon_world_readable_only=YES (NO)
仅允许 anonymous (匿名用户)具有下载可读文件的权限,默认为YES
- anon_other_write_enable=YES (NO)
是否允许 anonymous (匿名用户)具有除了写入之外的权限,包括删除、修改、重命名等权限,默认为 NO。
如要设置YES,开放给 anonymous (匿名用户)写入的文件目录需要调整权限,让vsftpd的 PID 拥有者可以写入才行。
- anon_mkdir_write_enable=YES (NO)
是否允许 anonymous (匿名用户)具有建立目录的功能,默认 NO。
如要设置YES,anon_other_write_enable=YES 必须设置 。
- anon_upload_enable=YES (NO)
是否允许 anonymous (匿名用户)具有上传数据的功能,默认 NO。
如要设置YES,anon_other_write_enable=YES 必须设置 。
- anon_max_rate=0 (bytes/秒) —— 0 不限制传输速度 (有最大宽带所限制)
anon_max_rate=30000 (bytes/秒) —— 传输速率为30 KB/s
- anon_umask=022 —— 限制 anonymous 上传文件权限,022 则传输文件权限是 -rwr--r---
例 限制匿名用户 传输文件权限 ,unmask(默认权限)为022 (文件权限 777-022-111=644!!)
例 限制匿名用户同时登录的最大连接数量为3,总传输带宽最大为1024kb/s
- vim /etc/vsftd/vsftpd.conf
- anon_max_rate=1048576 (bytes/second) # 总传输带宽最大为1024kb/s (1024*1024=1048576)
- max_clients=3 # 用户同时登录的最大连接数量为3
- systemctl restart vsftpd
例 让匿名用户可上传/下载自己资料
- vim /etc/vsftpd/vsftpd.conf
- write_enable=YES # user(实体用户-包含具有ftp用户权限的匿名用户)具有写入的权限
- anon_other_write_enable=YES # anonymous (匿名用户)具有除了写入之外的权限,包括删除、修改、重命名等权限
- anon_mkdir_write_enable=YES # anonymous (匿名用户)具有建立目录的功能
- anon_upload_enable=YES # anonymous (匿名用户)具有上传数据的功能
- systemctl restart vsftpd
- mkdir /var/ftp/pub # 建立匿名用户默认登录的家目录下的共享目录
- chgrp ftp /var/ftp/pub # 目录拥有组为ftp
- chmod 775 /var/ftp/pub # 更改权限使ftp权限的用户拥有最大权利
3-2-实体用户登录的设置值
- local_enable=YES (NO)
这个设置值必须为YES时,在/etc/passwd 内的账号才能以实体用户的方式登录vsftpd服务器
- local_root=/software
改变实体用户家目录
- write_enable=YES (NO)
是否允许 user(实体用户)具有写入的权限
- local_max_rate=0 (bytes/秒) —— 0 不限制传输速度 (有最大宽带所限制)
例 用户具有上传文件的权限,但不可以(下载/删除/修改)文件,只有指定用户(westos)可以
- vim /etc/vsftd/vsftpd.conf
- chown_uploads=YES # 上传文件拥有者默认为上传用户
- chown_username=westos # 指定上传文件的拥有者为 westos用户
- chown_upload_mode=0644 # 设置上传文件的用户权限为644 ,默认600
- systemctl restart vsftpd
- chroot_local_user=YES (NO)
是否将用户限制在自己用户主目录内(chroot)?
- chroot_list_enable=YES (NO)
是否启用chroot 写入列表功能?
- chroot_list_file=/etc/vsftpd.chroot_list
与chroot_local_user 有关
- userlist_enable=YES (NO)
用户名单,借助vsfypd 的阻挡机制处理不受欢迎的账号
- userlist_deny=YES (NO)
当userlist_enable=YES 时才会生效,若设置YES,用户账号被列入某文件时,在该文件内的用户将无法登录vsfypd服务器
- user_list_file=/etc/vsftpd.user_list
当userlist_deny=YES 时才会生效,则这个文件内的账号将无法登录vsfypd服务器
3-3-访客登录的设置值
- guest_enable=YES (NO)
若这个值设置为 YES 时,那么任何实体账号,均会被假设成为 guest (访客),默认NO 。访客在 vsftpd 当中,默认取得 ftp 这个用户的权限,可以通过 guest_username 来修改。
- guest_username=ftp (other user)
在guest_enable=YES 时才会生效,指定访客的用户身份
附1:虚拟用户的建立以及vsftp服务设置
1 )建立虚拟用户账号
- cd /etc/vsftpd/
- vim westos_user
- db_load -T -t hash -f westos_user westos_user.db
- rpm -qc vsftp
- cd /etc/pam.d/
- vim westos_ftp
- vim /etc/vsftpd/vsftpd.conf
- systemctl restart vsftpd
2 ) 虚拟用户家指定目录建立
- mkdir -p /virtuserdir/westos{1..3}/pub
- touch /virtuserdir/westos1/westos1file
- touch /virtuserdir/westos2/westos2file
- touch /virtuserdir/westos3/westos3file
- chmod 775 /virtuserdir/westos{1..3}/pub
- chgrp ftp /virtuserdir/westos{1..3}/pub
3 ) 修改配置文件vsftpd.conf,指定虚拟用户登录根目录路径
- vim /etc/vsftpd/vsftpd.conf
- systemctl restart vsftpd
4 )测试虚拟用户登录 (172.25.254.10 客户端主机)
附2:虚拟用户权限独立——vsftp服务的设置
1 )验证虚拟用户权限独立-测试环境
- vim /etc/vsftpd/vsftpd.conf (禁止虚拟用户上传文件!!)
- systemctl restart vsftpd
2 )建立虚拟用户独立配置文件
- mkdir /etc/vsftpd/user.conf
- touch /etc/vsftpd/user.conf/user2
- vim /etc/vsftpd/user.conf/user2
- vim /etc/vsftpd/vsftpd.conf # 指定子配置文件访问路径
- systemctl restart vsftpd
3 )测试