FTP服务器的搭建与配置
一、FTP服务器简介FTP(File Transfer Protocol):文件传输协议,是一个客户机/服务器系统。使用FTP的用户需要经过验证后才能登录FTP:文件传输协议,工作模式[客户端/服务器],FTP服务的端口号:tcp/21、tcp/20主动模式:从服务器方主动发送连接,tcp/21被动模式:从客户端发送连接请求,tcp/20 (默认情况 )FTP服务器的用户可分成3类。系统用户即系
一、FTP服务器简介
FTP(File Transfer Protocol):文件传输协议,是一个客户机/服务器系统。使用FTP的用户需要经过验证后才能登录
FTP:文件传输协议,工作模式[客户端/服务器],FTP服务的端口号:tcp/21、tcp/20
- 主动模式:从服务器方主动发送连接,tcp/21
- 被动模式:从客户端发送连接请求,tcp/20 (默认情况 )
FTP服务器的用户可分成3类。
系统用户
即系统本机的用户。Linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件系统进行工作。但通常不希望他们通过FTP方式远程访问系统。
虚拟用户
只能采用FTP方式使用系统的用户,不能直接使用Shell登录系统,即虚拟用户,访问服务器时需要验证。大多数FTP用户是这类用户。登录身份是/sbin/nologin
匿名用户
对于公共性质的服务器可以提供匿名用户访问,用户名:anonymous/ ftp。但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:同时连接的用户数量受限,访问的文件数目受限,不能上传文件,允许操作的指令较少,设置匿用户同时登入的最大联机数量等。
二、FTP服务器的安装–yum
软件的安装:使用yum安装
yum安装的原理介绍:自动到软件仓库云下载相应软件包进行自动安装
软件存放的位置(软件仓库):
- 网络源:http:// 或 https://
- FTP源:ftp://
- 本地:file://
yum源文件存放位置(必须在这个位置): cd /etc/yum.repos.d/
- 系统默认yum源文件:
- 可以制作本地yum源文件:
- 可制作阿里云网络免费源文件:
yum安装的命令:
查看软件是否已经安装:rpm -qa | grep 软件名称
检查yum源文件:yum list | grep vsftpd //如果找不到则yum源有问题
安装软件:yum install 软件包名称
卸载软件:yum remove 软件包名称
清除yum缓存:yum clean all
生成缓存:yum makecache
1、使用默认yum源安装vsftpd软件包
服务端软件vsftpd 客户端软件ftp
yum install vsftpd ftp
2、启动服务并设置开机自启
vsftpd的服务名称:vsftpd.service
systemctl start vsftpd.service //启动服务
netstat -l lanp [|grep vsftpd]//查看服务器端口是否开启
systemctl enable vsftpd.service //开机自启
3、设置防火墙与selinux机制
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
systemctl stop firewalld
setenforce 0
4、访问ftp服务器-访问的默认目录是:/var/ftp
-
Linux系统中使用ftp命令进行访问:
ftp 192.168.220.130
-
在windows客户端访问ftp服务器:
ftp://192.168.220.130
三、设置匿名用户访问ftp
匿名用户登录时登录用户名为anonymous或者ftp
1、匿名用户访问FTP相关知识点
(1)默认允许匿名用户与系统用户访问ftp,访问的默认目录是:/var/ftp
注:根目录下的/var/ftp目录权限不能有写的权限,要想在文件里有写的权限就要在根目录下再新建一个目录;更改默认目录同理
只有进入var/ftp/ pub才能执行操作 即:ftp>cd pub/
访问测试(用户名:anonymous 密码为空)
(2)ftp的配置文件是:/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf 做如下配置
设置匿名用户访问ftp:
anonymous_enable=YES
(3)设置匿名用户登录ftp时不输入密码和提示内容:
no_anon_password=YES //设置匿名用户登录时不输入密码
ftpd_banner= welcome to our home! //设置提示内容
(4)设置匿名用户上传、新建、删除文件:
anon_upload_enable=YES //匿名用户上传权限
anon_mkdir_write_enable=YES //匿名用户写权限
anon_other_write_enable=YES //匿名用户删除权限
(5)设置文件权限
chmod 777 pub //不推荐使用
chown ftp pub //更改匿名用户为pub的组用户
setfacl -m u:ftp:rwx pub 推荐使用
(6)设置匿名用户上传或新建后的文件权限–local/anon_umask
umask值:决定了新建文件或文件夹时的默认权限
umask值的表示方法:0022
查看umask:[root@localhost pub]#umask
更改umask:[root@localhost pub]#umask 0022
配置local_umask: vim /etc/vsftpd/vsftpd.conf local_umask=0022
- 如果使用vsftp的是本地用户,则要修改配置文件中的 local_umask 的值;
- 如果使用vsftp的是虚拟用户,则要修改配置文件中的 anon_umask 的值。
- umask = 022 时,新建的目录 权限是755(777-022),文件的权限是 644(666-022);
- umask = 077 时,新建的目录 权限是700(777-077),文件的权限是 600(666-077)。
(7)设置不允许系统用户登录,只能匿名用户登录:
anonymous_enable=YES
local_enable=NO
(8)设置匿名用户访问ftp的默认目录
anon_root=/var/ftp
anon_root=/var/public
注意:要修改vsftp服务器匿名用户默认目录时,不可以将anon_root设置为一个其他账号已有的家目录,否则不能实现匿名用户访问ftp服务器。
2、完成项目要求
anonymous_enable=YES 允许匿名用户登录
no_anon_password=YES 匿名用户登录时不输入密码
注销匿名用户上传、新建、删除等权限,修改文件权限。
三、配置系统用户访问FTP服务器
1、系统用户访问FTP相关知识
(1)系统用户默认访问主目录,具有上传、下载、新建、删除的权限,还可以切换到的系统其他目录。
关闭匿名用户访问,只允许系统用户访问
anonymous_enable=no //关闭匿名用户访问
local_enable=yes ///允许系统用户访问
local_umask=0022
(2)设置系统用户只能访问自己的主目录并具有所有权限,不允许切换到系统的其他目录。
chroot_local_user=YES ///控制用户访问路径访问自己的主目录,不能切换到其他目录(根目录 /)
allow_writeable_chroot=YES //允许写入;要设置不能切换其他目录必须加这一行
ftpd_banner= welcome to our home! //提示语
max_clients=30 //设置最大连接数
idle_session_timeout=600 //设置超时时间,单位为秒
(3)设置系统用户访问指定目录,不允许切换到系统的其他目录,并具上传、下载、新建、删除的权限。
local_root=/mnt/public/ //设置系统用户访问ftp的默认目录
write_enable=YES //允许写入
chroot_local_user=YES //控制用户访问路径访问指定目录,不能切换到其他目录
allow_writeable_chroot=YES //允许写入
修改/mnt/public/目录下的文件权限
2、基于本地用户的访问控制
默认情况下,ftp服务器中所有系统用户都可以访问ftp,如何来限定只有指定的系统用户可以访问呢?vsftp中提供了两个与系统用户相关的配置文件:
-
/etc/vsftpd/ftpusers 提供了一份用于禁止登录的ftp用户列表**(黑名单)**。 此文件中包含的用户将被禁止登录vsftpd服务器,不管该用户是否在/etc/vfsftpd/user_list中出现。
-
/etc/vsftpd/user_list 提供了一份用于允许登录的ftp用户列表**(白名单)**,此文件中包含的用户可能被禁止登录,可能被允许登录。
-
具体在主配置文件vsftpd.conf中决定:
当存在userlist_enable=YES时,user_list文件生效。
当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。
当存在userlist_deny=NO时,则允许列表中用户登录。
- 其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在于两个文件中,则被拒绝访问ftp。
举例:只让ftpuser用户访问ftp,那么可以进行如下设置
#vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES 启用userlist用户列表(系统默认设置)
userlist_deny=NO 只允许列表中的用户登录
#vim/etc/vsftpd/user_list
将服务重启后,在客户端测试,此时只有ftpuser用户可以访问ftp
五、Vsftpd日志管理 --/var/log/xferlog
1、Vsftp软件搭建的FTP服务器的日志文件的配置,在/etc/vsftpd.conf中找到:
xferlog_enable=YES //开启FTP服务器记录上传下载的情况
xferlog_std_format=YES //日志格式
xferlog_file=路径 //指定日志文件 默认在/var/log/xferlog
2、日志文件输出字段含义(左->右):
Tue Jun 9 10:45:35 2020 1 ::ffff:192.168.220.1 636 /pub/Linux.lnk b _ i a <no_password> ftp 0 * c
(1)当前时间(为本地时间),格式为:DDD MMM dd hh:mm:ss YYYY
(2)传输时间:传送文件所用时间,单位为秒
(3)远程主机名称/IP:
(4)文件大小:传输文件的大小,单位为byte
(5)文件名:传输文件名,包括路径
(6)传输类型:
a--以ASCII传输;
b--以二进制文件传输
(7)特殊处理标志:
_:不做任何特殊处理
c:文件是压缩格式
u:文件是非压缩格式
t:文件时tar格式
(8)传输方向:o 从FTP服务器向客户端传输;i 从客户端向FTP服务器传输
(9)访问模式:a 匿名用户;g 来宾用户;r 系统中的用户
(10)用户名
(11)服务名:一般为FTP
(12)认证方式:0 无; 1 RFC931认证
(13)认证用户id:如果使用*,测表示无法获得该id
(14)完成状态:i 传输未完成;c表示传输已完成。
六、配置虚拟用户访问FTP
1、安装Vsftpd虚拟用户需要用到的软件及认证模块
pam*为虚拟用户模块,libdb为数据库的模块
yum install pam* libdb-utils libdb* --skip-broken -y
2、创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式如下:
Techftp
123456
netftp
123456
admftp
123456
markftp
123456
3、 导入虚拟用户列表,生成虚拟用户的数据库,设置权限为600
-T -t 用哈希算法进行加密
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
chmod 600 /etc/vsftpd/vsftp_login.db
配置好了数据库ftpusers.txt就没用了
4、配置PAM认证文件:vim /etc/pam.d/vsftpd.vu(vsftpd.conf里默认的认证文件是vsftpd)
auth required pam_userdb.so db=/etc/vsftpd/vsftp_login
account required pam_userdb.so db=/etc/vsftpd/vsftp_login
5、创建一个系统用户,用于虚拟用户映射
useradd -s /sbin/nologin ftpuser
6、修改配置文件:vim /etc/vsftpd/vsftpd.conf
#pam_service_name=vsftpd //把这条注释 ,把认证文件改成vsftpd.vu
pam_service_name=vsftpd.vu
guest_enable=YES //开启系统虚拟用户访问
guest_username=ftpuser //指定系统虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf //指定虚拟用户的配置文件目录
virtual_use_local_privs=YES //允许虚拟用户访问
7、分别为虚拟用户创建私有的虚拟目录与独立的配置文件
mkdir /home/ftpuser/techftp //创建默认访问的目录文件
mkdir /etc/vsftpd/vsftpd_user_conf //创建虚拟用户的配置文件目录
cd /etc/vsftpd/vsftpd_user_conf
vim techftp
local_root=/home/ftpuser/techftp //默认访问的目录
write_enable=YES //允许写入
anon_world_readable_only=YES //允许浏览
anon_upload_enable=YES //允许上传
anon_mkdir_write_enable=YES //允许创建
anon_other_write_enable=YES //允许其他用户写入
mkdir /home/ftpuser/netftp
cd /etc/vsftpd/vsftpd_user_conf
vim netftp
local_root=/home/ftpuser/netftp
write_enable=YES
virtual_use_local_privs=NO #不具有可登录用户的权限
anon_world_readable_only=YES #可浏览目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
在根文件夹下新建文件netftps,改为ftpuser的权限
cd /home/ftpusers/netftp;mkdir netftps
chown ftpuser:ftpuser netftps
systemctl restart vsftpd
ftp 127.0.0.1
例: 系统中有stu1,stu2,stu3,stu4等用户,通过黑白名单的配置只允许系统用户stu1和stu2用户可以访问FTP服务器的/mnt/ftp目录,并且具有上传、下载、新建、删除的权限,并不能切换到其他目录。
1、新建用户
useradd stu1
useradd stu2
useradd stu3
useradd stu4
2、配置文件使黑白名单生效:vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //不允许匿名用户登录
local_enable=YES //允许系统用户登录
local_root=/mnt/ftp //设置系统默认访问目录
chroot_local_user=YES //控制用户访问路径访问自己的主目录,不能切换到其他目录(根目录 /)
allow_writeable_chroot=YES //和上一条同设置;允许写入
write_enable=YES //允许写入
user_list_enable=YES //设置白名单
list_deny=NO //使白名单生效
//3、配置黑名单:
vim /etc/vsftpd/ftpusers
stu3
stu4
//配置白名单:
vim /etc/user_list
stu1
stu2
4、根目录下新建可修改文件夹:
cd /mnt/ftp;mkdir pub
5、验证stu3 拒绝登录,因为stu3在黑名单内
6、验证stu1,成功
更多推荐
所有评论(0)