部署文件服务器
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://blog.zyblog.xyz/archives/linuxming-ling-xue-xi-shi
版权声明:本文为博主原创文章,转载请注明原文链接作者信息