您的位置:首页 > 运维架构 > Linux

在Red Hat Linux5下构建vsftpd文件传输服务器

2010-09-09 16:30 387 查看
一.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

auth required pam_userdb.so db=/etc/vsftpd/login

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

http://kk5234.blog.51cto.com/1006247/386647
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 服务器 Red