1 VSFTP 概述
FTP file transfer protocol,这是档案传输的通讯协议,也是一般最常用来传送档案的方式。
FTP 分为两类,一种为PORT FTP,也就是一般的FTP 另一类是PASVFTP,分述如下:
PORT FTP
这是一般形式的FTP,首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。第二,由FTP server 端会建立数据传输频道,默认值为20,也就是跟port 20 建立联机,并透过port 20 作数据的传输。
PASV FTP
PORT FTP 类似,首先会建立控制频道,默认值是port 21,也就是跟port 21 建立联机,并透过此联机下达指令。第二,会由client 端做出数据传输的请求,包括数据传输port 的数字。
这两者的差异为何?PORT FTP 当中的数据传输port 是由FTP server 指定,而PASV FTP 的数据传输port 是由FTP client 决定。通常我们使用PASV FTP,是在有防火墙的环境之下,透过client server 的沟通,决定数据传输的port
主动FTP
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
被动FTP
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
2vsftpdr 的安装
vsftpd-2.0.5-10.el5
3、安装支持包和配置文件:
a.安装必要的支持文件
db4-utils-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
b、配置
      第一步:建立本地虚拟用户
      useradd -d /opt/ftp-server -s /sbin/nologin virtual
      新建virtual用户,指定主目录为/opt/ftp_server(该目录实际存在)
第二步:建立虚拟用户数据文件
                 
      用户手工建立文本文件logins.txt  
      vi /home/logins.txt
      download
      pwd@123
      upload
     pwd@456
      admin
     pwd@000
      :奇数行为用户名,偶数行为密码.
第三步:建立数据库文件并设置文件属性
     db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db
     chmod 600 /etc/vsftpd_login.db
      
第四步:建立基于vsftpd_loginPAM授权文件[此处也可用mysql建立用户信息]
    vi /etc/pam.d/ftp内容如下
      auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
      account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
第五步: 建立vsftpd.conf文件
      anonymous_enable=NO
      local_enable=YES
      write_enable=NO
      anon_upload_enable=NO
      anon_mkdir_write_enable=NO
      chroot_local_user=YES
      listen=YES
pam_service_name=ftp
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=virtual
user_config_dir=/etc/vsftpd_user_conf
virtual_use_local_privs=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
     
第六步: 建立针对虚拟用户库中不同用户的权限文件
      (virtual主目录下有三个文件夹:download,upload,admin)
      download文件内容(只能下载权限)
      =====================
      local_root=/opt/ftp_server/
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
      upload文件内容(可上传权限)
    
      local_root=/opt/ftp_server/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
      admin文件内容(管理权限)
     
     local_root=/opt/ftp_server/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
第七步:防火墙配置开放
      -A INPUT -s 192.168.10.0/255.255.255.0 -d 192.168.10.100 -i eth1 -p tcp  --dport 20 -j ACCEPT
-A INPUT -s 192.168.10.0/255.255.255.0 -d 192.168.10.100 -i eth1 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.10.0/255.255.255.0 -d 192.168.10.100 -i eth1 -p tcp --dport 30000:30999 -j ACCEPT
第八步: 启动vsftpdiptables
      service vsftpd restart
service iptables restart
第九步:测试