在RHEL5下构建vsftpd文件传输服务器

本文涉及的产品
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
运维安全中心(堡垒机),免费版 6个月
简介:
一.FTP连接及传输模式:
FTP服务器默认使用使用TCP协议的20、21端口与客户端进行通信。21端口用于建立控制连接,并传输FTP控制命令;20端口用于建立数据连接,并传输文件数据。
主动模式:服务器主动发起数据连接。使用20端口。
被动模式:服务器被动等待数据连接。使用1024以上端口。
二.vsftp用户类型:
1.匿名用户      2.本地用户     3.虚拟用户
三.vsftp下的一些重要文件:
1.用户控制列表文件ftpusers和user_list
ftpusers:该文件中含的用户账户将被禁止登录vsftpd服务器,不管该用户是否在user_list文件中出现。通常将root、bin、daemon等特殊用户列在该文件中,禁止用于登录FTP服务。
user_list:该文件中包含的用户账户可能被禁止登录,也可能被允许登录,具体在主配置文件vsftpd.conf中决定。当存在“userlist_enable=YES”的配置项时,user_list文件生效,如果配置“userlist_deny=YES”,则仅禁止列表中的用户账户登录,如果配置“userlist_deny=NO”,则允许列表中的用户账户登录。
2.主配置文件vsftpd.conf
3.用户名/密码列表文件:用于建立虚拟账户
4.用户名/密码DB数据库文件
5.PAM认证文件:用于虚拟用户认证控制
6.不同用户的虚拟用户的独立配置文件
四.vsftpd服务启动和终止:
/etc/init.d/vsftpd     start/stop      或 service vsftpd start/stop
五.vsftpd.conf的常用配置项:
全局配置项

listen=YES :是否以独立运行的方式监听服务
listen_port :设置监听FTP服务的端口号
write_enable=YES :启用任何形式的写入权限(如上传、删除文件等)都需要开启此项
download_enable=YES/NO :是否允许下载文件(建立仅限于浏览、上传的FTP服务器时可将其设为NO)
dirmessage_enable=YES/NO:用户切换进入目录时显示.message文件(如果存在)的内容
xferlog_enable=YES :启用xferlog日志,默认记录到“/var/log/xferlog”文件
xferlog_std_format=YES :启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式
connect_from_port_20=YES :允许服务器主动模式(从20端口建立数据连接)
pasv_enable=YES :允许被动模式连接
pasv_max_port=端口号:设置用于被动模式的服务器最大端口号(1024以上)
pasv_min_port=端口号:设置用于被动模式的服务器最小端口号(1024以上)
userlist_enable=YES /NO:是否启用user_list用户列表文件
userlist_deny=YES/NO:是否禁止user_list列表文件中的用户账号
max_clients=0 :最多允许多少个客户端同时连接(0为无限制)
max_per_ip=0 :对来自相同IP地址的客户端,最多允许多少个并发连接(0为无限制)
tcp_wrappers=YES/NO:是否启用TCP_Wrappers主机访问控制
匿名用户(也适用于虚拟用户)配置
anonymous_enable=YES /NO:是否允许匿名访问
anon_umask=022 :设置匿名用户所上传文件的默认权限掩码值
anon_root=/var/ftp:设置匿名用户的FTP根目录(缺省为/var/ftp)
anon_upload_enable=YES/NO :是否允许匿名用户上传文件
anon_world_readable_only=YES/NO:匿名用户是否可以浏览
anon_mkdir_write_enbale=YES/NO:是否允许匿名用户有创建目录的写入权限
anon_other_write_enable=YES/NO :是否允许匿名用户有其他写入权限。如对文件改名、覆盖、删除文件
anon_max_rate=0:限制匿名用户最的最大传输速率(0为无限制,单位为字节)
guest_enable=YES:启用用户映射功能(做虚拟用户访问时使用)
guest_username=虚拟帐号对应的系统帐号 :将映射用户指定为该系统帐号
pam_service_name=认证文件名:设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名)
user_config_dir=虚拟用户配置文件目录 :设置虚拟用户的配置文件的目录

  本地用户配置项:
local_enable=YES/NO:是否允许本地系统用户访问
local_umask=022:设置本地用户所上传文件的默认权限掩码值
local_root=/var/ftp:设置本地用户的FTP根目录(缺省为用户的宿主目录)
chroot_local_user=YES/NO:是否将FTP本地用户禁锢在宿主目录中
local_max_rate=0:限制本地用户的最大传输速率(0为无限制,单位为字节)

六.实验案例:
环境:根据公司的开发部门和市场部门的业务发展要求,需要面向Internet搭建一台FTP文件服务器,以提供公测版软件、市场资料的下载与上传、文件管理等应用,同时要对用户访问和下载/上传流量进行控制。考虑到服务器的运行效率及稳定、安全性,选择在RHEL5操作系统中构建Vsftpd服务器实现。
需求描述:
采用FTP虚拟用户的方式,添加三个用户devadm、sales、saleadm。
用户访问及文件权限控制:
1.开放匿名访问,任何用户均可以下载服务器“/var/ftp/soft/“目录中的软件资料。
2.用户devadm可以对服务器“/var/ftp/soft"目录进行管理(上传文件、创建目录、删除文件等)。
3.用户sales可以下载服务器“/var/market/”目录中的市场活动销售方案等资料。
4.用户saleadm可以对服务器“/var/market/”目录进行管理(上传文件、创建目录、删除文件等)。
5.所有经FTP账户上传的文件,均去除非属主位的写权限(即将权限掩码设为022)。
6.对服务器中没有明确授权的其他目录,均禁止以上用户访问。
下载、上传流量及带宽控制:
最多允许150个并发用户连接,每IP并发连接数不超过5个。
匿名用户及sales用户的下载带宽限制为100KB/s。
devadm、saleadm用户的下载、上传带宽限制为500KB/s。
实验步骤:
1.建立虚拟用户的用户名/密码数据库
# vi /etc/vsftpd/login.txt
#db_load -T -t hash -f login.txt  login.db                  //将列表文件转换为数据库文件,如果db_load命令工具没有装,从RHEL5光盘中装db4-utils-4.3.29-9.fc6.i386.rpm软件包可获得该工具。
#chmod 600 /etc/vsftpd/login.*                                   //降低账户文件权限,提高安全性
2.建立FTP访问的根目录及虚拟用户对应的系统账号
# useradd -s /sbin/nologin  vivi
#cd /var/ftp
#mkdir soft
#cd /var
#mkdir market
#chmod  755 /var/market
#chmod  755 /var/ftp/soft
#chown vivi /var/market
#chown vivi /var/ftp/soft
3.建立PAM认证文件
# vi /etc/pam.d/renzheng
auth                      required                 pam_userdb.so                 db=/etc/vsftpd/login
account
4.修改vsftpd.conf配置文件,添加虚拟用户及匿名用户支持
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                              //允许匿名用户访问
anon_root=/var/ftp/soft                               //允许匿名用户访问的FTP目录为/var/ftp/soft
anon_max_rate=102400                             //匿名用户下载带宽限制为100KB/s
max_clients=150                                           //最多允许150个用户并发连接
max_per_ip=5                                               //每个IP并发连接数不超过5个
anon_umask=022                                      
local_enable=YES                                         //设置虚拟用户需要启用本地用户
guest_enable=YES                                        //启用用户映射功能
guest_username=vivi                                    //将映射用户指为vivi
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=renzheng                    //修改使用的PAM文件位置
userlist_enable=YES                                   
tcp_wrappers=YES
user_config_dir=/etc/vsftpd/conf
chroot_local_user=YES                           
5.为不同的虚拟用户建立独立的配置文件
5.1.主配置文件中一定要添加这一条:
user_config_dir=/etc/vsftpd/conf
5.2.为用户devadm、sales、saleadm建立独立的配置文件
# mkdir /etc/vsftpd/conf
#cd /etc/vsftpd/conf
#vi devadm
local_root=/var/ftp/soft
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=512000
#vi saleadm
local_root=/var/market
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=512000
# vi sales
local_root=/var/ftp/market
anon_world_readable_only=NO
anon_max_rate=102400
6.启动vsftpd服务
service vsftpd start
 









本文转自 kk5234 51CTO博客,原文链接:http://blog.51cto.com/kk5234/386647,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Java 关系型数据库 API
探索后端技术:构建高效、可靠的服务器端应用
在当今数字化时代,后端技术是任何成功应用程序的基石。它涉及服务器、数据库和应用程序之间的交互,处理数据存储、业务逻辑和系统性能等关键任务。本文将深入探讨后端开发的核心概念、常见技术栈及其实际应用,帮助读者更好地理解和掌握构建高效、可靠后端系统的技巧与策略。
|
2月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
82 0
|
2月前
|
监控 关系型数据库 Serverless
探索后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端开发的核心概念和关键技术,从服务器架构到数据库管理,再到安全防护,为读者提供全面的后端技术指南。无论是初学者还是经验丰富的开发者,都能从中汲取灵感,提升自己的技术水平。
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
154 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
28天前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
2月前
使用Netty实现文件传输的HTTP服务器和客户端
本文通过详细的代码示例,展示了如何使用Netty框架实现一个文件传输的HTTP服务器和客户端,包括服务端的文件处理和客户端的文件请求与接收。
44 1
使用Netty实现文件传输的HTTP服务器和客户端
|
2月前
|
JSON JavaScript 前端开发
使用 Node.js 和 Express 构建 RESTful API 服务器
【10月更文挑战第3天】使用 Node.js 和 Express 构建 RESTful API 服务器
|
2月前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express框架构建Web服务器
使用Node.js和Express框架构建Web服务器
|
3月前
|
存储 关系型数据库 API
深入理解后端技术:构建高效、可扩展的服务器端应用
本文将探讨后端开发的核心概念和技术,包括服务器端编程、数据库管理、API设计和安全性等方面。通过深入浅出的方式,让读者了解如何构建高效、可扩展的后端系统。我们将从基本的后端框架开始,逐步深入到高级主题,如微服务架构和容器化部署。无论您是初学者还是有经验的开发人员,都能在本文中找到有价值的信息和实用的建议。
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
19 0
下一篇
无影云桌面