一、FTP 的安装及启用
-
什么是FTP 服务器?
FTP 是 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于 Internet 上的控制文件的双向传输。同时,它也是一个应用程序(Application)。 基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。
在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和"上传“(Upload)。 -
什么是Vsftpd?
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX 等系统上面,是一个完全免费的、开放源代码的 ftp 服务器软件,支持很多其他的FTP 服务器所不支持的特征。 -
实验步骤:
步骤零:将服务端 IP 设置为172.25.254.150,客户端 IP 设置为172.25.254.250
在服务端
步骤一:配置好 yum 源,下载 vsftpd
步骤二:打开 vsftpd,并设置成开机自动启动
步骤三:关闭火墙
步骤四:设置SELINUX
在客户端
步骤五:下载 ftp,关闭火墙,设置 SELINUX
步骤六: 访问验证是否搭建成功
步骤七:为了在实验时便于观察,将服务端主机命名为 server,客户端主机命名为 client
二、FTP 基本安全部署示例
FTP服务的基本信息
软件安装包 | vsftpd |
---|---|
默认发布目录 | var/ftp |
默认发布目录的子目录 | /var/ftp/pub/ |
协议接口 | 21/tcp |
服务配置文件 | /etc/vsftpd/vsftpd.conf |
报错id的解析
500 | 文件系统权限过大 |
---|---|
530 | 用户认证失败 |
550 | 服务本身功能未开放 |
553 | 本地文件系统权限过小 |
匿名用户设定
在服务端
安装完后,有/etc/vsftpd/vsftpd.conf 文件,是 vsftp 的配置文件
首先 anonymous_enable=YES|NO ##匿名用户登陆限制改为 YES
1.匿名用户上传
步骤一:修改配置文件
write_enable=YES
anon_upload_enable=YES
步骤二:重启服务
步骤三:因为匿名用户是以ftp用户的身份访问ftp服务器的,所以将 /var/ftp/pub 目录的所有组改成ftp
步骤四:赋予/var/ftp/pub 775较大的权限,这样匿名用户才可以上传
在客户端测试
步骤五:在客户端上传文件成功!
2.匿名用户家目录修改
匿名用户默认的家目录在/var/ftp/下,现在想要更改它的默认家目录,在配置文件里修改
步骤一:新建目录 /ahtl,并建立文件作为实验效果测试
步骤二:修改配置文件
anon_root=/ahtl
步骤三:重启服务
在客户端测试
步骤四:发现用户的默认家目录在/ahtl,成功!
3.匿名用户上传文件默认权限修改
步骤一:匿名用户默认上传文件 600,在配置文件里修改,重启服务
在客户端测试
步骤二:上传文件,发现文件权限为644,成功!
4.匿名用户建立目录
步骤一:在配置文件里修改,重启服务
在客户端测试
步骤二:新建目录,成功!
5.匿名用户下载
步骤一:在配置文件里修改,重启服务
anon_world_readable_only=YES|NO ##设定参数值为no表示匿名用户可以下载
在客户端测试
步骤二:下载文件,成功!
由于是在/Desktop 目录下进行的 lftp 连接,所以,下载的文件在/Desktop 目录
下载目录,用mirror命令
6.匿名用户删除
步骤一:在配置文件里修改,重启服务
在客户端测试
步骤二:删除文件,成功!
7.匿名用户使用的用户身份修改
步骤一:在配置文件里修改,重启服务
步骤二:查看 student 用户 id
在客户端测试
步骤三:用户身份修改为 student,成功!
8.最大上传速率设置
在客户端
步骤一:划一个1.5G的文件,在没有限制速度的情况下,上传速度较快
在服务端
步骤二:编辑配置文件,重启服务
在客户端测试
步骤三:上传速度减慢,成功!
8.最大链接数设置
步骤一:在配置文件里修改,重启服务
在客户端测试
步骤二:测试发现,仅能有两个用户进行链接,第三个用户链接时失败
本地用户设定
首先,在配置文件中修改
local_enable=YES|NO ##本地用户登陆限制
write_enable=YES|NO ##本地用户写权限限制
1.本地用户家目录修改
步骤一:为了方便观察,在想要修改的家目录中新建三个文件
步骤二:修改配置文件,并重启服务
在客户端测试
步骤三:使用本地用户连接,发现家目录为 /test
2.本地用户上传文件权限
步骤一:修改配置文件,并重启服务
在客户端测试
步骤二:使用本地用户连接,上传文件后发现权限为 600
3.限制本地用户浏览/目录
所有用户被锁定到自己的家目录中
步骤一:修改配置文件,并重启服务
步骤二:chmod u-w /home/student
在客户端测试
步骤三:用户被锁定在家目录中不能cd切换到其他目录下
4.用户黑名单建立
步骤一:修改配置文件,并重启服务
步骤二:编辑黑名单文件chroot_list
设置 student 用户在黑名单中
在客户端测试
步骤三:发现 student 用户不能登陆连接
5.用户白名单建立
步骤一:修改配置文件,并重启服务
步骤二:编辑黑名单文件chroot_list
此时只有写入的本地用户可以登陆连接
在客户端测试
步骤三:发现 student 用户能登陆连接,ahtl 用户不能登陆连接
6.永久设置本地用户黑名单
步骤一:修改配置文件,并重启服务
步骤二:编辑配置文件 /etc/vsftpd/ftpusers
将 student 加入
在客户端测试
步骤三:发现 student 用户不能登陆连接,ahtl 用户能登陆连接
7.永久设置本地用户白名单设定
步骤一:修改配置文件,并重启服务
步骤二:编辑配置文件 /etc/vsftpd/user_list
在客户端测试
步骤三:发现 student 用户能登陆连接,ahtl 用户不能登陆连接
三、FTP 虚拟用户的设定
1.创建虚拟帐号
步骤一:创建虚拟帐号身份的文件(注意: 不要出现空行或者多余的空格)
vim /etc/vsftpd/loginusers ##文件名称任意
步骤二:对用户帐号和密码进行加密
db_load 加密命令
-T 转换
-t 建立
-f 指定文件
/etc/vsftpd/ahtl 被加密文件
/etc/vsftpd/ahtl.db加密的文件
步骤三:chmod 600 /etc/vsftpd/ahtl*
步骤四:编辑帐号和密码处理的库文件
vim /etc/pam.d/ckvsftpd ##文件名称任意
account auth 帐号和密码
required 请求访问允许或拒绝
pam_userdb.so 验证程序
db=/etc/vsftpd/ahtl(.db) 在该文件里面验证
步骤五:配置vsftpd配置文件,并重启服务
在客户端测试
步骤六:分别用user1,user2,user3 可以登陆ftp服务器,成功!
2.虚拟帐号身份指定
步骤一:在 vsftpd配置文件中添加,并重启服务
步骤二:为了方便看到实验效果,在 /var/ftp 目录下建立文件
在客户端测试
步骤三:登陆ftp服务器发现用户身份为 ftp,成功!
3.虚拟帐号家目录独立设定
步骤一:为虚拟用户分别建立家目录,且在每个目录下建立一个/pub 目录
步骤二:分别在不同用户的家目录下建立文件
步骤三:修改 vsftpd 配置文件,并重启服务
在客户端测试
步骤四:分别用user1,user2,user3 可以登陆ftp服务器,发现在不同的家目录中,成功!
4.虚拟帐号独立配置
步骤一:修改不同用户的权限及所属用户
步骤二:修改 vsftpd 配置文件,并重启服务
步骤三:建立指定的目录
步骤四:若需要 user1 用户可以上传且限速,则在/etc/vsftpd/user_config 目录下建立与user1 同名的文件,并添加内容
此文件设定的参数,此文件的优先级最高
在客户端测试
步骤五:使用 user1 登陆连接,发现上传被限速