zoukankan      html  css  js  c++  java
  • linux ftp部署

    一. 安装FTP软件

    yum -y install vsftpd
    

    二. 常见功能调试

    在 CentOS 的默认值当中,vsftpd 是同时开放实体用户与匿名用户的,CentOS 的默认值如下:

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 1. 与匿名者有关的信息:
    anonymous_enable=YES        <==支持匿名者的登入使用 FTP 功能
    
    # 2. 与实体用户有关的设定
    local_enable=YES            <==支持本地端的实体用户登入
    write_enable=YES            <==允许用户上传数据 (包括档案与目录)
    local_umask=022             <==建立新目录 (755) 与档案 (644) 的权限
    
    # 3. 与服务器环境有关的设定
    dirmessage_enable=YES       <==若目录下有 .message 则会显示该档案的内容
    xferlog_enable=YES          <==启动登录文件记录,记录于 /var/log/xferlog
    connect_from_port_20=YES    <==支持主动式联机功能
    xferlog_std_format=YES      <==支持 WuFTP 的登录档格式
    listen=YES                  <==使用 stand alone 方式启动 vsftpd
    pam_service_name=vsftpd     <==支持 PAM 模块的管理
    userlist_enable=YES         <==支持 /etc/vsftpd/user_list 档案内的账号登入管控!
    tcp_wrappers=YES            <==支持 TCP Wrappers 的防火墙机制
    

    如上默认设置FTP可以达到如下功能:

    • 你可以使用 anonymous 这个匿名账号或其他实体账号 (/etc/passwd) 登入;
    • anonymous 的家目录在 /var/ftp ,且无上传权限,亦已经被 chroot 了;
    • 实体用户的家目录参考 /etc/passwd,并没有被 chroot,可前往任何有权限可进入的目录中;
    • 任何于 /etc/vsftpd/ftpusers 内存在的账号均无法使用 vsftpd (PAM);
    • 可利用 /etc/hosts.{allow|deny} 来作为基础防火墙;
    • 当客户端有任何上传/下载信息时,该信息会被纪录到 /var/log/xferlog 中;
    • 主动式联机的埠口为 port 20;
    • 使用格林威治时间 (GMT)。
      修改时间使用本地时间
    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 在这个档案当中的最后一行加入这一句即可
    use_localtime=YES
    

    三. 针对仅实体登录账号的设定

    虽然在 CentOS 的默认情况当中实体用户已经可以使用 FTP 的服务了,不过我们可能还需要一些额外的功能来限制实体用户。 举例来说,限制用户无法离开家目录 (chroot)、限制下载速率、限制用户上传文件时的权限 (mask) 等等。 底下我们先列出一些希望达到的功能,然后再继续进行额外功能的处理:

    • 希望使用北京时间取代 GMT 时间;
    • 用户登入时显示一些欢迎信息;
    • 系统账号不可登入主机 (亦即 UID 小于 500 以下的账号);
    • 一般实体用户可以进行上传、下载、建立目录及修改文件等动作;
    • 用户新增的文件、目录之 umask 希望设定为 002;
    • 其他主机设定值保留默认值即可。
      主配置文件调试
    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 1. 与匿名者相关的信息,在这个案例中将匿名登录取消:
    anonymous_enable=NO
    # 2. 与实体用户相关的信息:可写入,且 umask 为 002 !
    local_enable=YES
    write_enable=YES
    local_umask=002
    userlist_enable=YES
    userlist_deny=YES
    userlist_file=/etc/vsftpd/user_list  <==这个文件必须存在!默认有此文件!
    # 3. 与服务器环境有关的设定
    use_localtime=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=YES
    pam_service_name=vsftpd
    tcp_wrappers=YES
    banner_file=/etc/vsftpd/welcome.txt <==这个文件必须存在!需手动建立!
    
    [root@www ~]# /etc/init.d/vsftpd restart
    

    欢迎信息调试

    [root@www ~]# vim /etc/vsftpd/welcome.txt
    欢迎使用本站FTP功能,这个是测试服务。
    

    建立限制系统账号登入的文件

    #针对系统账号来给予抵挡的机制,其实有两个档案,一个是 PAM 模块管的,一个是 vsftpd 主动提供的, 在预设的情况下这两个档案分别是:
    /etc/vsftpd/ftpusers:就是 /etc/pam.d/vsftpd 这个档案的设定所影响的;
    /etc/vsftpd/user_list:由 vsftpd.conf 的 userlist_file 所设定。
    #这两个档案的内容是一样的~并且这两个档案必须要存在才行。请你参考你的 /etc/passwd 配置文件, 然后将 UID 小于 500 的账号名称给他同时写到这两个档案内!一行一个账号!
    [root@www ~]# vim /etc/vsftpd/user_list
    root
    bin
    

    对用户进行根目录锁定

    # 1. 修改 vsftpd.conf 的参数值:
    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 增加是否设定针对某些使用者来 chroot 的相关设定!
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    
    # 2. 建立不被 chroot 的使用者账号列表,即使没有任何账号,此档案也是要存在!
    [root@www ~]# vim /etc/vsftpd/chroot_list
    jet
    #此档案中存在的用户的根目录不会被锁定
    [root@www ~]# /etc/init.d/vsftpd restart
    

    限制用户的带宽

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 增加底下这一个参数即可:
    local_max_rate=1000000  <==记住喔,单位是 bytes/second
    [root@www ~]# /etc/init.d/vsftpd restart
    

    限制最大同时上线人数与同一 IP 的 FTP 联机数

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 增加底下的这两个参数:
    max_clients=10
    max_per_ip=1
    [root@www ~]# /etc/init.d/vsftpd restart
    

    建立严格的可使用 FTP 的账号列表

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 这几个参数必须要修改成这样:
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/vsftpd/user_list
    [root@www ~]# /etc/init.d/vsftpd restart
    

    四. 针对仅匿名用户登录设置

    底下我们将针对匿名用户来设定,且不开放实体用户。一般来说,这种设定是给类似大专院校的 FTP 服务器来使用。
    使用北京时间,而非 GMT 时间;
    提供欢迎信息,说明可提供下载的信息;
    仅开放 anonymous 的登入,且不需要输入密码;
    文件传输的速限为 1 Mbytes/second;
    数据连接的过程 (不是命令通道!) 只要超过 60 秒没有响应,就强制 Client 断线!
    只要 anonymous 超过十分钟没有动作,就予以断线;
    最大同时上线人数限制为 50 人,且同一 IP 来源最大联机数量为 5 人;

    [root@www ~]# mkdir /var/ftp/linux
    [root@www ~]# mkdir /var/ftp/gnu
    

    配置主配置文件

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 将这个档案的全部内容改成这样:
    # 1. 与匿名者相关的信息:
    anonymous_enable=YES
    no_anon_password=YES        <==匿名登录时,系统不会检验密码 (通常是email)
    anon_max_rate=1000000       <==最大带宽使用为 1MB/s 左右
    data_connection_timeout=60  <==数据流联机的 timeout 为 60 秒
    idle_session_timeout=600    <==若匿名者发呆超过 10 分钟就断线
    max_clients=50              <==最大联机与每个 IP 的可用联机
    max_per_ip=5
    
    # 2. 与实体用户相关的信息,本案例中为关闭他的情况!
    local_enable=NO
    
    # 3. 与服务器环境有关的设定
    use_localtime=YES
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=YES
    pam_service_name=vsftpd
    tcp_wrappers=YES
    banner_file=/etc/vsftpd/anon_welcome.txt 
    
    [root@www ~]# /etc/init.d/vsftpd restart
    

    建立欢迎信息

    [root@www ~]# vim /etc/vsftpd/anon_welcome.txt
    欢迎光临本站所提供的 FTP 服务!
    本站主要提供 Linux 操作系统相关档案以及 GNU 自由软件喔!
    有问题请与站长联络!谢谢大家!
    主要的目录为:
    linux   提供 Linux 操作系统相关软件
    gnu     提供 GNU 的自由软件
    uploads 提供匿名的您上传数据
    

    让匿名者可上传/下载自己的资料 (权限开放最大)

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 新增底下这几行啊!
    write_enable=YES
    anon_other_write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    
    [root@www ~]# /etc/init.d/vsftpd restart
    [root@www ~]# mkdir /var/ftp/uploads
    [root@www ~]# chown ftp /var/ftp/uploads
    

    让匿名者仅具有上传权限,不可下载匿名者上传的东西

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 将这几行给他改一改先!记得要拿掉 anon_other_write_enable=YES
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    chown_uploads=YES        <==新增的设定值在此!
    chown_username=daemon
    [root@www ~]# /etc/init.d/vsftpd restart
    

    被动式联机端口的限制

    [root@www ~]# vim /etc/vsftpd/vsftpd.conf
    # 增加底下这几行即可啊!
    pasv_min_port=65400
    pasv_max_port=65410
    
    [root@www ~]# /etc/init.d/vsftpd restart
    

    iptables设置建议

    # 1. 加入模块:虽然 iptables.rule 已加入模块,不过系统档案还是修改一下好了:
    [root@www ~]# vim /etc/sysconfig/iptables-config
    IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
    # 加入模块即可!两个模块中间有空格键隔开!然后重新启动 iptables 服务啰!
    [root@www ~]# /etc/init.d/iptables restart
    
    # 2. 修改 iptables.rule 的脚本如下:
    [root@www ~]# vim /usr/local/virus/iptables/iptables.rule
    iptables -A INPUT -p TCP -i $EXTIF --dport  21  --sport 1024:65534 -j ACCEPT
    # 找到上面这一行,并将前面的批注拿掉即可!并且新增底下这一行喔!
    iptables -A INPUT -p TCP -i $EXTIF --dport 65400:65410 --sport 1024:65534 -j ACCEPT
    
    [root@www ~]# /usr/local/virus/iptables/iptables.rule
    
  • 相关阅读:
    []==![] 为什么等于true?
    this指向问题
    Git的基本了解与使用、向github提交代码
    Javascript实现多行字符串
    常见浏览器兼容性问题与解决方案?
    Scapy——Scrapy shell的使用
    Python中单下划线和双下划线
    Python中@staticmethod和@classmethod的作用和区别
    Python多进程、多线程和协程简介
    精简Docker镜像的几个方法
  • 原文地址:https://www.cnblogs.com/wangzengyi/p/12546124.html
Copyright © 2011-2022 走看看