zoukankan      html  css  js  c++  java
  • Proftpd 服务器安装配置

    yum install proftpd

    如果提示没有找到源

    CentOS/RHEL 5 :

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm

    CentOS/RHEL 6 :

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

    CentOS/RHEL 7 :

    rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    如果还是不行,可以到http://www.proftpd.org/下载
    然后./configure --sysconfdir=/etc --localstatedir=/var/proftpd && make && make install,这里指定了sysconfdir,配置文件的位置,如果不指定,默认配置文件位置是在/usr/local/etc/目录

    chkconfig --level 3 proftpd on

    vi /etc/proftpd.conf

    更改

    AuthOrder mod_auth_file.c  #设置仅使用虚拟用户认证

    末尾添加

    AuthUserFile /etc/ftpd.passwd
    AuthGroupFile /etc/ftpd.group
    RequireValidShell off
    PersistentPasswd off
    AuthPAM off
    DefaultRoot /data
    PassivePorts 20000 20200

    如果需要开启sftp

    取消以下行注释
    #LoadModule mod_sftp.c
    #LoadModule mod_sftp_pam.c

    末尾添加以下配置

    <IfModule mod_sftp.c>
        SFTPEngine ON
        SFTPLog /var/log/sftp.log
        Port 2222                # 使用2222端口,需要防火墙开启相应端口
        SFTPHostKey /etc/ssh/ssh_host_rsa_key  # 使用系统自带的秘钥文件
        SFTPCompression delayed        # 启用传输数据压缩
    </IfModule>

    注意sftp功能在1.3.5d版本有问题(和OpenSSH 7.3相关),最好升级到1.3.6,参考

    http://bugs.proftpd.org/show_bug.cgi?id=4287

    https://github.com/proftpd/proftpd/issues/656

    https://github.com/proftpd/proftpd/issues/836

    https://github.com/proftpd/proftpd/issues/408

    建议直接安装1.3.3g版本,但这个版本如果使用sftp,即时设置了CMD DIRS权限,也无法自由切换目录

    http://rpmfind.net/linux/epel/6/x86_64/Packages/p/proftpd-1.3.3g-14.el6.x86_64.rpm

    =========================================

    RequireValidShell off  #关闭检测/etc/shells
    PersistentPasswd off  #禁止PAM认证
    AuthPAM off  #禁止PAM认证
    #这里设置用户等FTP服务器的后的根目录。如果是设置为~(DefaultRoot ~ ),那么根目录就是每个用户自己的HOME目录(ftpasswd --home 参数指定),这样每个用户就会被限制在自己的HOME目录里面。实际上我们常用的是指定一个所有用户的FTP根目录,然后通过Directory和LIMIT来分别限制用户的权限,所以假设我们的FTP目录是系统的/data目录:
    DefaultRoot /data
    PassivePorts 20000 20200  #开启被动模式

    建立文件

    touch /etc/ftpd.passwd

    touch /etc/ftpd.group

    修改文件权限,必须是440,其他权限会导致服务无法启动,即使给777也不行

    chmod 440 /etc/ftpd.passwd

    chmod 440 /etc/ftpd.group

    通过proftpd -t6检查语法是否正确

    如果提示unable to determine IP address of '主机名称'

    那么编辑/etc/hosts,加上系统主机名为127.0.0.1

    安装用户配置工具ftpasswd到/usr/sbin目录

    cd /usr/sbin/
    wget http://www.castaglia.org/proftpd/contrib/ftpasswd
    chmod +x ftpasswd

    ftpasswd --passwd --name {username} --file /etc/ftpd.passwd --uid {5000} --gid {5000} --home /var/ftp/username-home/ --shell /bin/false

    按提示输入两次密码

    示例:添加ftp用户到ftpd.passwd,账户加密文件放到/etc/ftpd.passwd,用户名billy,

    指定该账号在系统中所属的用户id和组id为5000(可以添加到系统现有的用户或组,只需要用id命令先查到uid和gid,后面配置用户的访问权限就只需要修改相应的系统用户对文件的访问权限就可以了),指定用户的根目录是/www/www.abc.com/

    ftpasswd --passwd --file /etc/ftpd.passwd --name billy --uid 5000 --gid 5000 --home /www/www.abc.com/ --shell /bin/false

    按提示输入两次密码

    删除用户

    ftpasswd --passwd --file /etc/ftpd.passwd --name billy  --delete-user

    因为使用ftppasswrd修改了ftpd.passwd文件,需要 chmod 440 /etc/ftpd.passwd 再次重置下权限,否则可能启动失败

    启动服务

    service proftpd start

    or

    systemctl start proftpd

    查看启动状态或错误代码

    service proftpd status

    or

    systemctl status proftpd -l

    安装lftp客户端软件进行测试

    yum install lftp

    连接服务器

    lftp billy@127.0.0.1

    >Password:(输入密码)

    >ls (列出当前目录文件)

    >help (打开帮助)

    如果ls列出目录提示 Login failed: 530 Login incorrect.

    可能是因为打开了SELINUX

    临时关闭:

    [root@localhost ~]# getenforce
    Enforcing

    [root@localhost ~]# setenforce 0
    [root@localhost ~]# getenforce
    Permissive

    永久关闭:

    [root@localhost ~]# vim /etc/sysconfig/selinux

    SELINUX=enforcing 改为 SELINUX=disabled

    重启服务reboot

    或者配置SELINUX

    另外FTP登入目录的权限设置,需要至少设置rx

    防火墙相关配置

    1、开放21、20端口

    iptables -A INPUT -p tcp --dport 20 -j ACCEPT
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT

    如果已配置了拒绝所有的配置项,类似,比如这条记录的记录号是6
    REJECT --reject-with icmp-host-prohibited

    则必须插入到这条记录之前
    iptables -I INPUT 5 -p tcp --dport 20:21 -j ACCEPT
    iptables -I INPUT 5 -p tcp --dport 20000:20200 -j ACCEPT #被动模式端口


    如果OUTPUT默认也是DROP,那么还需要添加一下规则。

    iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

    2、接受所有状态为ESTABLISHED、RELATED的连接

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -I INPUT 5 -m state --state ESTABLISHED,RELATED -j ACCEPT

    编辑防火墙配置文件

    vi /etc/sysconfig/iptables-config

    末尾添加

    IPTABLES_MODULES="ip_conntrack_ftp"
    IPTABLES_MODULES="ip_nat_ftp"

    service iptables save #保存防火墙规则

    service iptables restart #重启防火墙

    权限设置案例:


    #注意:这里的目录是相对于FTP根目录(DefaultRoot目录,我们刚才设置的时 /data)的目录

    #首先去除所有权限
    <Limit ALL>
       DenyAll
    </Limit>

    #设置admin具有FTP根目录下的所以操作权限,所有用户具有切换目录和列出目录的权限(否则用户无法任意切换目录)
    <Directory />
      <Limit ALL>
        AllowUser admin
      </Limit>
      <Limit CMD DIRS>  #在1.3.3g版本使用sftp下无效
        AllowAll
      </Limit>
    </Directory>
    #设置test用户有对test目录的完整操作权限
    <Directory /test>
      <Limit ALL>
        AllowUser test
      </Limit>
    </Directory>

    权限设置详解

    http://www.proftpd.org/docs/howto/Directory.html

    命令     解释
    CMD     Change Working Directory 改变目录
    MKD     MaKe Directory 建立目录的权限
    RNFR     ReName FRom 更改目录名的权限
    DELE     DELEte 删除文件的权限
    RMD     ReMove Directory 删除目录的权限
    RETR     RETRieve 从服务端下载到客户端的权限
    STOR     STORe 从客户端上传到服务端的权限
    READ     可读的权限,不包括列目录的权限,相当于 RETR , STAT 等
    WRITE     写文件或者目录的权限,包括 MKD 和 RMD
    DIRS     是否允许列目录,相当于 LIST , NLST 等权限,还是比较实用的
    ALL     所有权限

  • 相关阅读:
    SyntaxError: Non-ASCII character 'xe7' in file解决方法
    python实现微信打飞机游戏
    ubuntu 系统出错一览
    MVC的特点
    架构
    策略模式
    bin
    使用XSLT实现Word下载
    <a>标签的href属性
    call-template和apply-templates
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/7543754.html
Copyright © 2011-2022 走看看