深入解析FTP服务:工作原理、优势及与HTTP的区别
(PAM)配置文件,主要用来加强vsftpd服务器的用户认证②配置匿名用户登录的FTP服务器实例公司内部现在有一台FTP服务器和Web服务器,FTP主要用于维护公司网站内容,包括上传文件,创建目录,更新网页等。将FTP服务器和Web服务器放在一起是企业常用的
目录
1.FTP相关知识
基于HTTP的WWW服务功能虽然强大,但对于文件传输来说稍显不足。专门用于文件传输的FTP服务应运而生
FTP服务是一种文件传输服务。整个过程就是文件。顾名思义,它是一种文件传输协议,文件传输可靠性更强,效率更高。
1.FTP 的工作原理
FTP大大简化了文件传输的复杂性。它使得文件系统可以通过网络从一台主机传输到另一台计算机,而不受计算机和操作系统的限制。
Ⅰ.客户端向服务器发送连接请求,同时客户端系统动态打开大于1024的端口,等待服务连接。
二.如果FTP服务器在端口21上侦听请求,则客户端的端口1031和服务器的端口21之间将建立FTP会话连接。
三.当需要传输数据时,FTP客户端动态打开大于1024的端口,连接到服务器的20端口,并在两个端口之间传输数据。当数据传输完成后,这两个端口将自动关闭。
四.当客户端与FTP服务器断开连接时,客户端上动态分配的端口将自动释放。
2.FTP工作模式
FTP服务有两种工作模式:主动传输模式(FTP)和被动传输模式(FTP)
3.匿名用户
FTP 服务与 WWW 不同。它首先需要登录服务器,然后传输文件。这对于很多公开提供软件下载的服务器来说是非常不方便的,于是匿名用户访问就诞生了:通过使用通用的用户名和无限制密码的管理策略(一般使用用户的电子邮件地址作为密码),任何用户都可以轻松从FTP服务器下载软件
2、Linux服务器端和客户端的项目设计和配置信息准备
主机名
操作名称
IP地址
角色
8
8
192.168.80.3
FTP服务器
8
8
192.168.80.4
FTP客户端
192.168.10.1
主机、FTP 客户端
项目实施一.安装、启动和停止服务
[root@dns ~]# yum -y
[root@dns ~]# yum -y ftp
[root@dns ~]# rpm -qa | grep
[root@dns ~]# rpm -qa | grep ftp
[root@dns ~]#
[root@dns ~]#
[root@dns ~]# -cmd -- --add-=ftp
[root@dns ~]# -cmd --
[root@dns ~]# -p =on //打开
二.了解配置文件
1.主配置文件(/etc//.conf)
=[yes|no] 是否以独立模式监控服务=IP地址 设置监控的IP地址=21 设置FTP服务的监听端口=[yes|no] 是否允许文件下载
=[是|否]
=[yes|no] 设置用户列表“允许”或“禁止”操作
=0 最大客户端连接数,0表示无限制 =0 同一IP地址最大连接数; 0表示不限制=[yes|no]是否允许匿名用户访问
=[yes|no]是否允许匿名用户上传文件=022 匿名用户上传文件的umask值=/var/ftp 匿名使用的FTP根目录 ble=[yes|no]是否允许匿名用户创建目录ble=[是| no]是否允许匿名用户其他写权限(包括重命名、删除等)=0 匿名用户最大传输速率,0表示不限制=[yes|no]是否允许本地用户登录FTP =022 本地用户上传文件的umask值
=/var/ftp 本地用户的FTP根目录
=[yes|no] 是否限制用户对FTP目录的权限,保证安全=0 本地用户最大传输速率(KB/S),0表示不限制
2./etc/pam.d/
(PAM)配置文件,主要用于加强服务器的用户认证
3./etc//
位于此文件中的所有用户将无法访问该服务。当然,出于安全考虑,这个文件默认已经包含了root、bin等系统账户。
4./etc//
该文件中包含的用户可能会被拒绝访问该服务,也可能会被允许访问,具体取决于主配置文件/etc//.conf中的“”参数设置为yes或no
5./var/ftp文件夹
该文件夹是提供服务的文件分发中心,它包含一个pub子目录。在默认配置下,所有目录都是只读的,但只有root有写权限。
三.配置匿名用户FTP实例
① 认证方式
允许用户通过3种认证方式登录FTP服务器,
匿名开放模式:是最不安全的认证模式。无需验证密码,无需直接登录FTP服务器。本地用户模式:是通过Linux系统本地账户信息进行认证的模式。与匿名开放模式相比,该模式更加安全且配置简单。但如果账户信息被黑客破解,你可以畅通无阻地登录FTP服务器,完全控制整个服务器。虚拟用户模式:是最安全的认证模式。它需要为FTP服务创建一个单独的用户数据库文件。虚拟映射用于验证账户信息以进行密码验证。但这些账户信息实际上并不存在于服务器系统中,仅用于FTP。服务程序用于认证。
②配置匿名用户登录的FTP服务器实例
示例:新建一个FTP服务器网站维护公司,允许匿名用户上传和下载文件。匿名用户的根目录设置为/var/ftp
1.新建测试文件并编辑/etc//.conf
将=NO改为=YES //允许匿名用户登录
添加
=/var/ftp //设置匿名用户的根目录为/var/ftp
=YES //允许匿名用户上传文件
ble=YES //允许匿名用户创建文件夹
ble=YES //表示允许匿名用户删除文件
2.允许,让防火墙允许ftp服务,并重启服务
3、在客户端资源管理器中输入ftp://192.168.80.3,打开pub目录,新建文件夹
原因是什么?原来是系统的本地权限没有设置。
4、设置本地系统权限,设置所有者为ftp,或者授予其他用户对pub目录的写权限
5.重启服务器并再次测试
创建新文件夹
尝试上传文件
上传了一个 html 文件
返回ftp服务器,查询
上传成功
6.尝试在Linux客户端上传、下载文件
要在 Linux 上进行测试,请输入 ftp 作为用户名,然后按“enter”键输入密码。
下载文件:
上传文件:
四、本地模式下配置常规FTP服务器案例
1.FTP服务器配置要求
公司现拥有FTP服务器和Web服务器。 FTP主要用于维护公司网站的内容,包括上传文件、创建目录、更新网页等。公司目前有两个部门负责维护任务,分别使用team1和team2账号进行管理。首先,只需要team1和team2帐户登录FTP服务器,但无法登录本地系统。这两个账户的根目录被限制为/web/www/html,不能进入该目录以外的任何目录。
2、需求分析
将FTP服务器和Web服务器放在一起,以方便网站的维护,是企业常用的方法。为了增强安全性,首先需要只允许本地用户访问,禁止匿名用户登录。其次,使用该功能锁定/web/www/html目录下的team1和team2。如果需要删除文件,还需要注意本地权限。
三、解决方案
① 建立用于维护网站内容的FTP帐户team1、team2和user1并禁止本地登录,然后为其设置密码。
② 配置vsftp.conf主配置文件时,进行相应修改并写入配置文件中。
=NO //禁止匿名登录
=YES //允许本地用户登录
=/web/www/html //设置本地用户的根目录为/web/www/html
=NO //是否限制本地用户,这也是默认值,可以省略
=YES //激活功能
=/etc// //设置根目录下锁定用户的列表文件
ot=YES //只要启动了就必须加上这个:允许限制,否则会出现连接错误
③创建/etc//文件并添加team1和team2账户
④ 防火墙允许、关闭、重启服务
⑤修改本地权限
⑥Linux客户端安装ftp
⑦ 使用ftp登录,发现530错误:
首先检查/etc//和/etc//这两个文件中是否有用于连接ftp的用户名。如果有,请将其删除。
/etc//.conf中有两条关于设置的语句
和
前者用于设置是否检查/etc//中的用户名,后者用于设置是否拦截/etc//和/etc//这两个文件中的所有用户。
不过我们不用担心那么多,只需确保/etc//和/etc//中没有我们的用户名即可
如果设置后还是不行,可能是pam模块设置的问题。由于用户认证FTP服务需要使用PAM模块,因此可能会因为未安装PAM模块而导致无法登录。
解决办法是打开/etc/pam.d/文件,将下面两条前面用#注释掉的语句,然后重新启动ftp。
auth .so item=用户感知=拒绝 file=/etc//ft
授权文件
⑧使用 team1 和 team2 的用户不能更改目录网站维护公司,但可以创建新文件夹。显示的是“/”,实际上是/web/www/html文件夹!
ftp::no路由到主机问题的解决办法:
1:防火墙规则不正确:解决方案:关闭防火墙或添加防火墙端口规则
2:FTP服务的工作模式错误:解决方案:将模式更改为被动模式
为什么会出现错误?
观察防火墙是否关闭或者是否允许ftp服务
同时关闭服务器和客户端的防火墙
再试一次
如果关闭客户端的防火墙仍不能解决问题,则说明FTP服务工作模式错误。
服务器A已启动服务。服务器B通过ftp连接成功后,提示“没有到主机的路由”。
解决办法:ftp *.*.*.*
输入用户名和密码。成功后进入(关闭被动模式)改为主动模式;
再次输入ls查看ftp目录,成功!
回到正题:
发现team1和team2用户不允许更改主目录。
测试用户1用户
发现user1可以随意切换目录,下载/etc/文件到主目录,这是非常危险的。
Ⅴ.设置vsftp虚拟帐户
搭建FTP服务器并不复杂,但是需要根据服务器的用途适当规划相关配置。如果FTP服务器未对上的所有用户开放,您可以关闭匿名访问并启用物理帐户或虚拟帐户的验证机制。但在实际操作中,如果使用物理账户访问,FTP用户如果掌握了服务器的真实用户名和密码,就会对服务器造成潜在的危害。如果FTP服务器设置不当,用户可能会使用物理账户进行非法操作。因此,为了FTP服务器的安全,可以采用虚拟用户认证,即将虚拟账号映射到服务器的物理账号,客户端使用虚拟账号访问FTP服务器。
需求:使用虚拟用户user2和user3登录FTP服务器,访问主目录/var/ftp/pub。用户只允许查看文件,不允许进行上传、修改等操作。
1.创建用户数据库
(1) 首先,将保存虚拟帐户和密码的文本文件保存为以下格式:
虚拟账户1
密码
虚拟账户2
密码
使用vim编辑器创建用户文件vuser.txt并添加虚拟帐户user2和user3。
(2)。生成数据库
保存虚拟账号和密码的文本文件不能被系统账号直接调用。需要使用命令生成db数据库。
文档。
(3)。修改数据库文件访问权限
数据库文件存储虚拟帐号和密码信息。为了防止非法用户窃取,可以修改文件权限。
2.配置PAM文件
为了让服务器能够使用数据库文件并对客户端进行身份验证,需要调用系统的PAM模块。 PAM ( ) 可识别可插入的身份验证模块,而无需重新安装应用程序。您可以通过修改指定的配置文件来调整程序的身份验证方法。
(1).备份/etc/pam.d/文件
(2)。修改配置文件,将所有默认配置用“#”注释,并添加相应字段
3.创建系统用户对应的虚拟账户
[root@ ~]# -d /var/ftp/vuser vuser ---指定主目录为 /var/ftp/vuser
[root@ ~]# chown vuser.vuser /var/ftp/vuser ---更改归属关系
[root@ ~]# chmod 555 /var/ftp/vuser --更改权限
[root@ ~]# ls -ld /var/ftp/vuser --查看详细信息
4、修改/etc//.conf
=否
=否
布莱=否
ble=NO //为了保证服务器的安全,关闭匿名访问等匿名设置
=YES //虚拟账户会映射到服务器的系统账户,因此需要启用本地账户支持。
=是
ot=YES //锁定账户根目录
=NO //关闭用户的写权限
=YES //启用虚拟账户访问功能
=vuser //设置虚拟账户对应的系统账户为vuser
=YES //设置FTP服务器独立运行
= //配置vsftp使用的PAM模块。
5.关闭防火墙并允许访问
6. 客户端测试
主目录不能更改,只能查看,不能写入。
Ⅵ.补充服务器端主动、被动模式配置
(1):主动模式配置:
=YES //启用主动模式
=YES //指定开启主动模式时是否启动默认20端口监听
=%% //当上一个选项使用NO参数时指定数据传输端口。
(2)被动模式配置
=否
=YES //启用被动模式
=%% //被动模式最低端口
=%% //被动模式最大端口