FTP三种访问模式

(由于下周考试考试比较多,任务比较重,所以今天的笔记整理先只整理思路和用到的命令,具体的实验截图,下下周进行整理上传)

 

FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露。

vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

参数

作用

anonymous_enable=YES

允许匿名访问模式。

anon_umask=022

匿名用户上传文件的umask值。

anon_upload_enable=YES

允许匿名用户上传文件

anon_mkdir_write_enable=YES

允许匿名用户创建目录

anon_other_write_enable=YES

允许匿名用户修改目录名或删除目录

确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service

 

在客户端尝试登入FTP服务:

[root@linuxprobe ~]# ftp 192.168.10.10

 

匿名用户没有写入权限,那我们将所有者修改为ftp

[root@linuxprobe ~]# chown  ftp /var/ftp/pub

可以在主机上访问客户机

 

 

 

 

本地用户模式

既然要使用本地用户模式,而本地用户模式确实要比匿名访问模式更加的安全,所以本实验中会关闭匿名访问模式

vsftpd服务程序默认已经允许本地用户模式,我们要做的是添加设置本地用户模式权限的参数:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

参数

作用

anonymous_enable=NO

禁止匿名访问模式。

local_enable=YES

允许本地用户模式。

write_enable=YES

设置可写入权限。

local_umask=022

本地用户模式创建文件的umask值。

userlist_deny=YES

参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。

userlist_enable=YES

允许“禁止登陆名单”,名单文件为ftpusers与user_list。

确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service

ftpusersuser_list文件中禁止登陆用户名单:

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

 

vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户吧:

[root@linuxprobe ~]# useradd linuxprobe

为linuxprobe用户设置密码:

[root@linuxprobe ~]# passwd linuxprobe

Changing password for user linuxprobe.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

在客户端尝试登入FTP服务:

[root@linuxprobe ~]# ftp 192.168.10.10

Connected to 192.168.10.10 (192.168.10.10).

220 (vsFTPd 3.0.2)

Name (192.168.10.10:root): linuxprobe

331 Please specify the password.

Password:输入用户的本地密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>mkdir files

 

 

 

 

虚拟用户模式

因为虚拟用户模式的帐号口令都不是真实系统中存在的,所以只要配置妥当虚拟用户模式会比本地用户模式更加安全,但是Vsftpd服务配置虚拟用户模式的操作步骤相对复杂一些,具体流程如下:

第1步:建立虚拟FTP用户数据库文件。

第2步:创建FTP根目录及虚拟用户映射的系统用户。

第3步:建立支持虚拟用户的PAM认证文件。

第4步:在vsftpd.conf文件中添加支持配置。

第5步:为虚拟用户设置不同的权限。

第6步:重启vsftpd服务,验证实验效果。

 

 

第1步:建立虚拟FTP用户数据库文件。

切换至vsftpd程序目录:

[root@linuxprobe ~]# cd /etc/vsftpd/

创建用于生成FTP用户数据库的原始帐号和密码文件

[root@linuxprobe vsftpd]# vim vuser.list

//单数行为帐号,双数行为密码。

linuxprobe

pa33w0rd

blackshield

pa22w1rd

使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db:

[root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db

 

 

查看数据库文件的类型:

[root@linuxprobe vsftpd]# file vuser.db

vuser.db: Berkeley DB (Hash, version 9, native byte-order)

FTP用户数据库内容很敏感,所以权限给小一些:

[root@linuxprobe vsftpd]# chmod 600 vuser.db

删除原始的帐号和密码文件:

[root@linuxprobe vsftpd]# rm -f vuser.list

第2步:创建FTP根目录及虚拟用户映射的系统用户。

创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:

[root@linuxprobe ~]# useradd -d /var/ftproot -s /sbin/nologin virtual

查看该用户的家目录权限:

[root@linuxprobe ~]# ls -ld /var/ftproot/

drwx------. 3 virtual virtual 74 Jul 14 17:50 /var/ftproot/

为保证其他用户可以访问,给予rwxr-xr-x权限:

[root@linuxprobe ~]# chmod -Rf 755 /var/ftproot/

第3步:建立支持虚拟用户的PAM认证文件:

[root@linuxprobe ~]# vim /etc/pam.d/vsftpd.vu

//参数db用于指向刚刚生成的vuser.db文件,但不要写后缀。

auth       required     pam_userdb.so db=/etc/vsftpd/vuser

account    required     pam_userdb.so db=/etc/vsftpd/vuser

第4步:在vsftpd.conf文件中添加支持配置。
既然要使用虚拟用户模式,而虚拟用户模式确实要比匿名访问模式更加的安全,配置的同时也关闭匿名开放模式

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

 

参数

作用

anonymous_enable=NO

禁止匿名开放模式。

local_enable=YES

允许本地用户模式。

guest_enable=YES

开启虚拟用户模式。

guest_username=virtual

指定虚拟用户帐号。

pam_service_name=vsftpd.vu

指定pam文件。

allow_writeable_chroot=YES

允许禁锢的FTP根目录可写而不拒绝用户登入请求。

第5步:为虚拟用户设置不同的权限
现在不论是linuxprobe还是blackshield帐户,他们的权限都是相同的——默认不能上传、创建、修改文件,如果希望用户blackshield能够完全的管理FTP内的资料,就需要让FTP程序支持独立的用户权限配置文件了:
指定用户独立的权限配置文件存放的目录:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vusers_dir

创建用户独立的权限配置文件存放的目录:

[root@linuxprobe ~]# mkdir /etc/vsftpd/vusers_dir/

切换进入到该目录中:

[root@linuxprobe ~]# cd /etc/vsftpd/vusers_dir/

创建空白的linuxprobe的配置文件:

[root@linuxprobe vusers_dir]# touch linuxprobe

指定blackshield用户的具体权限:

[root@linuxprobe vusers_dir]# vim blackshield

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

第6步:重启vsftpd服务,验证实验效果。
确认填写正确后保存并退出vsftpd.conf文件,重启vsftpd程序并设置为开机后自动启用:

[root@linuxprobe ~]# systemctl restart vsftpd
[root@linuxprobe ~]# systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service

此时可使用FTP客户机(192.168.10.20)尝试登入FTP服务了:

[root@linuxprobe ~]# ftp 192.168.10.10

Connected to 192.168.10.10 (192.168.10.10).

220 (vsFTPd 3.0.2)

Name (192.168.10.10:root): blackshield

331 Please specify the password.

Password:此处输入虚拟用户的密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>mkdir files

你可能感兴趣的:(FTP三种访问模式)