使用的linux系统 | centos7 |
主机IP | 192.168.100.10 |
搭建目的 | 能够利用ftp上传或下载文件 |
学习内容 | (1)ftp的搭建(2)ftp常见的协议码(3)ftp的黑白名单 |
1.使用yum安装vsftpd,创建vsftpd使用的系统用户,主目录为/home/vsftpd。创建之后所有虚拟用户使用这个系统用户访问文件。
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
2.创建虚拟用户主目录,比如虚拟用户叫aqiang
[root@localhost ~]# mkdir -p /home/vsftpd/aqiang
[root@localhost ~]# vi /etc/vsftpd/users.conf #创建虚拟用户
aqiang
123456
3.根据这个文件创建数据库文件:(这一步主要为了将验证口令转换成系统识别的口令验证文件)
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/users /etc/vsftpd/users.db # 将用户信息文件转换为数据库并使用hash加密
[root@localhost ~]# chmod 600 /etc/vsftpd/users.db
[root@localhost ~]# chmod 600 /etc/vsftpd/users
4.启用数据库文件,编辑PAM认证文件:
[root@localhost ~]# vi /etc/pam.d/vsftpd
#增加下面内容,不能加在auth文末,建议加载文件最前面
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
注意:如果是本地用户登录ftp,就不需要添加这两行pam认证,如果是虚拟用户需要加。因为虚拟用户用到了.db认证
5.创建虚拟用户配置文件:
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# vi /etc/vsftpd/vsftpd_user_conf/aqiang
local_root=/home/vsftpd/aqiang # 当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
anon_upload_enable=YES #允许登录用户有上传权限
write_enable=YES # 是否允许登陆用户有写权限。
6.修改主配置文件:
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #禁止匿名用户登录
增加下面配置参数:
chroot_local_user=YES #禁止用户访问除主目录以外的目录
guest_enable=YES #启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户使用的配置文件目录
allow_writeable_chroot=YES # 允许写入用户主目录
7.重启服务生效配置文件:
[root@localhost ~]# systemctl restart vsftpd
8、测试
(1)创建一个文件测试是否能够使用
[root@localhost aqiang]# touch /home/vsftpd/aqiang/test.txt
(2)在windows上安装FileZilla软件
(3)测试是否能够上传和下载文件
上传:
下载:
大致分类如:
1开头:表示服务器信息
2开头:正确响应的信息
3开头:正常响应,但某一操作尚未完成,需进一步补充完成
4开头:表示客户端错误
5开头:表示服务器端错误
120 服务在nnn分钟内准备好
125 数据连接已打开,准备传送
150 文件状态良好,打开数据连接
200 命令成功
202 命令未实现
211 系统状态或系统帮助响应
212 目录状态
213 文件状态
214 帮助信息,信息仅对人类用户有用
215 名字系统类型
220 对新用户服务准备好
221 服务关闭控制连接,可以退出登录
225 数据连接打开,无传输正在进行
226 关闭数据连接,请求的文件操作成功
227 进入被动模式
230 用户登录
250 请求的文件操作完成
257 创建"PATHNAME"
331 用户名正确,需要口令
332 登录时需要帐户信息
350 请求的文件操作需要进一步命令
421 连接用户过多
425 不能打开数据连接
426 关闭连接,中止传输
450 请求的文件操作未执行
451 中止请求的操作:有本地错误
452 未执行请求的操作:系统存储空间不足
500 格式错误,命令不可识别
501 参数语法错误
502 命令未实现
503 命令顺序错误
504 此参数下的命令功能未实现
530 账号或密码错误
532 存储文件需要帐户信息
550 未执行请求的操作
551 请求操作中止:页类型未知
552 请求的文件操作中止,存储分配溢出
553 未执行请求的操作:文件名不合法
一、
ftpusers和user_list两个文件用途和区别:
ftpusers它不受任何配置项影响,总是有效,是黑名单!
user_list 则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!
二、userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
1、 当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
2、 当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
测试一、
当userlist_enable=YES时,userlist_deny=YES时,测试user_list是否成为黑名单
执行以下命令新建两个用户,并设置密码
# useradd test1
# useradd test2
# passwd test1
# passwd test2
打开user_list_enable并添加Userlist_deny=YES
将test1用户加入名单
测试test1是否能够登入
测试二、
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单:
测试test1是否能正常登录,而test2是否因为不在白名单内而被拒绝登录
在user_list里加入test1用户
测试登录test1能否正常登入
测试test2是否被拒绝登入