一:FTP概述:
FTP (File transfer protocol) 是相当古老的传输协议之一,他最主要的功能是在服务器与客户端之间进行文件的传输,与客户端与服务器所处的位置、连接的方式、是否使用相同的操作系统无关。
1.1、vsftpd程序提供三种ftp认证登录方式:
1:匿名用户(anonymous):每个人都有权限去下载你的文件,不安全。
2:本地用户(Real user):以本地用户做为 FTP 登入者身份时,访问ftp需要知道普通用户的名称和密码,这样可以通过用户名和密码直接登录服务器,也是不安全的。
3:虚拟用户(Guest):该用户只负责ftp访问,无法登录服务器,保证了安全性。
二:FTP服务搭建:
1:准备两台linux虚拟机:? 服务端:192.68.24.8? ?客户端:192.168.24.9
2:安装FTP服务(服务/客户端)
yum install -y vsftpd.x86_64 ftp.x86_64
主配置文件:/etc/vsftpd/vsftpd.conf
无法登入的用户配置文件:/etc/vsftpd/ftpusers
自定义的抵挡项目配置文件:/etc/vsftpd/user_list(与/etc/vsftpd/ftpusers作用相同)
使用 PAM 模块时的相关配置文件:/etc/pam.d/vsftpd
3:暂时关闭selinux(服务/客户端)
setenforce 0
4:防火墙放行ftp服务(服务/客户端)
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload #使配置生效
5:三种不同的访问模式配置方法:
5.1、配置匿名访问模式:
①服务端编辑配置文件 /etc/vsftpd/vsftpd.conf
匿名访问配置文件各项参数对应功能介绍:
参数 | 功能? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | anonymous_enable=YES | 是否允许匿名登入我们的 vsftpd 主机,底下的所有相关设定都需要将这个设定为YES之后才会生效 | anon_upload_enable=YES | 是否让 anonymous 具有上传数据的功能 | anon_mkdir_write_enable=YES | 是否让 anonymous 具有建立目录的权限 | anon_other_write_enable=YES | 是否允许 anonymous 具有除了写入之外的权限(包括删除与修改服务器上的文件及文件名名等权限) | anon_umask=002 | 设置匿名用户上传目录/文件的umask值 |
在配置文件中按照需求填写或者修改以上参数并保存退出
②重启vsftp服务 (服务/客户端)
systemctl restart vsftpd.service
③为/var/ftp/pub/目录赋予其他人w权限(服务/客户端)
chmod o+w /var/ftp/pub/
④在客户端登录FTP服务
[root@node1 ~]# ftp 192.168.24.8 #连接服务端
Connected to 192.168.24.8 (192.168.24.8).
220 (vsFTPd 3.0.3)
Name (192.168.24.8:root): anonymous #匿名登录
331 Please specify the password.
Password: #密码处不需要输入
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,24,8,245,98).
150 Here comes the directory listing.
drwxr-xrwx 2 0 0 6 Aug 12 2018 pub
226 Directory send OK.
ftp> cd pub #进入pub目录
250 Directory successfully changed.
ftp> mkdir ftp.txt #创建文件
257 "/pub/ftp.txt" created
ftp> ls
227 Entering Passive Mode (192,168,24,8,234,17).
150 Here comes the directory listing.
drwxr-xr-x 2 14 50 6 Nov 18 11:33 ftp.txt #查看权限
226 Directory send OK.
ftp>
⑤验证完成
5.2、配置本地用户访问模式:
①服务端编辑配置文件 /etc/vsftpd/vsftpd.conf
本地访问配置文件各项参数对应功能介绍:
参数 | 功能 | local_enable=YES | 这个设定值必须要为 YES 时,本地用户才能登入 vsftpd 服务器 | write_enable=YES | 能否拥有写入权限 | local_umask=022 | 设置用户上传目录/文件的umask值 | userlist_enable=YES | 是否借助vsftpd的抵挡机制来处理某些不受欢迎的账号 | userlist_deny=YES | 当 userlist_enable=YES 时才会生效的设定,若此设定值为 YES 时,则当使用者账号被列入到/etc/vsftpd/user_list时, 在该档案内的使用者将无法登入 vsftpd 服务器 |
在配置文件中按照需求填写或者修改以上参数并保存退出
②重启vsftp服务 (服务/客户端)
systemctl restart vsftpd.service
③为/var/ftp/pub/目录赋予其他人w权限(服务/客户端)
chmod o+w /var/ftp/pub/
④用客户端的普通用户登录FTP服务
[root@node1 ~]# ftp 192.168.24.8
Connected to 192.168.24.8 (192.168.24.8).
220 (vsFTPd 3.0.3)
Name (192.168.24.8:root): admin #普通用户登录
331 Please specify the password.
Password: #输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,24,8,148,222).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir ftpuser.txt #创建目录
257 "/home/admin/ftpuser.txt" created
ftp> ls
227 Entering Passive Mode (192,168,24,8,138,127).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 6 Nov 18 12:39 ftpuser.txt
226 Directory send OK.
ftp> exit
221 Goodbye.
[root@node1 ~]#
⑤验证完成
?
5.3、配置虚拟用户访问模式:
①添加虚拟用户口令文件
vim /etc/vsftpd/vuser.txt
?按照一行用户名一行密码的格式来添加虚拟用户
②生成虚拟用户口令认证文件
/etc/vsftpd/目录下:
db_load -T -t hash -f vuser.txt vuser.db #利用哈希算法把文档转换为认证的数据库文件
③编辑vsftpd的PAM认证文件
vim /etc/pam.d/vsftpd
键入以下内容:
auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
注释1-8行,添加9-10行(注释掉之后本地用户无法登录,因为本地用户登录需要验证该文件的这些行)
④建立本地映射用户并设置宿主目录权限
#虚拟用户需要登录默认目录/home/vftproot,用来跟虚拟用户进行关联映射
useradd -d /home/vftproot -s /sbin/nologin vuser
chmod 755 /home/vftproot #改变目录的权限 ,允许上传
⑤服务端编辑配置文件/etc/vsftpd/vsftpd.conf
vim /etc/vsftpd/vsftpd.conf
guest_enable=YES | 是否允许虚拟用户登入vsftpd服务 | guest_username=vuser | 指定虚拟用户名 | pam_service_name=vsftpd | 指定pam模块的名称 | allow_writeable_chroot=YES | 允许用户登入请求 |
在配置文件中按照需求填写或者修改以上参数并保存退出
⑥重启vsftpf服务,并测试
systemctl restart vsftpd.service
此时登录ftp 发现本地用户无法登录,虚拟用户可以登录,可以查看,下载,确无法上传
[root@node1 ~]# ftp 192.168.24.8
Connected to 192.168.24.8 (192.168.24.8).
220 (vsFTPd 3.0.3)
Name (192.168.24.8:root): admin #本地用户登录失败
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> exit
221 Goodbye.
要想上传文件,必须修改权限,打开/etc/vsftpd/vsftpd.conf文件,配置以下命令:
anonymous_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
此时重启ftp可以上传,并且上传的目录就在宿主目录/home/vftproot/下
⑦调整虚拟用户权限
首先在/etc/vsftpd/vsftpd.conf配置文件中添加第一条命令同时拒绝匿名用户登录:
user_config_dir=/etc/vsftpd/vusers_dir
anonymous_enable=NO
然后在etc/vsftpd/目录下创建一个新的目录vuser_dir
在此目录下建立虚拟用户名文件并写入:
anonymous_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启动服务该虚拟户即可上传文件,其他虚拟用户仍不可上传文件
?
|