vsftpd,tftp安装配置


1、 对比
共同点:都包含ftp
不一样点:
1)vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。你能够经过ftp客户端上传下载软件。可设置访问用户名密码,或匿名anonymous登录。默认端口是TCP:21
2)TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为UDP:69。 路由器,交换机等网络设备升级硬件系统可用,PXE安装系统须要配置tftp服务。
3)FTP 是完整、面向会话、常规用途文件传输协议。而 TFTP 用做 bones bare - 特殊目的文件传输协议。
4)交互使用 FTP。 TFTP 容许仅单向传输的文件。
5)FTP 提供身份验证。而TFTP 不。
搭建ftp应用只能选择vsftp。
VSFTP是FTP的服务段,而TFTP是不加密的FTP,这2个不是一回事
VSFTP是一个基于GPL发布的类Unix系统上使用的 FTP服务器软件,它的全称是Very Secure FTP 今后名称能够看出来,编制者的初衷是代码的安全。
安全性是编写VSFTP的初衷,除了这与生俱来的安全特性之外,高速与高稳定性也是VSFTP的两个重要特色。
在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,若是Linux 主机使用2.4.*的 内核,在 千兆以太网上的下载速度可达86MB/S。
在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时链接,根据Red Hat的Ftp服务器(ftp.redhat.com)的数据,VSFTP服务器能够支持15000个并发用户
TFTP是一个传输文件的简单协议,它基于UDP协议而实现,可是咱们也不能肯定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。所以它不具有一般的FTP的许多功能,它只能从文件服务器上得到或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另外一种是octet,这是8位源数据类型;最后一种mail已经再也不支持,它将返回的数据直接返回给用户而不是保存为文件。



2、CentOS 6.4 下安装vsftpd 

概述:

vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器固然首选这个。linux

本文介绍了在CentOS 6.4下安装vsftpd、配置虚拟用户登陆FTP的过程。算法

正文:

一:安装vsftpd

查看是否已经安装vsftpdshell

rpm -qa | grep vsftpd

若是没有,就安装,并设置开机启动安全

yum -y install vsftpd
chkconfig vsftpd on

二:基于虚拟用户的配置

所谓虚拟用户就是没有使用真实的账户,只是经过映射到真实账户和设置权限的目的。虚拟用户不能登陆CentOS系统。bash

修改配置文件

打开/etc/vsftpd/vsftpd.conf,作以下配置服务器

anonymous_enable=NO //设定不容许匿名访问
local_enable=YES //设定本地用户能够访问。注:如使用虚拟宿主用户,在该项目设定为NO的状况下全部虚拟用户将没法访问
chroot_list_enable=YES //使用户不能离开主目录
ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证

如下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,须要本身手动添加网络

guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户我的vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名

进行认证

首先,安装Berkeley DB工具,不少人找不到db_load的问题就是没有安装这个包。session

yum install db4 db4-utils

而后,建立用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码并发

test
123456

接着,生成虚拟用户认证的db文件app

db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

随后,编辑认证文件/etc/pam.d/vsftpd,所有注释掉原来语句,再增长如下两句:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

最后,建立虚拟用户配置文件

mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test  //文件名等于vuser_passwd.txt里面的帐户名,不然下面设置无效

内容以下

local_root=/home/xxx //虚拟用户根目录,根据实际状况修改
write_enable=YES  //可写
anon_umask=022 //掩码
anon_world_readable_only=NO 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

设置Selinux

setsebool -P ftp_home_dir=1   //设置ftp可使用home目录
setsebool -P allow_ftpd_full_access=1   //设置ftp用户能够有全部权限

设置FTP根目录权限

mkdir /home/xxx  //建立目录
chmod R 755 /ftp
chmod R 777 /home/xxx

最新的vsftpd要求对主目录不能有写的权限因此ftp为755,主目录下面的子目录再设置777权限

设置防火墙

打开/etc/sysconfig/iptables

在“-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT”,下添加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

而后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:

service iptables restart

 

OK,运行“service vsftpd start”,你就能够访问你的FTP服务器了。

配置PASV模式

vsftpd默认没有开启PASV模式,如今FTP只能经过PORT模式链接,要开启PASV默认须要经过下面的配置

打开/etc/vsftpd/vsftpd.conf,在末尾添加

pasv_enable=YES   //开启PASV模式
pasv_min_port=40000   //最小端口号
pasv_max_port=40080   //最大端口号
pasv_promiscuous=YES

在防火墙配置内开启40000到40080端口

-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40080 -j ACCEPT

重启iptabls和vsftpd

iptables-save
service iptables restart
service vsftpd restart

 

如今可使用PASV模式链接你的FTP服务器了~

------------------------------------------------------------------------------------------------------------------

CentOS 7中默认使用Firewalld作防火墙,因此修改iptables后,在重启系统后,根本无论用。

Firewalld中添加端口方法以下:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

参考: http://os.51cto.com/art/201008/221842_all.htm

 

 


3、Vsftp配置文件详解
    Vsftp配置文件详解
     
    FTP 分为两类,一种为PORT FTP,也就是通常的FTP﹔另外一类是PASV FTP,分述以下: 
      www.2cto.com  
        PORT FTP 这是通常形式的FTP,首先会创建控制频道,默认值是port 21,也就是跟port 21 创建联机,并透过此联机下达指令。第二,由FTP server 端会创建数据传输频道,默认值为20,也就是跟port 20 创建联机,并透过port 20 做数据的传输。 
     
        PASV FTP 跟PORT FTP 相似,首先会创建控制频道,默认值是port 21,也就是跟port 21 创建联机,并透过此联机下达指令。第二,会由client 端作出数据传输的请求,包括数据传输port 的数字。 
      www.2cto.com  
    这二者的差别为什么?PORT FTP当中的数据传输port是由FTP server 指定,而PASV FTP的数据传输port是由FTP client决定。一般咱们使用PASV FTP,是在有防火墙的环境之下,透过client 与server 的沟通,决定数据传输的port。 
     
    BOOLEAN OPTIONS
     
    allow_anon_ssl
        若是ssl_enable是active的,设置为yes的话,匿名用户则可使用SSL链接,默认No
    anon_mkdir_write_enable
        若是设置为yes,匿名用户则在必定的条件下(write_enable是active,而且在父目录有写权限)能够建立目录,默认No
     
    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。 
     
    BOOLEAN OPTIONS
     
    allow_anon_ssl
        若是ssl_enable是active的,设置为yes的话,匿名用户则可使用SSL链接,默认No
    anon_mkdir_write_enable
        若是设置为yes,匿名用户则在必定的条件下(write_enable是active,而且在父目录有写权限)能够建立目录,默认No
    anon_other_write_enable 
        若是设置为yes,匿名用户除了有upload和建立目录权限外,还有写操做权限,如:删除或者重命名文件,默认No
    anon_upload_enable
        若是设置为yes,匿名用户在必定的条件下(write_enable必须是active,匿名用户必须有写权限)能够上传文件,默认No
    anon_world_readable_only
        如置为yes,匿名用户则能够下载可读的文档,默认Yes
    anonymous_enable
        是否容许匿名用户能够登陆ftp,若是设置为yes,ftp和anonymous用户均可以做为匿名用户登陆,默认Yes
    ascii_download_enable
        若是开启,则以ASCII模式下载数据,默认No
    ascii_upload_enable
        若是开启,则以ASCII模式上传数据,默认No
    async_abor_enable
        若是开启,则一个特殊的ftp命令会被开启,相似于'async ABOR',是否容许客户端使用rsync,默认No
    background
        若是开启,vsftp将以监听(listen)模式启动,默认No
    check_shell
        只有在PAM没有嵌入vsftp的时候起做用,若是禁止,vsftp则不会在/etc/shells中检查本地用户的shell,默认Yes
    chmod_enable
        若是开启,则容许使用'SITE CHMOD'命令,这个只针对本地用户有效,对匿名用户无效。默认Yes
    chown_uploads
        若是开启,全部的匿名用户........................
    chroot_list_enable
        若是开启,你须要提供一个本地用户列表以指定谁在chroot()中,若是chroot_local_user设置为Yes,则这个列表表示哪些用户不在chroot()中,默认列表文件是/etc/vsftpd.chroot_list,你也能够经过chroot_list_file参数重置。默认No
    chroot_local_user
        若是开启,则本地用户默认使用chroot(),默认No
    connect_from_port_20
        控制在PORT模式下,数据链接是否使用20端口。默认是No
    debug_ssl
        若是开启,openssl链接诊断会在记录在vsftp日志中,默认No
    delete_failed_uploads 
        若是开启,任何上传失败的文件都会被删除,默认No
    deny_email_enable
     
    dirlist_enable
        若是关闭,全部的列目录命令都会被禁止,默认Yes
    dirmessage_enable
        若是开启,则在用户第一次进入一个目录时,会显示该目录下的.message文件的内容信息,你能够经过message_file重置该文件的设置,默认No
    download_enable
        
    dual_log_enable
        若是开启,两个日志文件会被同时产生,/var/log/xferlog和/var/log/vsftpd.log,前者是wu-ftpd类型日志,后者是vsftp本身风格的日志,默认No
    force_dot_files
        若是开启,以'.'开头的文件和目录会被列出来,即便没有使用a标记(ls -a),也就是显示隐藏文件,默认No
    force_anon_data_ssl
        只在ssl_enable是active时有效,若是设置为yes,则全部的匿名用户都被强制要求使用ssl发送和接收数据,默认No
    force_anon_logins_ssl
        只在ssl_enable是active时有效,若是设置为yes,则所哟的匿名用户都被强制要求使用ssl发送密码,默认No
    force_local_data_ssl
         只在ssl_enable是active时有效,若是设置为yes,全部的非匿名用户都被强制要求使用ssl发送和接收数据,默认Yes
    force_local_logins_ssl
         只在ssl_enable是active时有效,若是设置为yes,全部的非匿名用户都被强制要求使用ssl发送密码,默认Yes
    guest_enable
         若是开启,全部的非匿名用户以'guest'登陆,一个'guest'登陆后,会映射到guest_username指定文件中的用户上面,默认No
    hide_ids
        若是开启,全部的用户和组信息在目录中被显示时,都会显示为ftp,默认No
    implicit_ssl
     
    listen
        若是开启,vsftp则运行在standalone模式,默认No
    listen_ipv6
        相似listen,不过使用IPv6 socket代替IPv4,和listen参数互相排斥,默认No
    local_enable
        控制是否容许本地登陆,若是开启,则在/etc/passwd中的用户均可以登陆,默认No
    lock_upload_files
        若是开启,则全部的上传进程在上传文件时都会有一个写锁,全部的下载进程在下载文件时共享读锁,默认Yes
    log_ftp_protocol
        若是开启,假如xferlog_std_format参数没有开启,则全部的ftp请求和回应都会被记录进日志,默认No
    ls_recurse_enable
        若是开启,则容许用户使用'ls -R'命令,默认No
    mdtm_write
        若是开启,则容许MDTM修改文件访问时间,默认Yes    
    no_anon_password
        若是开启,则阻止vsftp询问匿名用户密码,匿名用户会直接登陆,默认No
    no_log_lock
        若是开启,则阻止vsftp在写日志文件时获取文件锁,默认No
    passwd_chroot_enable
     
    pasv_addr_resolve
        若是你想在pasv模式使用主机名,则能够设置为yes,默认No
    pasv_enable
        若是你想关闭PASV模式,则设置no,默认Yes
    pasv_promiscuous
        若是你想关闭PASV模式的安全检查(它保证数据链接和控制链接源自同一个ip),能够设置为yes,默认No
    port_enable
        若是你想禁止经过PORT方法获取数据链接,能够设置为No,默认Yes 
    port_promiscuous
        若是你想禁止PORT模式的安全检查(确保出去的数据链接能够链接到客户端),则能够设置为Yes,默认No
    require_cert
        若是设置为yes,则全部的客户端ssl链接须要提供一个客户端证书,默认No
    syslog_enable
        若是开启,则全部记录到/var/log/vsftpd.log的日志都会记录到system log中,默认No
    tcp_wrappers
        若是开启,vsftp支持tcp_wrappers,默认No
    text_userdb_names
                 
    tilde_user_enable
     
    use_localtime
        若是开启,vsftp将会在显示目录时显示你的本地时间,默认No
    use_sendfile
         一个内部用来测试sendfile()系统调用效果的参数,默认Yes
    userlist_deny
        若是userlist_enable选项开启,则会检查这个选项,若是设置为no,只有在userlist_file中指定的用户会被容许登陆,默认Yes
    userlist_enable
        若是开启,vsftp会加载userlist_file指定的用户列表,若是用户使用列表中的用户名登陆,则会被拒绝掉,默认No
    validate_cert
        若是开启,全部的ssl客户端证书必须是验证ok的,而本身签名的证书则不会经过认证,默认No
    virtual_use_local_privs
        若是开启,虚拟用户则会和本地用户具备相同的权限,默认状况下,虚拟用户和匿名用户具备的权限同样,默认No
    write_enable
        是否容许FTP命令改变文件系统,这些命令是:STOR, DELE,RNFR, RNTO, MKD, RMD, APPE and SITE,默认No
    xferlog_enable
        若是开启,一个日志文件会维护上传和下载的详细信息,默认记录在/var/log/vsftpd.log,能够经过vsftpd_log_file重置,默认No
    xferlog_std_format
        若是开启,传输日志则会采用标准的xferlog格式,默认是/var/log/xferlog,能够经过xferlog_file重置,默认No
     
     
    NUMERIC OPTIONS
     
    accept_timeout 
        远程客户端使用PASV模式时,创建数据链接的超时时间,默认60s
    anon_max_rate
        最大数据传输速率,默认0(不限制)
    anon_umask
        匿名用户建立一个文件的umask值,默认077
    chown_upload_mode
         匿名用户上传文件的mode值,默认0600
    connect_timeout
        远程客户端使用PORT模式时,响应数据链接的超时时间,默认60s
    data_connection_timeout
        一个容许数据传输粗略的超时时间,默认300s
    delay_failed_login
        暂停报告以前失败的登陆,默认1s
    delay_successful_login
        暂停以前一个成功的登陆,默认1s
    file_open_mode
        上传的文件具备的权限,默认0666
    ftp_data_port
        PORT模式的链接端口,默认20
    idle_session_timeout
        在两次输入ftp命令之间的空闲时间,默认300s
    listen_port
        若是vsftp工做在standalone模式,该端口监听进入的链接,默认21
    local_max_rate
        本地用户的最大数据传输速率,默认0(不限制)
    local_umask
        本地用户建立一个文件锁具备的umask,默认077
    max_clients
        若是vsftp工做在standalone模式,有多少用户能够链接进来,默认0(不限制)
    max_login_fails
        多少次登陆失败后,kill这个链接,默认3
    max_per_ip
        若是vsftp工做在standalone模式,同一个ip源地址能够有多少个链接进来,默认0(不限制)
    pasv_max_port
        在PASV模式下,能够分配给数据链接的最大端口号,默认0(可使用任何端口)
    pasv_min_port
        在PASV模式下,能够分配给数据链接的最小端口号,默认0(可使用任何端口)
    trans_chunk_size
        通常不会改变该参数的值,不过你能够设置为8192试试,默认0
     
     
    STRING OPTIONS
     
    anon_root
        在匿名用户成功登陆后,跳转到那个目录,默认none
    banned_email_file
        该文件包含了哪些匿名的e-mail 密码是不容许登陆的,若是deny_email_enable被开启,则会检查这个参数,默认/etc/vsftpd.banned_emails
    banner_file
        当一个用户登陆后,显示的信息,若是设置了该文件,则会覆盖ftpd_banner的设置,默认none
    ca_certs_file
        加载的CA文件的名称,默认none
    chown_username
         匿名用户上传文件所具备的owner,只有在chown_uploads被设置的时候有效,默认root
     
    chroot_list_file
        该文件包含哪些本地用户使用chroot(),只有在chroot_list_enable被开启的时候起做用,若是chroot_local_user开启,则列表文件变成哪些用户不使用chroot(),默认/etc/vsftpd.chroot_list
    cmds_allowed
        该选项用逗号分割一个容许执行的ftp命令列表(例如在POST模式下,cmds_allowed=USER, PASS,QUIT),默认none
    cmds_denied
        该选项用逗号分割一个不容许执行的ftp命令列表,默认none
    deny_file
      设置一个文件名模式,该匹配的文件都不准被访问,例如deny_file={*.mp3,*.mov,.private},默认none
    dsa_cert_file
        ssl加密链接中使用的DSA文件的位置,默认none
    dsa_private_key_file
        DSA私钥的位置,默认none
    ftp_username
        使用该账号处理匿名登陆的状况,默认ftp
    ftpd_banner
        可使用该选项替换第一次登录时显示的默认欢迎语句,默认none
    guest_username
        把一个真实用户映射到guest user上面,默认ftp
    hide_file
     
    listen_address
        若是vsftp工做在standalone模式,则能够经过该选项替换默认监听地址,默认none
    listen_address6
        和listen_address同样,替换ipv6
    local_root
        在本地用户登陆后,vsftp跳转到那个目录,默认none
    message_file
        若是dirmessage_enable开启,该选项设置默认的信息文件,默认.message
    nopriv_user
        该用户彻底没有特权,默认nobody
    pam_service_name
        vsftp使用的PAM服务的名称,默认vsftpd
    secure_chroot_dir
        该选项设置一个空目录名称,该目录不能被ftp用户有写权限,该目录做为一个安全的chroot()环境,vsftp不须要文件系统访问它
    ssl_ciphers
        ssl加密算法,默认DES-CBC3-SHA
    user_config_dir      
        容许你覆盖任何配置文件中的选项,它是基于每个用户的配置,若是你设置user_config_dir为/etc/vsftpd_user_conf,当你用chris用户登陆时,vsftp会申请加载/etc/vsftpd_user_conf/chris文件在该会话期内,不是全部的参数都在我的配置文件中生效的,默认none
    user_sub_token    www.2cto.com  
        用来链接虚拟帐户,它会为每一个虚拟账号自动生成家目录,例如设置guest_username为/home/virtual/$USER,user_sub_token为$USER,当fred虚拟帐户登陆时,fred的家目录为/home/virtual/fred,默认none
    userlist_file
        当userlist_enable开启的时候,会加载该参数设置的文件,默认/etc/vsftpd.user_list
    vsftpd_log_file
        在xferlog_enable被设置,而且xferlog_std_format没有设置的时候,来指定vsftp风格的日志写到哪一个文件中,若是你设置了syslog_enable,则日志会写入系统日志文件中,默认/var/log/vsftpd.log
    xferlog_file
        在xferlog_enable和xferlog_std_format被设置的时候,wu-ftpd风格的传输日志写入哪一个文件中,默认/var/log/xferlog
     

 

 
4、Tftp配置过程方法
配置:
FTP服务vsftp配置过程
1、安装FTP服务器 rpm -qa|grep vsftpd //查找vsftpd有没有安装,若没安装可用yum install vsftpd 进行安装fedora 11环境下)。 2、配置相关文件 在安装好ftp会产生几个文件:   /etc/vsftpd/vsftpd.conf 主配置文件   /etc/vsftpd.ftpusers 指定哪些用户不能访问FTP服务器   /etc/vsftpd.user_list 文件中指定的用户是否能够访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。 使用命令:vi /etc/vsftpd/vsftpd.conf。利用vi编辑器编辑vsftpd的配置文件vsftpd.conf。将vsftpd.conf文件中的主要设置以下: anonymous_enable=YES 是否容许匿名用户登陆 local_enable=YES 是否容许本地用户登陆 write_enable=YES 是否容许本地用户上传 anon_upload_enable=YES anon_mkdir_write_enable=YES ascii_upload_enable=YES ascii_download_enable=YES connect_from_port_20=YES 启用FTP数据端口链接 listen_port=端口号 设置FTP工做的端口号,默认的为21 注意要将配置项前面的#去掉,配置才生效。 3、设置ftp的pub目录属性中的权限。根目录下的var文件夹下的ftp文件夹是用户登陆到ftp的目录,而ftp目录下的pub目录是用户上传或下载文件的目录,若是要容许用户上传文件那么就要将这个目录的属性中的权限设置为可写。 4、启动ftp服务器。利用命令service vsftpd start就能够启动ftp服务器了。若让系统自动开机启动在ntsysv命令下选中vsftpd选项。 5、关闭ftp服务器。利用命令service vsftpd stop。 2、tftp服务配置过程 一、首先使用ntsysv命令查看xinetd是否已安装,若没安装则要先安装xinetd-2.3.14-15.fc8.i386.rpm,而后安装tftp-hpa-5.0.tar.gz, 安装tftp-hpa-5.0.tar.gz,即先解压,而后执行./Configure 、 make 、make install的顺序过程。 二、把/etc/xinet.d/下新建一个名字为tftp的文件,器内容为: service tftp { socket_type =dgram protocol =udp wait =yes user =root server =/usr/sbin/in.tftpd server_args =-s /tftpboot/ -c disable =no /*yes为开启*/ per_source =11 cps =100 2 flags =IPv4 } 3、在使用ntsysv命令下,去掉iptable选项,选中tftp选项。 四、在/root/.bashrc(隐藏文件)中加入一句in.tftpd -l /tftpboot,即完成tftp的安装。
相关文章
相关标签/搜索