FTP文件传输服务器构建

  • A+
所属分类:linux基础

ftp文件传输

用途:将我们电脑上的数据与服务器数据进行交换。

要求: 熟悉ftp服务的工作原理

学会构建匿名ftp服务器

学会构建用户验证的ftp服务器

结构:

ftp服务概述
vsftpd服务基础
vsftpd的配置文件
匿名访问的ftp服务
ftp文件传输服务 基于系统用户的ftp服务 用户验证的ftp服务
vsftpd服务的其他常用配置
建立虚拟用户的帐号数据库
基于虚拟用户的ftp服务
为vsftpd添加虚拟用户支持

ftp服务概述

ftp连接及传输模式

控制连接:tcp 21,用于发送ftp命令信息 ……也叫服务端连接

数据连接:tcp 20,用于上传,下载数据 ……也叫客户端连接

数据连接的建立类型:

主动模式:服务端主动向客户端发起连接

被动模式:服务端指定某个端口被动等待客户端连接

注:主动模式下客户端未关闭firewall则接收不到服务器20端口的发送请求。此模式应用于未运行firewall的客户端。另客户端关闭firewall如果网络环境的firewall未关闭也将屏蔽20端口的连接请求。

ftp传输模式:

文本模式:ascii模式,以文本序列传输数据

二进制模式:binaty模式,以二进制序列传输数据

ftp用户的类型:

匿名用户:anonymous或ftp

本地用户:账号密码保存在passwd和shadow文件中

虚拟用户:使用独立的帐号和密码数据文件

常见的ftp服务器程序

iis (windows) serv-u (third windows ) wu-ftpd proftpd

vsftpd (very secure ftp daemon)

常见的ftp 客户端程序

ftp命令行

cuteftp flashfxp leapftp filezilla

gftp kuftp

vsftpd服务基础

vsftpd软件包

官方站点:http://vsftpd.beasts.org/

主程序:/usr/sbin/vsftpd

服务名:vsftpd

用户控制列表文件

/etc/vsftpd/ftpusers ……黑名单

/etc/vsftpd/user_list ……可黑可白,取决于主配置文件

主配置文件:

/etc/vsftpd/vsftpd.conf

主配置文件vsftpd.conf

常用的全局配置项:

listen=yes:是否以独立运行的方式监听服务

listen_address=192.168.1.20:设置监听的ip地址

注:多网卡服务器ftp针对不同ip地址

listen_pror=21:设置监听ftp服务的端口号

注:面向外网,不要改;面向内网,且不对外,最好还是改换。

write_enable=yes:是否启用写入权限(上传)

download_enable=yes:是否允许下载文件

userlist_enable=yes:是否启用user_list列表文件

userlist_deny=yes:是否禁用user_list列表中的用户

注:userlist_deny=no,不禁用,但仅允许这些

max_clients=0:限制并发客户端连接数

注:0为不限制,个体服务器能承载的并发连接数有上限,无论面向内外网,最好设置承载个数,以防ddos攻击。

max_pre_ip=0:限制同一ip地址的并发连接数

常用匿名ftp配置项

anonymous_enable=yes:启用匿名访问

anon_umask=022:匿名用户所上传文件的权限掩码

注:各项用7去减,得755,即上传文件权限

anon_root=/var/ftp:匿名用户的根目录

anon_upload_enable=yes:允许上传文件

anon_mkdir_write_enable=yes:允许创建目录

注:只能创建,不能删除和重命名

anon_other_write_enable=yes:开放其它写入权限

注:可以删除和重命名

anon_max_rate=0:限制最大传输速率(字节/秒)

注:计算机中的位:二进制中,每个0或1就是一个位(bit),它是数据存储的最小单位,其中每8个位等于一个字节(byte)

故1byte=8bit即1mb=1024kb=1024*1024b=1024*1024*8b

常用的本地用户ftp配置项

local_enable=yes:是否启用本地系统用户

local_umask=022:本地用户所上传文件的权限掩码

local_root=/var/ftp:设置本地用户的ftp根目录

chroot_local_user=yes:是否将用户禁锢在主目录

注:启用local一定要禁锢,否则如果用户权限够大,系统将面临风险。

local_max_rate=0:限制最大传输速率(字节/秒)

构建匿名用户访问的ftp服务

思路:先准备匿名ftp访问的目录,并开放权限,然后编辑匿名用户配置,再启动服务

⑴挂载光盘,安装服务端软件

mount /dev/cdrom /media

rpm -ivh /media/packages/vsftpd-\t

⑵准备匿名ftp访问目录,并开放权限

chown ftp /var/ftp/pub

ls -ld /var/ftp/pub

⑶编辑ftp配置文件

anonymous_enable=yes

local_enable=no

write_enable=yes

anon_umask=022

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes开放其他写入权

dirmessage_enable=yes

⑷启动服务

service vsftpd start

⑸命令行进行验证

rpm -ivh /media/packages/ftp-\t

ftp:// 192.168.1.86

构建本地访问

思路:启动vsftpd.conf配置文件中本地用户,并进行相关配置,然后重新加载配置;编辑user_list,添加用户,再重新加载。

⑴安装ftp服务端软件,编辑配置文件

local_enable=yes

write_enable=yes

local_umask=077

chroot_local_user=yes

⑵重新加载服务配置文件

service vsftpd reload

⑶启用user_list列表并向user_list添加用户

vi /etc/vsftpd/vsftpd.conf

userlist_enable=yes

userlist_deny=no

cat an >>/etc/vsftpd/user_list

⑷重新加载服务配置文件

service vsftpd reload

⑸windows客户端访问

ftp://192.168.1.86

构建基于虚拟用户的ftp服务

创建帐号数据

1 建立虚拟ftp用户的帐号数据 库文件

2 创建ftp根目录及虚拟用户映射的系统用户

3 建立支持虚拟用户的pam认证文件

添加虚拟用户支持

1在vsftpd.conf文件中添加支持配置

2为个别虚拟用户建立独立的配置文件

启动服务并测试

1重新加载vsftpd配置

2使用虚拟ftp帐户访问测试

⑴建立虚拟ftp用户的帐号数据库文件

vi /etc/vsftpd/vuser.list

mike

123

tom

456

jim

789

cd /etc/vsftpd/

db_load -t -t hash -f vuser.list vuser.db

注:db_load -t 允许应用程序能够将文本文件转译入数据库,由于我们之后是将虚拟用户的信息以文本方式存储在文件中,为了让vsftpd这个应用程序能够通过文本来载入用户数据,必须使用此选项。

如果指定了t就必须追加-t,用来指定转译时的加密算法,有btree,hash,queue,recon

-f指向包含用户名和密码的文本文件,奇名偶密,后跟要转换成的文件名。

file vuser.db

注:file命令用来查看文件的格式

chmod 600 /etc/vsftpd/vuser.*

注:可能是600,否则认证会出错

ls /etc/vsftpd/vuser.*

⑵创建帐号数据

创建ftp根目录及虚拟用户映射的系统用户

useradd -d /var/ftproot -s /sbin/nologin virtual

chmod 755 /var/ftproot

⑶建立支持虚拟用户的pam认证文件

vi /etc/pam.d/vsftpd.vu

#%pam-1.0

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

account required pam_userdb.so db=/etc/vsftpd/vuser

注:pam为linux的认证模块

⑷在vsftpd.conf文件中添加支持配置

vi /etc/vsftpd/vsftpd.conf

local_enable=yes

write_enable=yes

anon_umask=022

guest_enable=yes 启用用户映射功能

guest_username=virtual 指定映射的系统用户名称

pam_service_name=vsftpd.vu 指定新的pam认证文件

⑸为不同的虚拟用户建立独立的配置文件

在vsftpd.conf文件中添加用户配置目录支持

user_config_dir=/etc/vsftpd/vuser_dir

为用户mike,john建立独立的配置目录及文件

注:配置文件名与用户名相同

mkdir /etc/vsftpd/vuser_dir/

cd /etc/vsftpd/vuser_dir/

vi john

anon_upload_enable=yes

anon_mkdir_enable=yes

touch mike

注:配置文件名与用户名相同

⑹重新加载vsftpd配置

service vsftpd reload

⑺使用虚拟ftp帐户访问测试

mike用户可以登录浏览下载但无法上传

john用户可以登录浏览下载也可以上传

匿名用户或其他系统用户将不能登录

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: