Linux FTP服务配置

首先恢复虚拟机1、虚拟机2快照,重新准备环境:

虚拟机1-单网卡-仅主机模式-192.168.100.3-FTP服务器

虚拟机2-单网卡-仅主机模式-192.168.100.4-FTP客户端

物理机(windows系统宿主机)-FTP客户端

两台虚拟机保证本地yum源配好!!

两台虚拟机均关闭SELinux与firewalld防火墙!!

-------------------------------------------------------

任务一、使用FTP实现文件下载

【1】虚拟机1上通过 yum 源安装 Vsftp 服务

Centos 7 系统上安装 Vsftp 软件有多种方式,比如源码编译安装、rpm方式安装、yum源方式安装等。因为前面的课程中已经配置好了yum源,在此直接通过yum 方式进行安装。

[root@localhost ~]# yum install -y vsftpd       //-y 选项表示不再询问直接安装 安装完成后,可以通过 rpm 命令查看是否已经安装。

[root@localhost ~]# rpm -qa |grep vsftpd

如果能够在输出中看到 vsftpd-3.0.2-27.el7.x86_64 这个包,则说明安装成功。

【2】虚拟机1上运行 Vsftp 服务

启动服务。

[root@localhost ~]# systemctl start vsftpd



[root@localhost ~]# systemctl status vsftpd

通过该命令可以查看服务是否处于运行状态,比如结果中有 active (running)字样,表示服务正在运行中。

设置服务开机自启动。

[root@localhost ~]# systemctl enable vsftpd 设置为开机自启动后,当开机或者重启操作系统后,vsftpd 自动运行。

Windows 系统查看共享文件。

假如 FTP 服务器 IP 地址是 192.168.100.3,则打开“此电脑”,地址栏输入 ftp://192.168.100.3 可以看到文件共享页面。

【3】定制 Vsftp 实现文件下载

前面我们运行了 Vsftp 服务,并且能够看到文件共享,但这仅仅是使用了 Vsftp 默认的配置,而如果我们想定制自己的配置就需要修改配置文件来实现。

  我们看一个案例,要求:

      允许匿名用户登录,允许匿名用户上传、下载、修改、删除文件与文件夹;

      匿名用户根目录:/home/ftp;

案例实现:

Vsftp 的默认配置文件在/etc/vsftpd/目录下,默认主配置文件为 vsftpd.conf,

我们可以通过修改该文件实现案例的要求。

(1)为了避免我们的修改造成 Vsftp 崩溃无法恢复的后果,建议先备份一下默认配置文件

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bac

(2)准备共享文件目录

[root@localhost ~]# mkdir -p /home/ftp/share

[root@localhost ~]# echo “Welcome” >> /home/ftp/share/test.txt [root@localhost ~]# chmod -R 777 /home/ftp/share

(3)修改配置文件

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

对应配置项修改为以下内容(以下配置项若有则直接修改值,若没有则直接添加,若已注释则取消注释):

anonymous_enable=YES              #允许匿名用户登录

write_enable=YES                  #可写

anon_upload_enable=YES            #匿名用户可上传

anon_mkdir_write_enable=YES             #匿名用户可创建目录

anon_other_write_enable=YES       #匿名用户其他写权限,如删除、重命名

anon_root=/home/ftp               #匿名用户登录后主目录

  

(4)重启 vsftp 服务

[root@localhost ~]# systemctl restart vsftpd

(5)此电脑地址栏输入地址(ftp://192.168.100.3),可以看到我们共享的文件,进去可以验证相关读写权限

-------------------------------------------------------

任务二、FTP服务实现用户登录限制

众所周知,Vsftp服务以安全性作为设计初衷,肯定会支持很多安全相关的配置,比如设置禁止匿名访问、设置文件访问权限、虚拟用户验证等,通过安全相关配置项的配置,能够最大程度地保证文件共享的安全性。

通过一个案例,来简单了解 Vsftp 服务的安全配置。

要求:

禁止匿名用户登录

允许 ftp1、ftp2 这两个账户登录 ftp

登录后主目录 ftp1 是/home/ftp1,ftp2 是/home/ftp2

将 ftp1 锁定在主目录下,ftp2 不做限制

【1】虚拟机1上创建测试用户

[root@localhost ~]# useradd -d /home/ftp1 ftp1

[root@localhost ~]# useradd -d /home/ftp2 ftp2

[root@localhost ~]# passwd ftp1

[root@localhost ~]# passwd ftp2

【2】虚拟机1准备本地待共享目录

[root@localhost ~]# mkdir -p /home/ftp1/pub1

[root@localhost ~]# touch /home/ftp1/test1.txt

[root@localhost ~]# mkdir -p /home/ftp2/pub2

[root@localhost ~]# touch /home/ftp2/test2.txt

【3】虚拟机1修改配置文件

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf.bac /etc/vsftpd/vsftpd.conf

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

修改为以下内容(以下配置项若有则直接修改值,若没有则直接添加,若已注释则取消注释):

anonymous_enable=NO                           #禁止匿名用户登录

local_enable=YES                              #允许本地用户登录

write_enable=YES                              #写权限

chroot_local_user=NO                          #切换目录限制

chroot_list_enable=YES                        #限制切换文件生效

chroot_list_file=/etc/vsftpd/chroot_list      #设置哪些用户被限制

allow_writeable_chroot=YES                    #开启主目录写权限

pam_service_name=vsftpd                       #登录认证方式

这里补充一下:

Vsftp 限制用户切换目录主要是通过 chroot_local_user、chroot_list_enable、 chroot_list_file 这三个配置项配合实现。

chroot_list_file 配置项指向列表文件,列表文件中填入要被限制(或不被限制)的用户名,

如果要想让chroot_list_file文件生效,就需要设置 chroot_list_enable=YES,而这个文件中填入的用户是被限制还是不被限制则取决于 chroot_local_user 这个配置项。

第一种情形,假如我们配置 chroot_local_user=YES,那列表文件中列出的用户就是属于白名单用户,不被限制切换目录,而不在此文件中的所有用户均被设 置为禁止切换出主目录;

第二种情形,假如我们配置 chroot_local_user=NO,那列表文件中列出的用户就是属于黑名单用户,被禁止切换目录,而不在此文件中的所有用户均被设置为允许切换出主目录。

【4】虚拟机1修改 chroot_list 文件

[root@localhost ~]# vi /etc/vsftpd/chroot_list

其内容(限制哪个用户就把哪个用户添加进去):

ftp1

【5】虚拟机1重启 vsftp 服务

[root@localhost ~]# systemctl restart vsftpd

【6】测试

在虚拟机2的火狐浏览器输入 ftp://192.168.100.3,回车后弹出登录窗口

通过ftp1 用户登录,登录后无法切换到其他目录下

通过ftp2 用户登录,登录后可以切换到所有目录甚至根目录下

-------------------------------------------------------

任务三、FTP服务虚拟账号配置

我们前面任务二实现了通过用户登录FTP,但是我们用的用户都是系统实体账户,这样相当于泄露了我们账户的密码,FTP其实还可以实现通过虚拟用户进行登录。我们看一个案例:

案例:

使用虚拟用户user2、user3登录FTP服务器,访问主目录是/var/ftp/vuser,用户只允许查看文件,不允许上传、修改等操作。

步骤:

【1】创建用户数据库

(1)首先创建虚拟用户文件:

[root@server ~]# mkdir /vftp

[root@server ~]# vim /vftp/vuser.txt

内容如下:

user2

123456

user3

123456

保存退出。

(2)生成数据库

前面创建的txt文件并不能被系统直接识别,需要使用相关命令转换成db数据库文件才能够被系统识别

[root@server ~]# db_load -T -t hash -f /vftp/vuser.txt /vftp/vuser.db

[root@server ~]# ll /vftp/

总用量 16

-rw-r--r--. 1 root root 12288 10月 12 15:03 vuser.db

-rw-r--r--. 1 root root    26 10月 12 15:01 vuser.txt

(3)修改数据库文件权限

为了安全考虑,设置前面生成的db文件权限为700

[root@server ~]# chmod 700 /vftp/vuser.db

[root@server ~]# ll /vftp/

总用量 16

-rwx------. 1 root root 12288 10月 12 15:03 vuser.db

-rw-r--r--. 1 root root    26 10月 12 15:01 vuser.txt

【2】配置PAM文件

为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块(可插拔认证模块),我们修改vsftpd服务对应的PAM配置文件:

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

将默认的所有配置全部注释(前面添加#),然后末尾添加两行:

auth        required    pam_userdb.so     db=/vftp/vuser

account     required    pam_userdb.so     db=/vftp/vuser

保存退出。

【3】创建虚拟账户对应的系统用户

(1)首先添加一个用户vuser,并指定家目录为/var/ftp/vuser

[root@server ~]# useradd -d /var/ftp/vuser vuser

(2)设置目录属性为vuser组vuser用户,并为其他所有用户赋予读和执行的权限

[root@server ~]# chown vuser.vuser /var/ftp/vuser

[root@server ~]# chmod 555 /var/ftp/vuser

[root@server ~]# ll /var/ftp/ |grep vuser

dr-xr-xr-x. 3 vuser vuser 78 10月 12 15:17 vuser

[root@server ~]# touch /var/ftp/vuser/test.sh

【4】修改vsftpd配置文件并重启vsftpd

[root@localhost ~]# cp /etc/vsftpd/vsftpd.conf.bac /etc/vsftpd/vsftpd.conf


[root@server ~]# vi /etc/vsftpd/vsftpd.conf

修改为以下内容(以下配置项若有则直接修改值,若没有则直接添加,若已注释则取消注释):

anonymous_enable=NO                           #禁止匿名用户登录

anon_upload_enable=NO                         #禁止匿名用户上传

anon_mkdir_write_enable=NO                    #禁止匿名创建目录

anon_other_write_enable=NO                    #禁止匿名其他写权限

local_enable=YES                              #允许本地用户登录

chroot_local_user=YES                         #切换目录限制,锁定根目录

allow_writeable_chroot=YES                    #开启主目录写权限

write_enable=NO                               #禁止写权限

guest_enable=YES                              #开启虚拟账号访问功能

guest_username=vuser                          #设置虚拟账号对应的系统账号

listen=YES                                    #设置FTP服务ipv4

listen_ipv6=NO                                #关闭FTP服务ipv6

pam_service_name=vsftpd                       #登录认证方式

重启服务:

[root@server ~]# systemctl restart vsftpd

【5】测试验证

在虚拟机2上进行测试,发现能够通过user2进行登录,并且能够查看到里面的文件,不能切换出共享目录,没有写权限:

[root@client ~]# yum install -y ftp

[root@client ~]# ftp 192.168.100.3

Connected to 192.168.100.3 (192.168.100.3).

220 (vsFTPd 3.0.2)

Name (192.168.100.3:root): user2

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,100,3,134,171).

150 Here comes the directory listing.

-rw-r--r--    1 0        0               0 Oct 12 11:06 test.sh

226 Directory send OK.

ftp> cd /etc

550 Failed to change directory.

ftp> mkdir testuser1

550 Permission denied.

ftp> quit

221 Goodbye.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky wide

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值