今天就跟大家聊聊有关怎样进行linux ftp服务的搭建配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
FTP介绍
FTP:是文件传输协议的缩写。
功能:用来实现文件的上传(upload)和下载(download)
ftp的工作端口: 21 : 控制端口,用于在客户机和服务器之间建立连接
20 : 数据端口,用于服务器给客户机主动进行数据连接
vsftpd:非常安全文件传输协议守护进程(very secure ftp daemon)
ftp的工作模式:主动port、被动passive模式
客户端与服务端传输数据时,服务端传输端口为20时为主动模式,传输端口为>1024的随机端口时为被动模式
ftp主动(port)模式工作过程:
1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <—-> 服务器 21号port
2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <—-> 服务器 20号port
ftp被动(pasv)模式工作过程:
1.客户机和服务器建立连接关系(登录): 客户机(>1024的随机端口号) <—-> 服务器 21号port
2.双方建立数据连接关系,传输数据:客户机(>1024的随机port) <—-> 服务器(>1024的随机port)
说明:当ftp服务器上有防火墙时,通常客户机是以被动模式去访问ftp服务器的。在ftp服务器的vsftpd.conf和防火墙上要指定放行的被动模式端口范围的最小值和最大值。
vsftpd.conf 的被动模式端口范围:
pasv_min_port=5000
pasv_max_port=6000
vsftpd部署思路:
1.关闭安全功能,并查状态:
systemctl stop firewalld ; setenforce 0 #关闭防火墙及selinux安全设置
systemctl status firewalld ; getenforce #查看防火墙状态,检查是否关闭
2.查软件是否已安装,如果未安装就安装软件。
rpm -q vsftp ftp lftp #vsftpd是服务器端程序, ftp lftp为客户端程序
3.启动服务,并允许开机自动启动
systemctl restart vsftpd #重启vsftpd服务
systemctl enable vsftpd #设置vsftpd开机自启动
4.设置共享目录,重新加载设置。
5.做本地(内测)访问测试,做异地(公测)访问测试。
实验环境:
centos7.6 (以本机IP为例 192.168.11.11)
安装步骤:
yum install -y vsftpd ftp lftp #使用yum安装vsftpd ftp lftp 软件systemctl restart vsftpd #启动服务systemctl enable vsftpd #设置开机自启动systemctl status vsftpd #查看服务状态,为running 时则服务启动成功
共享需要的文件:
vsftpd的默认共享目录:
1.匿名用户(ftp或anonymous)共享:/var/ftp目录
2.普通用户:访问的是普通用户自己的家目录,通常是"/home/用户名"文件夹
注意:root用户默认不能登录vsftpd服务器来访问共享,因为root账号在黑名单里。
服务测试:
方式一: ftp 192.168.11.11 回车 再按照提示输入用户密码即可登陆
方式二: lftp 192.168.11.11 -u 用户名,密码 即可登陆成功 (例: 用户名为tom 密码为0 登陆)
在window下可以用资源管理器进行登陆: ftp://192.168.11.11
vsftpd配置文件: rpm -qc vsftpd (查看vsftpd的配置文件)
主配置文件为 /etc/vsftpd/vsftpd.conf
FTP服务功能及修改对应配置文件介绍
黑名单功能:
/etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 为黑名单文件
功能:可以把用户设置为黑白名单,限制用户访问
例:root用户默认在黑名单中,把两个上述文件中的root用#号注释即可用root用户访问
也可以把其他用户加入黑名单中
(注: user_list 可以设置为白名单,在/etc/vsftpd/vsftpd.conf 配置文件中最后一行添加 userlist_deny=NO )
添加后重启服务,白名单的用户可以访问,而非白名单用户不能访问,当黑白名单同时存在时,黑名单优先级大于白名单,也就是只要出现在 黑名单就不能正常登陆服务
建议:修改配置文件时最好先备份文件
chroot牢笼功能:
因登陆的用户访问的是自身的家目录,但可以通过命令查看其他文件,比如根目录或其他配置文件,所以可以使用chroot牢笼功能限制,只 允许登陆的用户访问自己的家目录
chroot牢笼分为四种情况:
1.全部用户不加锁(默认,但不安全)
2.全部加锁
3.少数用户不加锁
4.少数用户加锁
情况一:使用vim 编辑 配置文件/etc/vsftpd/vsftpd.conf ,并用set nu显示行号,可以看到以下行数的配置文件,默认不加锁,不用修改
情况二:启动所有普通用户的牢笼功能(即对所有人加锁)
按照上述步骤编辑配置文件/etc/vsftpd/vsftpd.conf ,set nu显示行号,去除101行#号,并添加allow_writeable_chroot=YES,如下图所示:
情况三:给指定少数用户不启用牢笼功能(即少数人不加锁)
同理编辑配置文件,并指定白名单路径,如下图所示:
vim编辑/etc/vsftpd/chroot_list,添加不需要启用牢笼功能的用户,再重启服务即可
情况四:给指定的少数普通用户启用牢笼功能(即少数人加锁)
编辑配置文件如下图所示:
用#号注释掉101行 chroot_local_user=YES,此时只有文件/etc/vsftpd/chroot_list 中的用户启用了牢笼功能
最后重启服务(注:每次修改完配置文件都得重启服务 systemctl restart vsftpd)
anonymous匿名用户功能
实际作用:实现允许anonymous匿名用户对共享文件具有可读可写的权限
分析:想实现上述功能必须满足以下条件
1.文件共享软件必须允许这个用户有可读可写的权限。
2.用户对共享目录自身要有可读可写的权限。
3.匿名用户仅允许上传文件到/var/ftp中的子目录中。如/var/ftp/upload,且ftp匿名用户对upload目录要有可读可写权限。
(警告:/var/ftp目录的属主、属组不允许修改,且other权限不允许有w可写权限,否则用ftp匿名用户访问共享时会提示下面这个500错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection)
实际操作步骤:
1.编辑配置文件/etc/vsftpd/vsftpd.conf ,去除29 , 30行的#号,再添加两行代码,如图所示:
#anon_upload_enable=YES 允许匿名用户上传#anon_mkdir_write_enable=YES 允许匿名用户用mkdir创建目录anon_other_write_enable=YES 允许匿名用户执行rm删除等操作(添加此行)anon_world_readable_only=NO 关闭匿名用户只读的限制(为YES时会无法下载)
2.用root用户创建/var/ftp/upload目录,权限为777或属主和属组均为ftp,重启vsftpd服务,使用ftp登陆,即可实现匿名共享
ftp服务限速功能:
即对不同用户限制不同的文件传输速度
1.在配置文件/etc/vsftpd/vsftpd.conf 中添加如下内容:
user_config_dir=/etc/vsftpd/userconf #指定个性化配置文件的主目录
2.创建指定个性化配置文件的主目录: mkdir -pv /etc/vsftpd/userconf
使用vim 创建编辑 /etc/vsftpd/userconf/gg
添加内容: local_max_rate=2000000 #即对名为gg的用户上传和下载速度限制为2MB/s
vsftpd的tcp_wrapers防火墙设置:
tcp_wrapers功能:一个迷你的防火墙,可以用来做基于tcp协议的应用程序的ip安全访问控制
配置文件: /etc/hosts.allow (白名单) ; /etc/hosts.deny (黑名单)
!技巧:让少数人为白户,那么先在hosts.deny中做拒绝所有(all)黑名单,然后在hosts.allow中做少数IP的放行白名单。
设置举例:
格式说明: 守护进程名称 : 主机名或IP地址
vim /etc/hosts.deny #黑名单
vsftpd:192.168.11.1 #拒绝192.168.11.1这台主机访问vsftpd共享
sshd:192.168.11.1 #拒绝192.168.11.1这台主机访问sshd共享
vsftpd虚拟用户功能:
虚拟用户:即非useradd创建的用户账号(非/etc/passwd中的账号),而是用vim创建的属于vsftpd的独立用户账号。
虚拟用户的优势:可以避免系统中的用户账号过多,让vsftpd文件共享软件独立管理自己的用户账号。
虚拟用户账号文件格式:
文件中的奇数行是用户账号,偶数行是用户的密码。
例:
1.创建虚拟用户账号文件:vim /etc/vsftpd/vuser.txt,输入图中内容,即创建虚拟用户f1,f2,f3,密码为123456
2.将虚拟用户账号转换成加密的数据库格式文件。
yum install -y libdb-utils #安装libdb-utils
cd /etc/vsftpd #cd到/etc/vsftpd目录下
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.db #用hash算法对vuser.txt转化格式为.db
chmod -v 600 /etc/vsftpd/vuserdb.db #给予文件/etc/vsftpd/vuserdb.db 权限
3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。
vim /etc/pam.d/vsftpd , 在文件开头插入以下两行,并如图:
auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
account sufficient pam_userdb.so db=/etc/vsftpd/vuserdb (代码作用:既能让虚拟用户访问共享,也能让普通用户访问共享。)
4.用useradd创建一个普通用户账号qq
useradd qq -s /sbin/nologin #创建一个名为qq的用户,指定登录shell为.sbin/nologin
5.在vsftpd.conf配置文件中设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。
vim vsftpd.conf 在文件最后添加如下内容:
guest_enable=YES #允许来宾用户访问共享,即虚拟用户
guest_username=vftper # 指定来宾用户名为vftper用户(即第4步新建的用户)
user_config_dir=/etc/vsftpd/vuser_conf #指定用户配置文件目录
allow_writeable_chroot=YES #允许chroot功能下执行写操作(必须加此行,否则会登录失败)
6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。
cd /etc/vsftpd
mkdir -v vuser_conf
cd vuser_conf #在/etc/vsftpd目录下,创建vuser_conf目录
#创建f1、f2虚拟用户的会员个性化设置文件,允许f1这个虚拟用户在自己的家目录中可读可写。
touch f1 f2
mkdir -v /home/vftper/{f1,f2}
chmod -v 777 /home/vftper/{f1,f2}
vim f1 输入内容:
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftper/f1
#允许f2这个用户在自己的家目录中可读,但不可写。
vim f2 输入内容:
local_root=/home/vftper/f2 #只写这行,其余行可以不写
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
7.重启vsftpd服务,并分别用虚拟用户账号访问共享。
systemctl restart vsftpd
ftp 192.168.11.11 –>用f1、f2虚拟用户分别访问共享,测试文件的上传。
到此,vsftpd的虚拟用户项目试验完毕。
ftp和lftp客户端程序的操作功能:
两者都是客户端应用程序
ftp命令格式: ftp 192.168.11.11
lftp命令格式:lftp 192.168.11.11 -u qq,0 #使用密码为0,用户名为qq的账号登陆
ftp 和 lftp 的区别: ftp模式下传输文件需指定文件的根目录,lftp则不需指定文件的根目录
看完上述内容,你们对怎样进行linux ftp服务的搭建配置有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/199449.html