终端设备运行过程中产生较多生产日志及数据,经过设备埋点对数据进行初步清洗后进行云端存储。
该过程要求定时执行,进行必要文件存储及备份工作。通过对数据量预估及现有技术环境分析,暂选
择以VSFTPD文件共享服务器的形式,提供对终端提供该项服务。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v7cvPpdj-1589014485933)(https://s2.ax1x.com/2020/01/20/1iuoqO.jpg)]
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
FTP的传输摄影的是较为可靠的TCP封包协议,在建立连接之前会先进行三次握手。
VSFTPD分为主动(active)模式和被动(Passive)模式,下面分别将对两种模式进行说明。
主动模式
流程图如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVyHrj9i-1589014485936)(https://s2.ax1x.com/2020/01/20/1iUmOH.png)]
被动模式:
流程图如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iXfRj6Qu-1589014485937)(https://s2.ax1x.com/2020/01/20/1idYZj.png)]
便于理解再来一张时序图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q7yz6zWh-1589014485939)(https://s1.ax1x.com/2020/05/06/YEV37V.png)]
关于防火墙
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8isIanVL-1589014485943)(https://s2.ax1x.com/2020/01/20/1iDUnU.jpg)]
主动模式和被动模式都是以server为主体所定义,主动模式下是以20号端口传输数据的而被动模式下却可以限定使用一定范围的高位端口(设置防火墙刻意放行)进行数据传输。
记住一条就好,端口被使用一定要在防火墙中放开限制:
# 添加放开监控端口 重启生效
$ iptables -I INPUT -p tcp --dport 20 -j ACCEPT
$ iptables -I INPUT -p tcp --dport 21 -j ACCEPT
$ iptables -I INPUT -p tcp --dport [你使用到的端口] -j ACCEPT
如果是测试的话那就将防火墙直接干掉:
#永久性生效,重启后不会复原。
$ chkconfig iptables on #k开启
$ chkconfig iptables off #关闭
# 即时生效,重启后复原
$ service iptables start #开启
$ service iptables stop #关闭
# 查看防火墙状态
$ iptables status
切换方式: 在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WPYxgK3H-1589014485944)(https://s2.ax1x.com/2020/01/20/1iDx4s.md.jpg)]
由于FTP是使用明文传输,容易被人利用抓包工具获取并加以利用,所以不能随意假设FTP服务网站。不过,现在也有了较为安全的SFTP,其传输过程使用密文传输相对FTP安全不少。如果必须使用FTP服务器,那么需要注意一下几点:
本文使用**CentOS7.4 **进行安装,以下命令皆宜CentOS7.4 形式呈现。
Linux 安装软件形式多样,一般可分为三种方式(了解更多点这里):
根据不同情况,可任您喜好选择。本文在有网络情况下编写,自然选择YUM工具安装。
【源码安装方式】
看这里!
【RPM方式安装】
看这里!
【YUM方式安装】
YUM检查及基本操作
先看一下服务器是否已安装YUM工具,若未安装看这里
$ yum version #看到repo版本信息则说明yum已经安装。否则就要自行安装YUM。
Loaded plugins: fastestmirror
Installed: 7/x86_64 424:f34d27c845898c4d19f1694a4eefc99dad4bfe18
Group-Installed: yum 14:d8f19dee73ab77cc7f6b5a45a6be03b9bb442966
version
以下是YUM的基本操作:
$ yum check #检查rpmdb中的问题
$ yum check-update #检查可用的包更新
$ yum clean #移出缓存数据
$ yum deplist #列出一个包的依赖项
$ yum distribution-synchronization #将已安装的包同步到最新可用的版本
$ yum downgrade #降级/版本回退一个包
$ yum erase #从系统中删除一个或多个包
$ yum fs #对主机的文件系统数据起作用,主要用于删除最小主机的文档/语言
$ yum fssnapshot #创建文件系统快照,或列出/删除当前快照
$ yum groups #显示或使用组信息
$ yum help #显示有用的帮助信息
$ yum history #显示或使用事务历史记录
$ yum info #显示一个或一组包的详细信息
$ yum install #在系统上安装一个或多个包
$ yum list #列出一个或一组包
$ yum load-transaction #从文件名中加载已保存的事务
$ yum makecache #生成元数据缓存
$ yum provides #查找提供给定值的包
$ yum reinstall #重新安装一个包
$ yum repo-pkgs #修复资源库,作为一组包,我们可以安装/删除它们
$ yum repolist #显示已配置的软件存储库
$ yum search #搜索给定字符串的包细节
$ yum shell #运行一个交互式yum shell
$ yum swap #交换包的简单方法,而不是使用shell
$ yum update #更新系统上的一个或多个包
$ yum update-minimal #最小更新,但去'最新'包匹配修复了一个问题,影响您的系统
$ yum updateinfo #处理存储库更新信息
$ yum upgrade #更新包时要考虑到废弃的问题
$ yum version #显示机器和/或可用repos的版本。
YUM安装方式的基本套路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ogutdrfk-1589014485945)(https://s2.ax1x.com/2020/01/21/1Ftv0s.png)]
安装VSFTPD
1.查看VSFTPD是否已安装
$ yum list installed |grep vsftpd #查看已安装应用
vsftpd.x86_64 3.0.2-25.el7
2.未安装的话,马上安装
$ yum -y install vsftpd #安装vsftpd
#yum安装过程中遇到的问题,
3.查看VSFTPD的相关目录及文件
$ rpm -ql vsftpd #查看目录及文件
/var/ftp # 匿名用户默认Home目录
/var/ftp/pub # 匿名用户默认Home子目录
/etc/vsftpd # vsftpd配置主目录
/etc/vsftpd/ftpusers # 不能访问FTP用户列表
/etc/vsftpd/user_list # 不能访问FTP用户列表
/etc/vsftpd/vsftpd.conf # vsftpd 祝配置文件
/usr/sbin/vsftpd # 主应用程序
/etc/rc.d/init.d/vsftpd # 启动服务脚本
/etc/pam.d/vsftpd # 虚拟用户认证配置文件
4.查看VSFTPD是否工作正常
$ systemctl start vsftpd # 启动vsftpd 服务
$ systemctl status vsftpd # 查看vsftpd 服务状态
#默认是开启 匿名登录 可以使用ftp工具或者命令行尝试登入
#这里以 localhost。ftp 命令行操作为例
$ ftp 192.168.1.10 #ftp + 服务器IP
Connected to 192.168.1.10.
220-╔═══╦══╗╔═══╗ ╔═══╦═══╦═══╗
220-║╔═╦╣ ║╚╣ ╠═╣ ╔╗ ║╔═╦╩╦═╦╣ ║ ║
220-║╠═╝║ ║ ║ ║ ║ ╚╝ ║╠═╝ ║ ║║ ╔═╝
220-╚╝ ╚═══╩═══╝ ╚╝ ╚═╝╚═╝
#以上是在welcome_file中设置的提醒信息,220 说明连接成功
#使用匿名登录 name:ftp passwd:空
$ Name (192.168.1.10:yourname): ftp
331 Please specify the password.
Password:
230 Login successful.
# 登录成功
如果您的测试过程看不到这些信息,说明您的FTP服务安装失败(VSFTPD小而轻一般不会出错)。
Tip:(VSFTPD 状态码)
# VSFTPD 状态码 发生不同的错误可以自行百度
1xx:信息
2xx:成功类状态
3xx:需要进一步提供补充类信息
4xx:客户端错误信息
5xx:服务端错误信息
5.权限管理
关于FTP的权限要着重说明以下,该权限有三部分组配合使用。第一个就是VSFTPD需要在LINUX系统中获取足够的权限。另外两个很像FTP的双通道,一个权限是给信道的一个是给数据通道的。
a.查看VSFTPD在Linux系统内的权限:
$ getsebool -a | grep ftp
#以下是显示出来的权限,off是关闭权限,on是打开权限
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
ftp_home_dir --> off
#ftp_home_dir和allow_ftpd_full_access必须为on 才能使vsftpd 具有访问ftp根目录,以及文件传输等权限
#设置权限
$ setsebool -P allow_ftpd_full_access on
$ setsebool -P ftp_home_dir on
b.设置FTP用户的上传下载删除切换目录等操作功能
#上传/下载/删除
$ vim /etc/vsftpd.conf #内部设置,稍后会详细介绍
c. 登录权限
| 用户类型 | userName | password | privilege |workDir |
| :--------: | :-----: | :----: | :----: |:----: |
| 匿名用户 | ftp/anonymous| none | 主配置文件+文件系统 |/var/ftp |
| 本地用户 | /etc/passwd | /etc/shadow| 最大权限drwx------ |/home/{userName} |
| 虚拟用户 | $1 | 7 | 单独配置文件 |/home/{virtual}/自定义|
Tips: 请务必将原始主配置文件(***/etc/vsftpd/vsftpd.conf***)进行备份,以便配置错误时,重新来过。
VSFTPD的配置项是根据***用户类型***不同而区分开的。我们先确定自己的需求,今后该服务器使用何种用户。(测试和学习阶段随便搞)
VSFTPD初始状态,/etc/vsftpd/vsftpd.conf文件为经过修改。
允许匿名用户和本地用户登录。
匿名用户不允许离开目录 /var/ftp
匿名用户不允许创建目录,覆盖,删除,重命名
本地用户具有读写权限,且允许离开 home
目录
写在/etc/vsftpd/ftpusers
的用户不允许登录
当VSFTPD服务被安装后,就会在/etc/
目录下创建主配置目录vsftpd
包含:
chroot_local_user
和chroot_list_enable
)主配置注意事项:
极简且极严
的策略,每行一条配置项option=value
的形式,不允许行尾注释,不允许有空格(空格会被当作value值从而使服务无法启动)匿名用户和虚拟用户使用同一套参数。
option
|
value
|
Description |
---|---|---|
anonymous_enable | YES/NO | 控制是否允许匿名用户登入,默认位YES |
write_enable | YES/NO | 是否允许登陆用户有写权限。属于全局设置,默认值为YES |
no_anon_password | YES/NO | 匿名登入时,是否不询问密码。默认值为NO |
ftp_username | 允许自定义 | 匿名登录用户名,默认为:ftp/anonymous |
anon_root | 允许自定义 | 匿名登录目录,默认为:/var/ftp,该目录不允许有写权限,佛则无法启动 |
anon_upload_enable | YES/NO | 是否允许匿名用户上传文件,默认值为:NO。有上传文件(非目录)的权限,只有在 write_enable=YES且other用户要有上层目录的写入权的情况下生效 |
anon_world_readable_only | YES/NO | 是否允许匿名登入者下 载可阅读的档案(可以下载到本机阅读,不能直接在服务器中打开,默认为:YES |
anon_mkdir_write_enable | YES/NO | 是否允许匿名登录用户创建目录,默认值为:NO。只有在 write_enable=YES且other用户要有上层目录的写入权的情况下生效 |
anon_other_write_enable | YES/NO | 是否允许匿名用户有更多于上传或者建立目录之外的权限,譬如删除/覆盖重命名,默认为:NO。(如果 anon_upload_en able=NO,则匿名用户不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO ,则匿名用户不能上传或者新建文件夹,但可以删除或者重命名已经存在的文件夹。)默认值为 |
chown_uploads | YES/NO | 是否改变匿名用户上传文件(非目录)的属主,默认值为NO 。 |
chown_username | username | 匿名用户上传文件(非目录)的属主名。建议不要设置为root 。 |
anon_umask | 077 | 匿名用户新增或上传档案的umask值,默认为:077,新档案的权限对应为700(用777做减法) |
deny_email_enable | YES/NO | 若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails ,内容为 email address 。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入 默认为:NO。 |
banned_email_file | 允许自定义文件路径 | 此文件用来输入email address ,只 有在 deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入 email address ,若输入的 email address 在此档案内,则不允许进入。 |
option
|
value
|
Description |
---|---|---|
local_enable | YES/NO | 控制是否允许本地用户登入,默认为:YES |
local_root | 允许自定义路径 | 当本地用户登入时,将登入自定义目录下,默认为:各自home目录 |
write_enable | YES/NO | 是否给予登入用户写权限,属于全局设置,默认为:YES |
local_umask | 022 | 本地用户新增档案的umask值,默认为:077,新档案的权限对应为700(用777做减法) |
file_open_mode | 0755 | 本地用户上传档案后的权限,与chmod所使用的数值相同。默认为:0666 |
虚拟用户使用PAM 认证方式。
option
|
value
|
Description |
---|---|---|
pam_service_name | vsftpd | 设置PAM使用的文件名称,默认为: /etc/pam.d/vsfptd |
guest_enable | YES/NO | 使用启用虚拟用户,默认为:NO |
guest_username | 允许自定义用户 | 用来设置虚拟用户映射的本地用户,默认为:ftp |
virtual_use_local_privs | YES/NO | 当该配置项为YES时,虚拟用户使用与本地用户相同的权限。当该配置项为NO时,虚拟用户使用与匿名用户相同的权限。默认为:NO |
在默认配置下,本地用户登入FTP 后可以使用 cd 命令切换到其他目录,这样会对系统带来安全隐患。
可以通过以下三条配置项来控制用户切换目录。
option
|
value
|
Description |
---|---|---|
chroot_list_enable | YES/NO | 是否启用chroot_list_file配置项指定的用户列表文件,默认为:NO。 |
chroot_list_file | 允许自定义文件路径 | 指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。 |
chroot_local_user | YES/NO | 用户列表文件中的用户是否允许切换到上级目录,默认为:NO。 |
参数搭配
通过chroot_list_enable 和chroot_local_user实现部分用户或者全部用户切换目录受限
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwVktPAy-1589014485946)(https://s1.ax1x.com/2020/05/07/YZxG8I.jpg)]
FTP在传输数据时可以使用 二进制方式
也可以使用 ASCII模式
来上传或下载数据。
option
|
value
|
Description |
---|---|---|
ascii_upload_enable | YES/NO | 是否启用ASCII模式上传数据,默认为:NO |
ascii_download_enable | YES/NO | 是否启用ASCII模式下载数据,默认为:NO |
访问控制有两种方式:
option
|
value
|
Description |
---|---|---|
tcp_wrappers | YES/NO | 是否与tcp wrapper 相结合来进行主机的访问控制。默认为:YES。启用,vsftpd将会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机是否允许访问该服务器 |
userlist_file | 允许自定义文件路径 | 控制用户访问FTP的文件,每行一个用户名称 |
userlist_enable | YES/NO | 是否启用userlist_file配置的文件 |
userlist_deny | YES/NO | 决定文件是黑/白名单,YES:黑名单,NO:白名单 |
针对单个用户的最大速率进行设置
option
|
value
|
Description |
---|---|---|
anon_max_rate | 自定义整数 | 设置匿名用户的最大传输速度单位为:B/s,0表示不限速,默认为:0 |
local_max_rate | 自定义整数 | 设置本地用户的最大传输速度单位为:B/s,0表述不限速,默认为:0 |
option
|
value
|
Description |
---|---|---|
accept_timeout | 自定义整数 | 设置连接超时时间,单位为秒,默认为:60 |
connect_timeout | 自定义整数 | 设置PORT方式建立数据连接超时时间,单位为秒,默认为60 |
data_connection_timeout | 自定义整数 | 设置建立数据连接超时时间,单位为秒,默认为120 |
idle_session_timeout | 自定义整数 | 设置无操作主动断开连接时间,单位为秒,默认为300 |
option
|
value
|
Description |
---|---|---|
xferlog_enable | YES/NO | 是否启用up/download 日志,默认为:YES |
xferlog_log | 允许自定义文件路径 | 设置日志文件名和路径 |
xferlog_std_format | YES/NO | 设置日志文件是否以标准格式录入,默认为:NO |
log_ftp_protocol | YES/NO | 是否将记录request/response日志,该项不能与xferlog_std_format同时激活。默认为:NO |
option
|
value
|
Description |
---|---|---|
user_config_dir | 允许自定义目录路径 | 设置该项后,用户登录后系统将会在该目录下寻找与该用户的同名文件,并根据文件中的配置项对当前用户进行更近一步配置,包括但不限与权限及速率限制 |
FTP有两种工作方式:
option
|
value
|
Description |
---|---|---|
listen_port | 允许自定义整数 | 与FTP服务器建立连接所监听的端口,默认为:21 |
connect_form_port_20 | YES_NO | 设置使用20端口进行数据传输,默认为:YES |
ftp_data_port | 允许自定义整数 | 设置在PORT模式下,建立数据连接的的端口 |
pasv_enable | YES/NO | 设置是否启用PASV模式,NO:启用PORT模式,默认为YES |
pasv_max_port | 允许自定义整数 | 在PASV模式下,允许建立数据连接的端口范围的最大端口,0表示任意端口,默认为:0 |
pasv_min_port | 允许自定义整数 | 在PASV模式下,允许简历数据连接的端口范围的最小端口,0表示任意端口,默认为:0 |
option
|
value
|
Description |
---|---|---|
listen | YES/NO | 设置vsftp服务器是否以standalone模式运行,默认为YES。若为NO,则服务将不是独立的,受到xinetd服务管控,功能受限 |
max_clients | 允许自定义整数 | 设置允许的最大连接数,0表示不受限。默认为:0。仅在standalone模式下有效 |
max_per_ip | 允许自定义整数 | 设置每个IP允许同时建立的连接数,0表示不受限制。默认为:0仅在stadalone模式下有效 |
listen_address | IP地址 | 设置FTP服务器在指定IP地址上侦听用户的FTP请求,若不设置,则对服务器绑定的所有IP地址进行监听。仅在standalone模式下有效 |
setproctitle_enable | YES/NO | 设置每个IP与服务器的连接,是否以不同的进程表现出来,默认为:NO。此时只会有一个vsftpd进程,若为YES,每个新的连接将会启动一个新的进程 |
PS:
init服务的分类中,依据服务是独立启动或被一只总管进程管理而分为两大类:
option
|
value
|
Description |
---|---|---|
test_userdb_names | YES/NO | 设置使用命令的时候,是否显示具体的用户名和组名,默认为:YES |
ls_recurese_enable | YES/NO | 设置用户查是否允许查看当前目录下子目录的文件,默认为:NO |
hide_ids | YES/NO | 若开启此功能,所有数据的属主和属组,默认为:NO |
download_enable | YES/NO | 设置所有文件是否允许下载,默认为YES。仅针对文件,文件夹不受限制 |
option
|
value
|
Description |
---|---|---|
dirmessage_enable | YES/NO | 如果启动这个选项,那么使用者第一次进入一个目录时,会检查该目录下是否有.message 这个档案,如果有,则会出现此档案的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。默认值为开启。 |
message_file | .message | 设置目录消息文件,默认为:.message |
banner_file | 允许自定义文件路径 | 当使用者登入时,会显示此设定所在的档案内容,通常为欢迎话语或是说明。默认值为无。如 果欢迎信息较多,则使用该配置项。 |
ftpd_banner | 自定义欢迎语句 | 这里用来定义欢迎话语的字符串,这里用来定义欢迎话语的字符串,banner_file 是档案的形式,而 ftpd_banner 则是字符串的形式。默认为无。 |
option
|
value
|
---|---|
110 | 新文件指示器上的重启标记 |
120 | 服务器准备就绪的时间(分钟数) |
125 | 打开数据连接,开始传输 |
150 | 打开连接 |
200 | 成功 |
202 | 命令没有执行 |
211 | 系统状态回复 |
212 | 目录状态回复 |
213 | 文件状态回复 |
214 | 帮助信息回复 |
215 | 系统类型回复 |
220 | 服务就绪 |
221 | 退出网络 |
225 | 打开数据连接 |
226 | 结束数据连接 |
227 | 进入被动模式( IP 地址、 ID 端口) |
230 | 登录因特网 |
250 | 文件行为完成 |
257 | 路径名建立 |
331 | 要求密码 |
332 | 要求帐号 |
350 | 文件行为暂停 |
421 | 服务关闭 |
425 | 无法打开数据连接 |
426 | 结束连接 |
450 | 文件不可用 |
451 | 遇到本地错误 |
452 | 磁盘空间不足 |
500 | 无效命令 |
501 | 错误参数 |
502 | 命令没有执行 |
503 | 错误指令序列 |
504 | 无效命令参数 |
530 | 未登录网络 |
532 | 存储文件需要帐号 |
550 | 文件不可用 |
551 | 不知道的页类型 |
552 | 超过存储分配 |
553 | 文件名不允许 |
尚硅谷-Linux网络服务-数据库教程
[Linux运维下载导航(学习路线图)](