一.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,如需转载请自行联系原作者