ftp服务器

vsftpd文件共享

FTP:是文件传输协议的缩写。用来实现文件的上传(upload)和下载(download)。

FTP是工作在C/S架构模式下。 C/S架构:是客户端Client/服务器server访问模式。C/S的特点是客户机必须使用专用的客户端程序去访问服务器。

B/S架构:是浏览器Browser、服务器Server访问模式。B/S的特点是客户机只需用IE、Firefox等浏览器来

访问服务 器。B/S架构通常是用来开发基于web网站的应用程序。

vsftpd:是非常安全的ftp守护进程(Very secure ftp Daemon)。

进程:正在进行(运行running)的程序。

守护进程Daemon:网络服务类的程序都会有守护进程。守护进程是指实时监测服务访问状态的程序。

通常都是在系统后台运行。

FTP的工作端口

21 控制端口,用于在客户机和服务器之间建立连接。

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

网络服务端口号的作用:用来标示服务器上的不同业务(服务)。

vsftpd的部署思路

0:关闭安全功能,并查状态:systemctl stop firewalld ; setenforce 0

systemctl status firewalld ; getenforce

1:查软件是否已安装,如果未安装就安装软件。

2:启动服务,并允许开机自动启动

3:设置共享目录,重新加载设置。

4:做本地(内测)访问测试,做异地(公测)访问测试。

环境准备: 关闭安全功能,并查状态:systemctl stop firewalld ; setenforce 0

systemctl status firewalld ; getenforce

vsftpd、ftp、lftp安装: 说明:vsftpd是服务器端程序

ftp、lftp是客户端程序

查是否已安装:rpm -q vsftpd ftp lftp

安装:yum install -y vsftpd ftp lftp

查软件的文件列表:rpm -ql vsftpd

查配置文件列表:rpm -qc vsftpd

vsftpd 服务管理:

重启动服务:systemctl restart vsftpd

允许开启自动启动:systemctl enable vsftpd

查服务状态:systemctl status vsftpd

vsftpd的默认共享目录: 匿名用户(ftp或anonymous)共享:/var/ftp目录 普通用户:访问的是普通用户自己的家目录,通常是”/home/用户名”文件夹 注意:root用户默认不能登录vsftpd服务器来访问共享,因为root账号在黑名单里。

vsftpd的配置文件:rpm -qc vsftpd

/etc/logrotate.d/vsftpd 日志轮滚策略文件

/etc/pam.d/vsftpd pam认证文件(重点)

/etc/vsftpd/ftpusers 黑名单文件(重点)

/etc/vsftpd/user_list 用户访问列表文件(重点),默认是黑名单,但是可以设置成白名单

在vsftpd配置文件中/etc/vsftpd/vsftpd.conf找到此行userlist_deny=NO,如果没有就在最后添加此行

/etc/vsftpd/vsftpd.conf 服务的主配置文件(重点)

小结:vsftpd的用户名单监测流程如下: ? 先监测user_list文件(是黑还是白)—->再监测ftpusers黑名单中是否有这个用户。

 

vsftpd.conf主配置文件

功能:对vsftpd软件的功能进行设置,可以设置限速、匿名和普通用户访问权限、chroot等功能。

专家建议:修改主配置文件之前,最好备份一下配置文件。备份文件的后缀通常为.bak或.org。 ? cd /etc/vsftpd ; ls cp -av vsftpd.conf{,.bak}

说明:-a 是复制时包括源文件的所有(all)的权限和属性、selinux属性都复制给目标文件。而-p选项时复制时不包含selinux属性的。

练习:查看并熟悉vsftpd.conf主配置文件中的默认设置。查看时不包含#开头(^#)的、空白行(^You can’t use ‘macro parameter character #’ in math mode’ /etc/vsftpd/vsftpd.conf 内容如下(共13行) ?

vsftpd.conf默认设置的功能:

1.允许匿名用访问共享,访问的是/var/ftp目录,且只能下载文件,不能上传文件。

2.允许普通用访问共享,访问的是用户自己的家目录,既能下载文件,也能上传文件。

3.普通用户用ftp命令登录到vsftpd服务器之后,能chroot到服务器的其他目录路径下,

此功能不安全,建议关掉。

xferlog日志文件

xferlog是一个上传下载日志。只是记录上传下载。如果要看更加具体的登录的一些日志,需要vsftpd.log日志文件。

例:/var/log/xferog日志文件内容如下。 Tue Jan 22 11:53:35 2019,1 ,::ffff:192.168.11.1 , 2061, /home/tom/qr.png ,b _ i r tom ftp 0 * c

发生时间,传输所花时间,客户端IP,文件大小byte,文件名路径,文件传输格式,文件特殊处理标记,i上传或o

下载,r真实用户登录,tom用户,ftp服务器名,认证方式为0,认证用户ID为*,传输完成状态为c已完成。

下面解释一下xferlog日志文件中每一列的含义。

 


vsftpd的chroot牢笼功能

vim /etc/vsftpd/vsftpd.conf

chroot牢笼功能:锁定用户在自己的家目录中,即不允许用户访问自己家目录以外的目录。

#chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用

#chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能

#(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径,默认无此文,需要用户自己创建

chroot四种情况:

1.全部不锁(默认情况) 2.全部加锁(用两行代码)

3.少数加锁(用四行代码) 4.少数不加锁(用三行代码)

情况1.关闭所有普通用户的牢笼功能(即不锁,默认情况)。设置如下

#chroot_local_user=YES 允许本地用户chroot牢笼功能(change root),默认为NO不启用

#chroot_list_enable=YES 启用chroot_list文件功能,默认NO不启用此功能

#(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

情况2.启用所有普通用户的牢笼功能(即对所有人加锁)。设置如下

chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用

allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)

情况3.给指定的少数普通用户不启用牢笼功能(即少数人不加锁,白名单)。设置如下

chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用

allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径

情况4.给指定的少数普通用户启用牢笼功能(即少数人加锁,黑名单)。设置如下

#chroot_local_user=YES 启用本地用户chroot牢笼功能(change root),默认为NO不启用

allow_writeable_chroot=YES 允许chroot牢笼功能下执行写操作(centos7中必加此行)

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路径

匿名用户上传下载

需求:实现允许anonymous匿名用户既能下载又能上传文件文件。

需求分析:匿名用户要想对共享目录有rw可读可写的权限,必须满足以下2个条件:

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

2.用户对共享目录自身要有可读可写的权限。

实施参考: 第1步,在vsftpd.conf配置文件中允许anonymous匿名用户有可读可写的权限。

vim /etc/vsftpd/vsftpd.conf 找到如下代码,去掉29、33行的#号

12 anonymous_enable=YES

29 #anon_upload_enable=YES 允许匿名用户上传

33 #anon_mkdir_write_enable=YES 允许匿名用户用mkdir创建目录

anon_other_write_enable=YES 允许匿名用户执行rm删除等操作(添加此行)

第2步,重启vsftpd服务,在win7/10中用ftp匿名用户访问共享ftp://192.168.11.11,上传一个文件到共享目录,看是否能传上去。

第3步,查看/var/ftp目录权限,并修改目录的other权限为rwx可读可写可执行。然后再执行第2步的测试。 ls -ld /var/ftp 请回答文件权限的5个问题chmod -v o+w /var/ftp

vsftpd.conf其他配置选项

vsftpd.conf的其他配置选项:man vsftpd.conf 48 #chown_uploads=YES 允许修改上传后的文件的属主和属组

49 #chown_username=whoever 文件的属主、属组修改成当前访问共享的用户

53 #xferlog_file=/var/log/xferlog 指定xferlog日志文件名及其路径,当xferlog_enable为YES时,此项默认为启用

60 #idle_session_timeout=600 (重点)空闲会话超时为600秒(即10分钟),默认开启了,时间是300秒 idle空闲会话超时时间是指用户登录到ftp服务后,n秒都没执行操作,服务器自动将此用户断开连接。(防止客户机占用服务器网络资源)

63 #data_connection_timeout=120 (重点)数据连接超时时间为120秒,默认开启了,时间是300秒 data_connection超时时间是指当客户端下载或上传文件时,由于网络不稳定,当数据掉线时间超过120秒,文件就下载或上传失败。(防止客户机占用服务器网络资源)

67 #nopriv_user=ftpsecure

72 #async_abor_enable=YES 允许异步方式传输数据

83 #ascii_upload_enable=YES 允许以ascii编码方式上传文件,默认为NO,是以binary二进制方式上传

84 #ascii_download_enable=YES 允许以ascii编码方式下载文件,默认为NO,是以binary二进制方式下载

87 #ftpd_banner=Welcome to blah FTP service. (重点)自定义banner欢迎提示语(标语)(用于打广告) banner_file=/etc/vsftpd/banner.txt (重点)自定义banner标语文件(用于打广告)

91 #deny_email_enable=YES

93 #banned_email_file=/etc/vsftpd/banned_emails


tcp_wrapers防火墙设置

查网络服务对应的端口手册文件:more /etc/services

tcp_wrapers的功能:是一个迷你的TCP防火墙,可以用来做基于TCP协议的应用程序的IP安全访问控制。

配置文件:白名单:/etc/hosts.allow ? 黑名单:/etc/hosts.deny

技巧:让少数人为白户,那么先在hosts.deny中做拒绝所有(all)黑名单,然后在hosts.allow中做少数IP的放行白名单。 ? 配置文件格式:man hosts.allow

格式说明: 守护进程名称:主机名或IP地址

守护进程名称可以是:vsftpd、sshd、httpd、in.tftpd等。

主机名或IP地址可以是:all所有主机、主机名、域名(网址)、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共享

注意:做完hosts.deny黑名单测试后,请将hosts.deny文件中的设置注释掉或删掉。然后再做下面的vsftpd虚拟用户项目。

vsftpd虚拟用户

虚拟用户:即非useradd创建的用户账号(非/etc/passwd中的账号),而是用vim创建的属于vsftpd的独立用户账号。 虚拟用户的优势:可以避免系统中的用户账号过多,让vsftpd文件共享软件独立管理自己的用户账号。

虚拟用户账号文件格式:文件中的奇数行是用户账号,偶数行是用户的密码。

vsftpd的虚拟用户方案思路:

0.准备工作:确保vsftpd文件共享服务已安装,并已启动vsftpd服务,且关闭了selinux和firewalld安全功能。

1.创建虚拟用户账号文件。

2.将虚拟用户账号用db_load转换成加密的数据库格式文件。

3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。

4.用useradd创建一个普通用户账号vftper。

5.在vsftpd.conf配置文件中启用guest来宾(即虚拟用户)功能,设置一个真实用户账号,

并将真实用户账号vftper和虚拟用户账号文件关联起来。

6.给每个虚拟用户账号设置独立的共享访问速度和访问目录。

7.重启vsftpd服务,并分别用虚拟用户账号访问共享。

vsftpd虚拟用户实施思路: ? 0.准备工作:确保关闭了selinux和firewalld安全功能。且vsftpd文件共享服务已安装,并已启动vsftpd服务。

setenforce getenfroce

systemctl stop firewalld systemctl status firewalld

1.创建虚拟用户账号文件。

2.将虚拟用户账号转换成加密的数据库格式文件。

db_load选项: -T 是translation转换文件格式 -t hash 指定格式转换的算法为hash算法 -f 是指定要转换格式的文件 /etc/vsftpd/vuser.txt 是要转换格式的文件 /et/vsftpd/vuserdb.db 是转换格式之后的文件

3.在vsftpd的pam认证文件中添加虚拟用户账号文件的认证关系。

以下两行的功能:仅能实现虚拟用户访问共享,普通用户不能访问共享。(不建议使用)

required 意思是必须的 sufficient 意思是满足的、备选的

以下功能选项的功能:既能让虚拟用户访问共享,也能让普通用户访问共享。(推荐使用)

以下几行功能选项是vsftpd的默认pam认证文件内容。(无需修改)

4.用useradd创建一个普通用户账号vftper。

5.在vsftpd.conf配置文件中设置一个真实用户账号,并将真实用户账号vftper和虚拟用户账号文件关联起来。

6.给每个虚拟户账号设置独立的共享访问速度和访问目录。

cd /etc/vsftpd ? mkdir -v vuser_conf ? cd vuser_conf

创建f1、f2虚拟用户的会员个性化设置文件,允许f1这个虚拟用户在自己的家目录中可读可写。

允许f2这个用户在自己的家目录中可读,但不可写。

7.重启vsftpd服务,并分别用虚拟用户账号访问共享。


选学(课堂不演示):使用ssl登入 ? cd /etc/pki/tls/certs ? openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftp.crt

vim /etc/vsftpd/vsftpd.conf. 创建vsftpd的ssl认证配置文件

ssl_enable=YES

ssl_sslv2=YES

ssl_sslv3=YES

ssl_sslv1=YES

rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt

重启vsftpd服务后,就可用客户端来尝试SSL加密连接了。


ftp和lftp客户端程序

ftp命令

用法:ftp [选项] 主机名或IP地址

ftp的内部操作命令:

lftp命令

用法:ftp [选项] 主机名或IP地址

例:lftp 192.168.11.11 -u tom,0

说明:-u 是指定用户名和密码,两者间用逗号分隔

lftp的内部操作命令:

 


ftp工作模式

ftp的工作模式:主动port、被动passive模式

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

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24975 人正在系统学习中

来源:「已注销」

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年2月20日
下一篇 2019年2月20日

相关推荐