Linux命令学习(十)
部署文件服务器
1. 文件服务器
-
1.1 一般用于文件传输协议(FTP),用于FTP客户端与服务端的文件共享、上传下载
-
1.2 结构:客户机/服务器(C/S架构)
-
1.3 端口:
- 20:用于数据传输
- 21:用于传输命令
-
1.4 特点:FTP服务器普遍部署在内网,一般使用下载功能较多,容易搭建,方便管理
-
1.5 结构图:
-
1.6 FTP协议工作模式
- 主动模式:FTP的服务器主动向客户机发出连接请求
- 被动模式:FTP服务器等待客户机发出连接请求(默认模式)
-
1.7 vsftpd服务程序
-
1.7.1 vsftpd:非常安全的FTP守护进程
-
1.7.2 vsftpd是一款运行在Linux系统上的FTP服务程序,具有完全开源、免费、高安全性、高可靠性、高传输速度、支持多种服务模式的FTP服务器端软件
-
1.7.3 工作模式:
- 匿名开放模式:任何人都可以无需密码验证而直接登录FTP服务器,方便简单但极不安全
- 本地用户模式:通过Linux系统本地的普通账户和密码进行认证登录,相对安全,若本地系统账户信息泄露或被破解,则FTP服务器就可顺利登录,从而控制整个服务器
- 虚拟用户模式:单独的建立用户数据库文件,虚拟出账户及密码,用于验证登录,实际账户信息不存在,仅供FTP服务器进行认证使用,有效地降低了破坏范围
-
1.7.4 访问方式
- 服务器端:vsftp
- 客户机端:
- 命令行:ftp 或 lftp 命令访问
- Windows:浏览器或目录界面
-
1.7.5 安装vsftpd
- 服务端格式:yum install -y vsftpd
- 客户端格式:yum install -y
-
1.7.6 vsftpd服务软件的配置文件:/etc/vsftpd/vsftpd.conf
-
① 部署匿名开放模式的服务器
-
准备工作
-
关闭 SELINUX
-
关闭防火墙:systemctl stop firewalld
(或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)
-
重启防火墙:firewall-cmd --reload
-
-
编辑配置 vsftpd.conf 文件,实现匿名模式服务器
-
编辑:vim /etc/vsftpd/vsftpd.conf
-
匿名模式涉及的参数:
- anonymous_enable=YES(允许匿名访问)
- write_enable=YES(设置可写权限)
- anon_umask=022(需添加,设置匿名账户上传文件的umask值)
- anon_upload_enable=YES(需去掉#,允许匿名账户上传文件)
- anon_mkdir_write_enable=YES(需去掉#,允许匿名账户创建目录)
- anon_other_write_enable=YES(需添加,允许匿名账户修改目录名或删除目录)
-
设置vsftpd默认工作目录的权限
- 默认目录:/var/ftp/pub
- 对该目录增加ftp账户对应的权限:chown -Rf ftp /var/ftp/pub
-
启动服务
- 启动:systemctl start vsftpd
- 设置开机启动:systemctl enable vsftpd
-
测试
-
Windows:在目录界面或浏览器界面的地址栏输入ftp://ip地址
-
Linux:
-
ftp软件:
-
命令格式为: ftp 对方IP地址
-
输入用户名anonymous,密码回车,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出
-
-
lftp软件:
- 命令格式为:lftp 对方IP地址
- cd pub后进行ls浏览和尝试mkdir创建目录,输入 “ get 文件名 ” 进行上传,输入exit退出
-
-
-
umask参数
- umask值是Unix系统的概念,决定目录及文件被创建时的初始权限
- 在vsftpd的服务器中的目录初始权限最高为777,文件由于不能设置为可执行,则最高权限为666
- umask值本质是一种补码
- 目录实际权限计算方式:777-umask,例如umask=022,目录初始权限为777-022即755
- 文件实际权限计算方式:666-umask,例如umask=022,文件初始权限为666-022即644
-
-
-
② 部署本地用户模式的ftp服务器
-
本地模式就是通过Linux的普通账户进行登录
-
准备工作:同匿名的准备工作
-
关闭 SELINUX:setenforce 0
-
关闭防火墙:systemctl stop firewalld
(或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)
-
重启防火墙:firewall-cmd --reload
-
-
配置vsftpd.conf文件实现本地模式
- 打开文件:vim /etc/vsftpd/vsftpd.conf
- 本地模式涉及的参数:
- anonymous_enable=NO(关闭匿名模式)
- local_enable=YES(开启本地模式)
- write_enable=YES(设置可写权限)
- local_umask=022(设置本地模式账户umask值)
- userlist_enable=YES(启用 “ 禁止用户名单 ”)
- userlist_deny=YES(需添加,启用用户作用名单)
- 注意:userlist_enable和userlist_deny都为YES时,/etc/vsftpd/user_list文件为 “黑名单”,即文件中的账户都不能登录
- 注意:userlist_enable=YES和userlist_deny=NO时,则/etc/vsftpd/user_list文件为 “白名单”,即只有该文件中的用户可以登录
-
启动服务:systemctl start vsftpd
-
设置开机启动:systemctl enable vsftpd
-
上传文件默认目录:/home/普通账户名/
-
测试
-
Windows:
在目录界面或浏览器界面的地址栏输入ftp://ip地址,输入普通账户名及密码进行登录操作
-
Linux:
-
ftp软件:
-
命令格式为: ftp 对方IP地址
-
输入用户名ZHIYUAN,密码回车登录,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出
-
-
lftp软件:
- 命令格式为:lftp 对方IP地址 -u 普通用户名
- 输入对应用户的密码,回车登录,cd pub后进行ls浏览和尝试mkdir创建目录,输入exit退出
-
-
-
限制本地用户只能在本地家目录中访问
- 一般用户登录后访问的默认目录为/home/账户名/,但通过切换目录可以访问提权到其上级目录,这是相当危险的行为,需要做如下限制
- 设置:
- chroot_local_user=YES(去掉#,开启限制用户工作的目录)
- allow_writeable_chroot=YES(需添加,设置为不可跳出主目录后允许登录,且主目录可写)
- 注意:设置完毕后必须重启vsftpd服务:systemctl restart vsftpd
- 测试:
- ftp 192.168.0.119
- 输入账户名及密码
- 尝试cd /etc cd ..
-
-
③ 部署虚拟用户模式的ftp服务器
-
准备工作
-
关闭SELINUX :setenforce 0
-
关闭防火墙:systemctl stop firewalld
(或加入防火墙白名单:firewall-cmd --permanent --zone=public --add-service=ftp)
-
若添加白名单请重启防火墙:firewall-cmd --reload
-
设置工作默认权限:chown -Rf ftp /var/ftp/pub
-
安装必要软件:
- 安装vsftpd :yum install -y vsftpd
- 安装yum扩展源:yum install -y epel-release
- 安装db4数据库软件:yum install -y db4*
-
-
创建FTP认证的数据库软件
-
作用:存储允许登录的账户名及密码
-
格式:奇数行为账户名,偶数行为密码
-
创建位置:/etc/vsftpd
-
ftpuser1
123456
ftpuser2
654321
-
过程
-
-
vim /etc/vsftpd/vuser.list
-
输入账户及密码,注意:奇数行为账户名,偶数行为密码
-
由于vuser.list是明文,不安全,且不符合vsftpd程序加载文件的格式,需要使用db_load命令进行hash加密,并转为数据库文件,最后删除原始明文
- 加密:db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
-
-T:将文本文件转译载入数据库
- -t hash:使用hash算法加密
- -f:指定包含用户名和密码的文本文件
- 设置权限:chmod 600 vuser.db
- 删除原始明文:rm -f vuser.list
-
-
创建虚拟账户映射的账户及家目录
- 作用:虚拟账户是没有家目录的,权限也未知,则需要虚拟账户登录后映射到本地实际账户的家目录中,其权限也自动归属于该本地账户
- 过程:
- useradd -d /var/ftpuser -s /sbin/nologin vfox
- 设置家目录权限:chmod -Rf 755 /var/ftpuser
-
创建PAM文件进行映射
- PAM:可拔插认证模块,是一种认证机制,系统管理员可以通过调整PAM就轻易修改对应的认证方式,从而不需要修改应用程序
- 过程:
- vim /etc/pam.d/vsftpd.vu
- 输入以下两行进行映射
- auth required pam_userdb.so db=/etc/vsftpd/vuser
- account required pam_userdb.so db=/etc/vsftpd/vuser
- (注意:vuser不需要加扩展名db)
-
配置 vsftpd.conf 文件涉及参数
- anonymous_enable=NO(关闭匿名模式)
- local_enable=YES(开启本地账户)
- guest_enable=YES(需添加,开启虚拟账户模式)
- guest_username=vfox(需添加指定映射的账户名)
- pam_service_name=vsftpd.vu(指定pam文件)
- allow_writeable_chroot=YES(需添加,设置为不可跳出主目录且允许登录可写)
-
重启服务:systemctl restart vsftpd
-
例:设置ftpuser1可以上传、创建、修改、删除,ftpuser2只能查看
-
原则:通过创建权限文件实现
-
过程:
-
mkdir -p /etc/vsftpd/vsdir
-
cd /etc/vsftpd/vsdir
-
vim ftpuser1
-
输入以下自定义功能参数:
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
- anon_other_write_enable=YES
-
在 vsftpd.conf 配置文件中设置账户访问权限配置文件的存储目录
-
vim /etc/vsftpd/vsftpd.conf
-
user_config_dir=/etc/vsftpd/vsdir
-
-
重启服务:systemctl restart vsftpd
-
-
-
-
原文作者:絷缘
作者邮箱:zhiyuanworkemail@163.com
原文地址:https://zhiyuandnc.github.io/RptKbpSRd/
版权声明:本文为博主原创文章,转载请注明原文链接作者信息