一、文件服务器
文件服务器NFS------------ Unix-like系统上共享文件,不能跟windows交互
文件服务器-----跨平台,
      FTP----工作在应用层,跟平台无关;实现文件共享:下载和上传。在线编辑实现困难,实现跨越网络
      SAMBA----支持在线编辑的服务,跨平台,实现unc路径在Unix-like和windows之间方便快捷共享文件的机制,跨越网络困难
二、FTP---主动模式 被动模式 命令连接 数据连接
FTP:file transmission protocol文件传输协议
     两个链接:命令连接---时时在线,传输各种命令;监听在 tcp/21
               数据连接
数据连接的工作模式:
主动模式:服务器是主动的
C/S架构的服务,客户端服务器打开本地端口去访问服务器端;客户端使用>1023随机端口连接服务器tcp/21,服务器端打开20端口连接客户端的端口+1的端口;一次连接之后就断开的服务器端工作于20 端口 ;
客户端开启一个随机端口连接服务器的21端口请求建立连接,当连接成功,则是命令连接成功;当两端进行传送数据的时候,客户端通过命令连接用一个port command 告诉服务器,客户端可以使用另一个TCP 端口做数据通道,然后服务器使用20端口和刚才客户端所通知的TCP端口建立数据连接,这是链接方向是从服务器到客户端的,TCP分组中会有一个SYN flag,然后客户端会返回一个带ACK flag 的确认分组,并完成另一次的Three-Way-Handshake过程,这时候数据连接才能成功建立,开始数据传送。                                                                                                                                                       
          被动模式:服务器是被动的;命令连接是由客户端发起的,客户端使用端口连接客户端的21端口,服务器会告知客户端自己打开了某端口(>1023随机端口,33,21),客户端使用端口+1去连接服务器通知的端口(33*256+21)
    FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接,完成命令连接的建立。当两端需要传送数据的时候,客户端通过命令通道发送一个PASV command给服务器要求进入被动传输模式,然后服务器随机选择一个TCP端口,并用命令连接告诉客户端,客户端用另一个TCP端口连接刚才服务器指定的TCP端口来建立数据通道,此时分组中带有SYN flag。服务器确认后回送一个ACK分组,并完成所有握手过程、成功建立数据通道,开始数据传送。
服务器端为什么工作在被动模式下?
1、 >1023端口提供服务,对于防火墙>1023端口是关闭的                  
2、RELATED:关联的状态----------ftp装载模块
开发某个命令连接,与命令连接相关联的请求至于RELATED状态;服务器端处于RELATED状态的端口都打开,这样就实现了数据连接的正常进行
三、数据传输格式:
 http | smtp的数据传输格式:
            MIME--转换格式
            ASCII:文本格式
 ftp的数据传输格式:服务器自己选择适合的格式,不要强行变换格式
        binary--二进制格式
         ASCII
四、 识别用户
NFS-----文件共享,识别用户同过UID映射
ftp----识别用户
        anonymous---被服务器端映射成本地系统账号,匿名用户的权限取决于ftp账号的权限
五、用户账号类别:
         匿名用户-----映射的用户的家目录----(ftp)HOME DIR
         系统用户-----每个用户自己的家目录HOME DIR
         虚拟用户-----有账号和密码,但账号不能用于登陆系统,可以访问ftp服务;
         用户账号验证的位置:file,kerberos,ldap,mysql
认证anthentication-------是否是合法用户(用户名/密码),基于生物识别技术
授权anthorization--------有权限使用资源
审计audition----------记录授权用户是否在规定范围内
六、PAM-------认证框架; ftp可以通过PAM来实现用户认
PAM---SUN研发,是一个认证框架,决定认证机制;framework;支持n种机制
PAM配置文件:/etc/pam.d/*---用于定义认证手段,认证机制
    PAM 认证模块位置:/lib/security/
ftp:访问的资源是服务器的家目录
七、ftp服务器:
软件:WU-ftpd-----设计模式单一,安全性欠佳
           proftpd------基于web的管理页面
           pure ftp
           vsftpd-----very secure ftp;功能单一,安全权限严格,支持ssl、虚拟用户,支持主动被动模式
专用的服务端:
Windows:
 Filezilla
IIS 
Serv-U
         Linux:
             Filezilla
             Vsftpd---very secure
             Wu-ftpd
             Proftpd
             Pureftp
专用的客户端:
               flashf xp
               cuteftp
               gftp----基于图形界面
               ftp
               lftp
软件包:vsftpd            
进程:vsftpd (.usr/sbin/vsftpd)
脚本:/etc/rc.d/init.d/vsftpd
端口: 21/tcp (ftp)  20/tcp (ftp-data)
配置文件:/etc/vsftpd/vsftpd.conf  600  root  root
          /etc/vsftpd/ftpusers   600  root  root
          /etc/pam.d/vsftpd   644  root  root
相关的模块:rcp_wrappers ip_conntrack_ftp  ip_nat_ftp


八、配置ftp服务:
1、 安装软件包:#yum install –y vsftpd
2、 查看安装软件包生成配置文件:#rpm –ql vsftpd
3、 启动服务:#service vsftpd start
4、登录的方式:ftp  ip 地址
               ftp  用户名:密码@ip地址
匿名用户的访问路径映射到ftp的家目录/var/ftp下:
#id ftp 
#finger ftp
注意:/var/ftp目录下的文件或目录不能随意改权限,改变后不能访问服务
九、介绍配置文件的格式:
#vim /etc/vsftpd/vsftpd.conf
注意:“=“前后不能有空格;指令前不能有空格
anonymous_enable-----是否允许匿名用户
local_enable ------是否允许本地用户登录  id>=500
write_enable----定义本地用户是否可以上传文件
local_umask------定义本地用户上传文件的反向掩码
anon_upload_enable---定义匿名用户是否上传; selinux影响匿名用户上传
anon_mkdir_write_enable----匿名用户是否创建目录的权限
anon_other_write_enable-----定义匿名用户是否可以删除和重名文件
anon_world_readable_only------定义匿名用户只能下载全局可读的权限,必须属于ftp用户的
dirmessage_enable-----显示欢迎信息 
xferlog_enable----传输日志是否打开
xferlog_file-----传输日志文件的位置
connect_from_port_20-----数据连接
chown_uploads----改为属主
chown——username
idle—_session_timeout ----空闲会话的超时时间
data_connetion_timeout
nopriv_user----非特权用户
ascii_upload_enable----使用ASCII下载
ftpd_banner----欢迎信息
chroot_list_enable----锁定用户登录的目录作为家目录
chroot_list_file=------------文件/et/vsftpd/chroot_list---锁定部分用户
chroot_local_user=YES/NO-----是否锁定所有本地用户
ls_recurse_enable---递归显示
listen----定义独立守护进程
pam_service _name----用于ftp介于pam 实现用户认证
userlist_enable---启动用户文件列表
userlist_deny=YES(黑名单)|NO(白名单)--------用户文件中的用户是否允许
十、tcpdump----抓包
tcpdump -X -i eth0 -nn -p host 172.16.100.1 and tcp port 21
用法:tcpdump [option] [expression捕获的过滤器]
选项:-i------指定接口网卡
 -n---以数字显示ip地址
 -nn---端口不反解
 -X----以ascii 十六进制 输出
 -v---- 详细信息   -vv  -vvvv
 -p-----设置网卡,工作在非混渣模式
expression:一个或多个关键字 
    类型  hostnetportportrange
    dir   src dstnet src or dst port ftp-data
    proto  tcp udp ether iparp rarp
十一、结合ssl结合加密功能:ftp是明文传输的
编辑/etc/vsftpd/vsftpd.conf添加以下内容:
ssl_enable=YES       ---是否启用ssl
ssl_tlsv1=YES    ---tls协议版本1是否启用
ssl_sslv2=YES       -----
ssl_sslv3=YES
allow_anon_ssl=NO   ----允许匿名用户使用ssl
force_local_data_ssl=YES  ----
force_local_logins_ss=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt---定义公钥文件
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key---定义私钥文件