250 likes | 416 Views
ProFTPD. 西安交通大学 李思 2004 年 8 月 23 日. 主要内容. FTP 基本概念 双连接 主动模式与被动模式 ProFTPD 的安装 ProFTPD 的配置 ProFTPD 的辅助管理工具 日志文件. 1. FTP 基本概念. FTP 协议与双连接. FTP = File Transfer Protocol ,被广泛应用于 Internet 上的文件传输 FTP 采用 C/S 结构 Client 和 Server 之间必须建立两个 TCP 连接 一个命令连接 一个数据连接 命令连接总是由客户端发起
E N D
ProFTPD 西安交通大学 李思 2004年8月23日
主要内容 • FTP基本概念 • 双连接 • 主动模式与被动模式 • ProFTPD的安装 • ProFTPD的配置 • ProFTPD的辅助管理工具 • 日志文件
FTP协议与双连接 • FTP = File Transfer Protocol,被广泛应用于Internet上的文件传输 • FTP采用C/S结构 • Client和Server之间必须建立两个TCP连接 • 一个命令连接 • 一个数据连接 • 命令连接总是由客户端发起 • 根据数据连接发起方式的不同,FTP的工作模式可分为 • 主动模式 • 被动模式
主动(Active)模式 • 客户机首先连接到服务器的21端口,建立命令连接,并完成FTP的登陆过程 • 由客户机侦听一个任意端口,并通过命令连接把该端口的号码告诉服务器 • 服务器使用20端口去连接客户机的数据端口,建立数据连接 • 文件的传输、LIST等命令结果的返回都必须通过数据连接进行
被动(Passive)模式 • 客户机首先连接到服务器的21端口,建立命令连接,并完成FTP的登陆过程 • 由服务器侦听一个任意端口,并通过命令连接把该端口的号码告诉客户机 • 客户机使用任意端口去连接服务器的数据端口,建立数据连接 • 文件的传输、LIST等命令结果的返回都必须通过数据连接进行
ProFTPD概述 • ProFTPD=Professional FTP Daemon • 目前Linux平台上最常用FTP服务器软件之一 • 功能强于VSFTPD • 安全性优于WuFTPD • 支持FTP虚拟主机 • 支持使用DBMS来验证用户名和密码 • 配置文件与Apache类似 • 目前最新稳定版本为1.2.9 • 警惕:1.2.9rc2及其之前的版本(20031015前版本)存在严重安全漏洞
Proftpd的安装 • RPM安装 • 安装:rpm –ivh proftpd-xxxxx.rpm • 卸载:rpm –e proftpd-xxxxx • 源代码编译安装 • 解压:# tar zxvf proftpd-1.2.9.tar.gz • 配置:# ./configure • 编译:# make • 安装:# make install • 安装控制脚本: # cp proftpd-1.2.9/contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd # chmod +x /etc/init.d/proftpd # chkconfig --level 345 proftpd on
proftpd的启动与停止 • 临时启动/停止proftpd的两种方法 • #service proftpd start/stop/restart • #/etc/init.d/proftpd start/stop/restart • 每次开机自动启动proftpd的两种方法 • #ntsysv,选中proftpd • #setup,系统服务,选中proftpd
配置上下文(1) • Proftpd的主配置文件为/usr/local/etc/proftpd.conf • 配置文件的结构是使用配置上下文来描述的 • 配置上下文是指配置指令的作用范围,它一般用一对<context>…</context>表示 • Proftpd.conf中可以使用六个配置上下文 • 主服务器:对主服务器有效,不需要<> • <Anonymous>:对匿名访问有效 • <Directory>:对指定的目录有效 • <Global>:对主服务器和虚拟主机都有效 • <Limit>:对所限定的命令有效 • <VirtualHost>:对虚拟主机有效
配置上下文(2) < > < > </ > < > <配置上下文> </ > </ > < > </ >
常用配置指令(1) • ServerName:指定服务器的名字 • ServerType:指定服务器独立运行还是依靠xinetd运行 • Port:服务器的端口号 • Umask:新建文件的权限掩码 • User/Group:服务器运行的身份,建议用nobody • MaxInstances:最大进程数(并发数量) • MaxClients:最多允许在线用户数量 • MaxClientsPerHost:每个IP的最大连接数 • MaxHostsPerUser:每个IP最大连接数 • MaxClientsPerUser: 每个帐号最大同时登陆数 • ServerIdent:连接时显示的服务器信息
常用配置指令(2) • DisplayLogin:指定欢迎词文件 • DisplayFirstChdir: 第一次进入该目录显示文件 • DefaultRoot:默认目录(Anonymous例外) • AllowOverwrite:是否允许覆盖 • UserAlias:给用户建立别名 • UseReverseDNS:是否使用反向DNS解析 • RequireValidShell:是否需要有合法的shell • AllowStoreRestart:是否允许上载时断点续传 • AllowStoreRestart:是否允许下载时断点续传(默认允许) • TransferRate RETR:限制最大下载速度(单位KBps) • TransferRate STOR:限制最大上载速度(单位KBps)
Limit上下文(1) • 使用Limit上下文可以控制用户执行以下各类命令: • CWD:Change Working Directory 改变目录 • MKD:MaKe Directory 建立目录的权限 • RNFR: ReName FRom 更改目录名的权限 • DELE:DELEte 删除文件的权限 • RMD:ReMove Directory 删除目录的权限 • RETR:RETRieve 从服务端下载到客户端的权 • STOR:STORe 从客户端上传到服务端的权限 • READ:读取文件内容的权限,包括RETR,STAT等 • WRITE:写文件或者目录的权限,包括MKD和RMD • DIRS:是否允许列目录,包括LIST,NLST • LOGIN:是否允许登陆的权限 • ALL:所有权限
Limit上下文(2) • Limit上下文中一般使用下列指令: • AllowUser 允许某些用户使用 • DenyUser 禁止某些用户使用 • AllowGroup 允许某个组使用 • DenyGroup 允许某个组使用 • AllowAll 允许所有人使用 • DenyAll 禁止所有人使用 • 也可以使用Apache配置中Deny和Allow的设置方法 • 例如: • 禁止任何人删除文件:<Limit DELE> DenyAll </Limit>
匿名FTP的配置 #将匿名FTP(不需要特殊口令的ftp)的根目录设为用户ftp的主目录 <Anonymous ~ftp> <Limit LOGIN> AllowAll </Limit> MaxClients 5 "Sorry, max %m users -- try again later" User ftp Group ftp UserAlias anonymous ftp AnonRequirePassword on #一般目录不允许写 <Limit WRITE> DenyAll </Limit> #uploads及其子目录不允许读 <Directory uploads/*> <Limit READ> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> </Anonymous>
虚拟主机 • FTP依靠端口号的不同来区分虚拟主机 <VirtualHost 202.117.21.2> ServerName "Virtual.com's FTP Server" MaxClients 10 MaxLoginAttempts 1 Bind 202.117.21.2 Port 8021 <Limit LOGIN> DenyAll </Limit> <Anonymous ~ftp1> User ftp1 Group ftp1 <Limit LOGIN> AllowAll </Limit> </Anonymous> </VirtualHost>
欢迎文件中可使用的参数 • %T 目前的时间 • %F 所在硬盘剩下的容量 • %C 目前所在的目录 • %R Client 端的主机名称 • %L Server 端的主机名称 • %U 使用者帐户名称 • %M 最大允许连接人数 • %N 目前的服务器连接人数 • %E FTP服务器管理员的 email • %i 本次上传的文件数量 • %o 本次下载的文件数量 • %t 本次上传+下载的文件数量
管理工具ftpshut • ftpshut用于停止ftp服务,但是并不杀死proftpd进程 • 用法:ftpshut [ -l min ] [ -d min ] time [ warning-message ... ] • -l min: 在ftp关闭服务之前的min分钟内,不再接受新的ftp连接 • -d min: 在ftp关闭服务之前的min分钟内,停止所有已经建立的连接 • time: 在多少时间后,服务器将关闭ftp服务,格式有两种 • +number经过number分钟后关闭 • MMHH在今天MM:HH服务器将关闭 • ftpshut –R可以重新启动FTP服务
其它辅助管理工具 • ftpwho • 显示当前用户的相关信息 • ftptop • 按照一定次序显示当前ftp服务器的连接信息 • ftpcount • 显示当前每个FTP配置的统计信息
Proftpd的日志文件 • 默认的日志文件为/var/log/xferlog • 默认的日志记录格式为:%h %l %u %t \"%r\" %s %b • %h: 客户端IP或域名 • %l: 远程用户名 • %u: 本地认证通过的用户id • %t: 当前时间 • %r: 从客户端接收到的命令 • %s: FTP相应状态码 • %b: 返回的字节数
遇到问题怎么办? • 防火墙级别是否太高? • 用户/组是否存在? • 文件/目录的权限是否正确? • 检查系统日志/var/log/messages • 检查ftp日志/var/log/xferlog
练习题 • 安装Proftpd • 配置一个用于学生交作业的FTP,要求设teacher、student两个帐号。Teacher帐号登陆后可以读、写、增、删,student登陆后能上传,能看到文件列表,但是不能下载文件。 • 在上一题的基础上,配置在2121端口配置一个虚拟主机,实现一个匿名的FTP。要求有incoming和pub目录。只有incoming目录允许上传。