FTP

ftp :文件传输协议   独立服务linux

    vsftpd工具:ftp用户(系统用户)管理维护,在后台运行进程vim

    ftp默认端口 2 1 数据端口 2 0 端口(主动模式);默认状况下ftp服务运行在被模式下。windows

    

ftp原理:安全

    主动模式:客服机向服务器的21端口发送请求,服务接受链接,创建一条命令链路,须要传送数据时候,客服端命令链路上用RORT命令回复服务端接口已经打开能够链接,服务端的从20端口向客户端改21端口发送链接请求,创建一条数据链接来传送数据。数据链路创建过程服务器主动请求。服务器

    被动模式:客服端向服务器的控制端口发送链接请求,服务端接受链接,创建一条命令链路,当须要传送数据时候,服务端在命令链路上用PASV命令告诉客服端:端口打开了某个端口,告诉端来链接,客服端向服务端的该端口发送链接,创建一条数据链路来传送数据。在数据创建的过程当中是服务端被动向等待客服端请求。网络


创建好环境 客服端:windows: ftp://10.1.1.1  linux:ftp 、lftpapp


搭建服务的步骤:一、关闭防火墙和selinux   
dom

                二、配置YUM源ssh

                三、软件三部曲(查看、安装、查看配置文件)tcp

                rpm -q vsftp    是否安装  ***

                yum -y install vsftpd


             四、了解主配置文件   man 5 vsftpd.conf
               # cat /etc/vsftpd/vsftpd.conf|grep -v ^#|grep -v ^$
                anonymous_enable=YES  容许匿名用户访问
                local_enable=YES        容许本地用户访问
                write_enable=YES        写总开关(本地用户)
                local_umask=022         本地用户的默认权限
                dirmessage_enable=YES   开启消息功能 .messages
                xferlog_enable=YES      开启日志功能
                connect_from_port_20=YES   支持主动模式(默认被动模式)
                xferlog_std_format=YES    日志格式
                listen=YES  以独立服务运行
                pam_service_name=vsftpd  认证服务名
                userlist_enable=YES  开启用户列表
      tcp_wrappers=YES  支持tcp_wrappsers功能,相似防火墙,可是没有防火墙功能强大

        

            五、根据需求修改配置文件

            

            六、启动服务,开机自动动

            #serivce vsftpd start

            #chkconfig vsftpd no

            

            #setstat -nltp | grep 21  端口是否开启

          tcp      0      0 0.0.0.0:21     0.0.0.0:*       LISTEN      3087/vsftpd                         

            七、测试验证(须要安装ftp和lftp)

  默认测试的结果:一、默认容许本地用户和匿名用户访问

                  二、默认匿名用户没有权限上传文件能够下载;本地用户能够上传、删除文件。



 需求 1容许匿名用户上传、下载文件、删除及重命名,匿名用户不能够下载别人上传的文件


        一、  #vim  /etc/vsftpd/vsftpd.conf
          ...
          anon_upload_enable=YES              容许上传
          anon_mkdir_write_abled=YES          容许建立
          anon_other_write_enable=YES         重命名


        二、 重启服务    # service  vsftpd restart
  

        三、测试: # lftp 10.1.1.1 
     lftp 10.1.1.1:/> put test1
     put: Access failed: 553 Could not create file. (test1)    目录权限
    

      lftp 10.1.1.1
  lftp 10.1.1.1:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root 查看不了
# lftp 10.1.1.1:~>

      缘由:权限太大,不安全。修改目录的权限


 解决办法:

      #chmod  o - w   /var/ftp
      #chmod  o + w  /var/ftp/pub  ——>在 ftp 家目录下建立一个目录


需求 2 : 匿名用户容许下载其余匿名用户上传的文件
  匿名用户上传文件的默认权限,  man 文档查看
          default:    anon_umask:077
         

          匿名用户建立 file 的默认权限:600
                       dir 的默认权限:700

    一、 #vim  /etc/vsftpd/vsftpd.conf     ——>修改主配置文件(修改默认权限)
              ...
              anon_umask=02
  

    二、重启服务
   
   

需求 3 :开启匿名用户和本地用户家目录里的消息功能
局部:
  anon:/var/ftp
  echo hello anon > /var/ftp/.message
  local:/home/$username
  echo hello local > /home/user01/.message


 # vim  /etc/vsftpd/vsftpd.conf    ——>全局修改
     ...
    banner_file=/etc/vsftpd/banner     其余人登陆时会看见该文件的内容呢
   
 #echo  banner  xxx  > /etc/vsftpd/banner
 
 #service  vsftpd  restart


需求 4 :禁锢本地用户的家目录

一、   #vim  /etc/vsftpd/vsftpd.conf
          ...
          chroot_local_user=YES    禁锢全部本地用户,只能在本身的家目录里活动

       #service  vsftpd  restart   重启
       
二、#vim  /etc/vsftpd/vsftpd.conf
       ...
         chroot_local_user=YES       只容许user01能够切换,其余任何人都不容许
         chroot_list_enable=YES
       #( default    follows )
         chroot_list_file=/etc/vsftpd/chroot_list
         
    #echo  user01 > /etc/vsftpd/chroot_list

三、#vim  /etc/vsftpd/vsftpd.conf
      ...
      #chroot_local_user=YES         只拒绝user01,其余人均可以切换
        chroot_list_enable=YES
      #( default    follows )
         chroot_list_file=/etc/vsftpd/chroot_list
         
     #echo  user01 > /etc/vsftpd/chroot_list


需求 5 :容许拒绝某人访问 ftp 服务(ftp 自身访问控制)

   /etc/vsftpd/ftpusers:黑名单   /etc/vsftpd/user_list: 白名单
   若是ftpusers 和 user_list 文件冲突,ftpusers黑名单 优先
                                                   

#echo  user01 >>ftpusers 用户放入黑名单

client:
          Name (192.168.1.102:root): user01
          331 Please specify the password.
          Password:
          530 Login incorrect.
          Login failed.
          ftp>



一、只容许 user01 访问 ftp 服务

     # cat   user_list
     # vsftpd  userlist
     # If userlist_deny=NO,  only allow users in this file
     # If userlist_deny=YES (default),  never allow users in this file, and
     # do not even prompt for a password.
 
      #vim vsftpd.conf
          ...
          userlist_deny=NO
         
重启服务,测试:

Name (192.168.1.102:root): user02  没在user_list里面,所一拒绝登陆
   530 Permission denied.
   Login failed.
ftp>

 



需求 6 :容许或者拒绝网络中的主机

# ldd /usr/sbin/vsftpd |grep  libwrap
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f42562a0000)

      /etc/hosts.deny    拒绝访问      
      /etc/hosts.allow    容许访问
先匹配

      /etc/hosts.deny  , 再去匹配

hosts.allow ; 若是两个文件都不存在,默认都容许;若是两个文件有冲突,allow优先

The extensible language uses the following format:
         daemon_list : client_list : option : option ...

ALL: .friendly.domain: ALLOW    容许friendly.domain域下面的全部主机访问全部服务
ALL: ALL: DENY   拒绝全部人来访问全部服务
ALL: .bad.domain: DENY   拒绝.bad.domain下面的全部主机访问全部服务
ALL: ALL: ALLOW    容许全部人来访问全部服务


#vim  /etc/hosts.deny   ——>拒绝列表
   ...
   服务名称:选项
   vsftpd:all       拒绝全部人来访问 ftp 服务
   vsftpd:192.168.1.3 , 192.168.1.110
   vsftpd :  192.168.1.0/255.255.255.0
   vsftpd , sshd : .uplooking.com   except  vm01.uplooking.com
   
#vim  /etc/hosts.allow   ——> 容许列表       
  ...
  vsftpd:all  except:192.168.1.3


重启服务测试

 


需求 7 :自定义匿名用户和本地用户的数据根目录


/anon/data :匿名用户数据根目录
/local/data:本地用户数据的根目录


一、建立相应的目录
  #mkdir     /anon/data   -p
  #mkdir     /local/data    -p
 
二、修改配置文件
   #vim    /etc/vdftpd/vsftpd.conf
      ...
      anon_root=/anon/data
      local_root=/local/data
     
三、重启服务

四、测试验证


 

其余访问控制:    max _clients : 客户端最大链接次数   默认是2000     max_per_ip : 客户端每一个 IP 最大链接次数  默认 50     max_login_fails : 客户端最大登陆失败的次数  默认 3     local_max_rate : 本地用户传输文件的最大速率   默认没限制   单位是 字节

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息