频道澳门葡京手机版网址
登录注册
澳门葡京手机版网址 > 系统 > Linux > 正文

linux-ftp服务部署(详解)

2019-01-25 15:57:01           
收藏   我要投稿

先容:

FTP:是文件传输协议的缩写。

功能:用来实现文件的上传(upload)和下载(download)

ftp的工作端口:21 : 控制端口,用于在客户机和服务器之间建立连接

20 : 数据端口,用于服务器给客户机主动进行数据连接

vsftpd:非常安全文件传输协议守护进程(very secure ftp daemon)

vsftpd部署思路:

1.关闭安全功能,并查状态:

systemctl stop firewalld ; setenforce 0 #关闭防火墙及selinux安全设置

systemctl status firewalld ; getenforce #查看防火墙状态,检查是否关闭

2.查App是否已安装,如果未安装就安装App。

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 App

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 回车 再按照提示输入用户密码即可登陆

image.png

方式二: lftp 192.168.11.11 -u 用户名,密码 即可登陆成功 (例: 用户名为tom 密码为0 登陆)

image.png

在window下可以用资源管理器进行登陆: ftp://192.168.11.11

image.png

vsftpd配置文件: rpm -qc vsftpd (查看vsftpd的配置文件)

image.png

图片上除/etc/logrotate.d/vsftpd 都为重点

配置文件详解:

黑名单功能:

/etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list 为黑名单文件

功能:可以把用户设置为黑白名单,限制用户访问

例:root用户默认在黑名单中,把两个上述文件中的root用#号注释即可用root用户访问

image.png

也可以把其他用户加入黑名单中

(注: user_list 可以设置为白名单,在/etc/vsftpd/vsftpd.conf 配置文件中最后一行添加 userlist_deny=NO )

添加后重启服务,白名单的用户可以访问,而非白名单用户不能访问,当黑白名单同时存在时,黑名单优先级大于白名单,也就是只要出现在 黑名单就不能正常登陆服务

建议:修改配置文件时最好先备份文件

chroot牢笼功能:

因登陆的用户访问的是自身的家目录,但可以通过命令查看其他文件,比如根目录或其他配置文件,所以可以使用chroot牢笼功能限制,只 允许登陆的用户访问自己的家目录

chroot牢笼分为四种情况:

1.全部用户不加锁(默认,但不安全)

2.全部加锁

3.少数用户不加锁

4.少数用户加锁

情况一:使用vim 编辑 配置文件/etc/vsftpd/vsftpd.conf ,并用set nu显示行号,可以看到以下行数的配置文件,默认不加锁,不用修改

image.png

情况二:启动所有普通用户的牢笼功能(即对所有人加锁)

按照上述步骤编辑配置文件/etc/vsftpd/vsftpd.conf ,set nu显示行号,去除101行#号,并添加allow_writeable_chroot=YES,如下图所示:

image.png

情况三:给指定少数用户不启用牢笼功能(即少数人不加锁)

同理编辑配置文件,并指定白名单路径,如下图所示:

image.png

vim编辑/etc/vsftpd/chroot_list,添加不需要启用牢笼功能的用户,再重启服务即可

情况四:给指定的少数普通用户启用牢笼功能(即少数人加锁)

编辑配置文件如下图所示:

image.png

用#号注释掉101行 chroot_local_user=YES,此时只有文件/etc/vsftpd/chroot_list 中的用户启用了牢笼功能

最后重启服务(注:每次修改完配置文件都得重启服务 systemctl restart vsftpd)

anonymous匿名用户功能

实际作用:实现允许anonymous匿名用户对共享文件具有可读可写的权限

分析:想实现上述功能必须满足以下条件

1.文件共享App必须允许这个用户有可读可写的权限。

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行的#号,再添加两行代码,如图所示:

image.png

代码说明:29 #anon_upload_enable=YES 允许匿名用户上传

33 #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登陆,即可实现匿名共享

image.png

ftp服务限速功能:

即对不同用户限制不同的文件传输速度

1.在配置文件/etc/vsftpd/vsftpd.conf 中添加如下内容:

user_config_dir=/etc/vsftpd/userconf #指定个性化配置文件的主目录

image.png

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文件共享App独立管理自己的用户账号。

虚拟用户账号文件格式:

文件中的奇数行是用户账号,偶数行是用户的密码。

例:

1.创建虚拟用户账号文件:vim /etc/vsftpd/vuser.txt,输入图中内容,即创建虚拟用户f1,f2,f3,密码为123456

image.png

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 (代码作用:既能让虚拟用户访问共享,也能让普通用户访问共享。)

image.png

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则不需指定文件的根目录

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

关于ftp的服务部署即配置文件的设置就先容到这里!

上一篇:usb-key登录windows+远程桌面
下一篇:数字资产币币场外杠杆合约挖矿多模式交易所开发
相关文章
图文推荐

关于大家 | 联系大家 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 澳门葡京手机版网址_澳门新莆京娱乐_www.88807.com - 点此进入--致力于做实用的IT技术学习网站

XML 地图 | Sitemap 地图