为了解决公司员工文件存储和下载的需求。要求部署内部FTP服务器,员工可以通过自己的账号的权限对FTP进行操作。

1)公司公共文件可以通过匿名下载

2)公司财务部、商务部、行政部、技术部分别拥有自己的部门文件夹,彼此之间相互隔离

3)部门之间只有主管才能拥有上传权限,普通员工只能下载

4)禁止用户查看家目录以外的数据

5)确保ftp账号安全


一、案例分析

1)FTP需要开启匿名下载 默认FTP支持匿名下载

2)分析针对不同部分实现目录隔离 有两种方法 1.同部门共用本地账号 2.虚拟账号

3)部门内部员工权限不同 实现方法 虚拟账号

4)禁止用户切出 chroot

5)防止本地账号泄露 虚拟账号

整合细节分析,基本思路清晰:部署一个基于虚拟账号登陆的FTP服务器。

二、部署流程

a、关闭Firewall、selinux

b、安装vsftp服务

c、部署基于虚拟账号的FTP

d、测试

2.1)关闭主动安全

a、禁止防火墙开机启动
[root@baism ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

关闭当前防火墙
[root@baism ~]# systemctl stop firewalld.service


验证关闭成功
[root@baism ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon          
  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  Active: inactive (dead)
    Docs: man:firewalld(1)

3月 01 10:49:46 baism.ayitula.com systemd[1]: Starting firewalld - dynamic firewall daemon...
3月 01 10:49:47 baism.ayitula.com systemd[1]: Started firewalld - dynamic firewall daemon.
3月 01 10:53:52 baism.ayitula.com systemd[1]: Stopping firewalld - dynamic firewall daemon...
3月 01 10:53:53 baism.ayitula.com systemd[1]: Stopped firewalld - dynamic firewall daemon.

b、关闭selinux,重启生效
selinux从开启状态的enforcing、permissive切换到关闭状态disabled,或者相反切换都需要重启计算机才能。
[root@baism ~]# sed -r -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
[root@baism ~]# init 6


c、本步骤验证
[root@baism ~]# getenforce
Disabled

[root@baism ~]# systemctl is-active firewalld.service
unknown

看状态操作成功,我们继续下一步骤吧

2.2)安装vsftp服务 服务器baism.ayitula.com 192.168.11.16

安装vsftp服务
a、安装服务
[root@baism ~]# yum -y install vsftpd

b、设置开机启动
[root@baism ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to
/usr/lib/systemd/system/vsftpd.service.

c、启动服务
[root@baism ~]# systemctl start vsftpd

d、验证启动
[root@baism ~]# systemctl is-active vsftpd
active

三、根据需求部署FTP

a、创建虚拟用户映射的本地账号
[root@baism ~]# useradd -s /sbin/nologin -d /var/tmp/vuser_ftp ayitula


b、设置不同部门之间的根文件夹,给予700权限
[root@baism ~]# mkdir /var/tmp/vuser_ftp/shichang
[root@baism ~]# mkdir /var/tmp/vuser_ftp/caiwu
[root@baism ~]# mkdir /var/tmp/vuser_ftp/xingzheng
[root@baism ~]# mkdir /var/tmp/vuser_ftp/jishu
[root@baism ~]# chmod 700 /var/tmp/vuser_ftp/*

修改部门共享文件夹的所有者和属组为ayitula
[root@baism ~]# chown ayitula.ayitula /var/tmp/vuser_ftp -R


c、配置文件
[root@baism ~]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

allow_writeable_chroot=YES
#允许虚拟用户功能 YES的话则本地用户登录家目录会受影响
guest_enable=YES
guest_username=ayitula
#允许虚拟用户和本地用户权限一致
virtual_use_local_privs=NO
#如果虚拟用户和本地用户权限不同,可以通过以下的指令来设置指令,配置文件和登陆名同步即可
#文件名需和用户名一致 如果没有定义则默认只能登陆而没有权限
user_config_dir=/etc/vsftpd/vconf.d/



d、建立虚拟用户账号密码文件
[root@baism ~]# cat /etc/vsftpd/vuser
sc_01
123
xz_01
123
js_01
123
cw_01
123
sc_02
222
xz_02
222
js_02
222
cw_02
222

生成账号密码数据库文件
[root@baism ~]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
[root@baism ~]# chmod 600 /etc/vsftpd/vuser.db

e、pam虚拟用户登录验证
[root@baism ~]# cat /etc/pam.d/vsftpd
#注意要添加到开头
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
#%PAM-1.0
session   optional     pam_keyinit.so   force revoke
auth       required   pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required   pam_shells.so
auth       include   password-auth
account   include   password-auth
session   required     pam_loginuid.so
session   include   password-auth


f、定义哪些用户不能切出家目录
[root@baism ~]# cat /etc/vsftpd/chroot_list
sc_01
xz_01
js_01
cw_01
sc_02
xz_02
js_02
cw_02

g、建立部门员工子配置文件,用于定义权限
[root@baism ~]# mkdir /etc/vsftpd/vconf.d/
在改目录下以虚拟用户的名字命名文件,对应虚拟用户

我这里为了方便以后添加用户,自定义了模板文件
定义虚拟用户权限
部门主管有管理权限
======================================
主管模板文件
[root@baism ~]# cat /etc/vsftpd/vconf.d/01_temp
#指定家目录
local_root=/var/tmp/vuser_ftp/XXX
#允许新建文件或目录权限
anon_umask=077
#开放下载权限
anon_world_readable_only=NO
#开放上传权限
anon_upload_enable=YES
#开放创建目录的权限
anon_mkdir_write_enable

相关文章:

  • 2021-07-15
  • 2021-11-28
  • 2021-11-02
  • 2021-04-12
  • 2021-08-21
  • 2022-03-04
  • 2021-06-14
  • 2021-05-03
猜你喜欢
  • 2021-10-28
  • 2022-12-23
  • 2021-08-22
  • 2021-12-12
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案