• 教你配置安全的ProFTPD服务器(上)


    proftpd全称:Professional FTP daemon是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点,ProFTP配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。ProFTPD 的特点:

        1. 单配置文件,其设置指示和apache的有类似之处,非常容易配置。    

    2. 基于单个目录的.ftpaccess设置文件,类似与apache的.htaccess文件。    

    3. 易于设置的多虚拟服务器和匿名ftp服务   

    4. 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式。    

    5. 匿名ftp的根目录不需要任何特殊的目录结构,或系统程序或其他系统文件。 

        6. ncfptd不执行任何外部程序,从而减少了安全隐患。 
        7. 可以根据文件属主情况或unix风格的访问控制来隐藏文件或目录。 
         8. 以非root身份运行,从而减少了安全隐患。 
        9. 强大的log功能,支持utmp/wtmp及wu-ftpd格式的记录标准,并支持扩展功能的记录。 
        10. 支持Shadow密码,包括支持密码过期机制。 
        11. 遵从GPL版权,开放源代码。 
        12. 可设定多个虚拟FTP server,而匿名FTP服务更是十分容易。
        13. 最新版本1.3.4a。http://www.ProFTPD.org 。

    一、基本ProFTPD服务器配置过程:    1.如果安装过wuftpd服务器首先卸载。ProFTPD最新版本是1.3.0,官方网址:http://www.ProFTPD.org 。下载链结:ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4a.tar.bz2

    [root@ftpd /]# bunzip proftpd-1.3.4a.tar.bz2 
    [root@ftpd /]# cp proftpd-1.3.4a.tar /usr/src/ 
    [root@ftpd /]# cd /usr/src 
    [root@ftpd src]# tar xvf proftpd-1.3.4a.tar 
    [root@ftpd src]# cd proftpd-1.3.4a 
    [root@pftd proftpd-1.3.0]# ./configure ; make ; make install   

        到现在为止,你已经完成了proftpd的编译和安装。并且在/usr/local/etc/目录下有一个默认的proftpd配置文件proftpd.conf。

        2.理解配置文件
       下面是默认安装后的配置文件:
    ServerName “ProFTPD Default Installation” 
    ServerType standalone 
    DefaultServer on 
    ServerIdent off
    Port 21 
    Umask 022 
    MaxInstances 30 
    User nobody 
    Group nogroup 
    <Directory /*> 
    AllowOverwrite on 
    </Directory> 
    <Anonymous ~ftp> 
    User ftp 
    Group ftp 
    UserAlias anonymous ftp 
    MaxClients 10 
    DisplayLogin welcome.msg 
    DisplayFirstChdir .message 
    <Limit WRITE> 
    DenyAll 
    </Limit> 
    </Anonymous>
        这里笔者去掉了所有注视。熟悉Apache服务器的配置方法的读者很很容易理解。二者有许多相似之处。
    单线指令,如ServerName and ServerType。
    多线容器指令。如<Directory> and <Limit>。
    配置服务器后应当知道配置文件中指令的含义。可以参考官方配置指南(下载链接:http://www.proftpd.org/docs/directives/configuration.pdf )。下面主要介绍安全相关的部分。
    ServerName :服务器名称。在登入时所显示的服务器名称。确省是:“ProFTPD Default Installation”可以根据个人情况修改。
    ServerType :服务器工作类型。ProFTPD能以Stand-alone、xinetd两种模式运行。
    DefaultServer:是否启用虚拟FTP,on为支持,off是关闭。
    ServerIdent :是否显示FTP软件名称,on为显示,off是关闭。
    Port:运行端口。设定于登入时,主机是监听那一个端口。
    Umask:指定确省配置文件的权限一般是022。
    MaxInstances:最大连接请求。设定服务器于同一时间内可以处理的程序有几笔,若服务器运行类型设为standalone的话,可设低一点,以避免黑客的DoS攻击。
    User:指明运行FTP服务器的用户名称。
    Group: 指明运行FTP服务器的用户组名称。
    <Directory /*> 登入时想进入的目录位置 (/*是通配符合),AllowOverwrite 表示是否允许客户端覆盖文件,这样是不安全的应当选择off。
    </Anonymous> 是否建立匿名FTP站点。除非需要请删除这个选型。
    DisplayLogin welcome.msg 设置ftp登陆欢迎信息文件。

    3.配置实例

    建立一个单机(standalone)模式的FTP服务器
    建立配置文件如下:
    ServerName “FTP Server” 
    ServerType standalone 
    DefaultServer on 
    Port 21 
    Umask 027 
    MaxInstances 30 
    User nobody 
    Group nogroup 
    <Directory /*> 
    AllowOverwrite off 
    </Directory>

    使用su命令切换为root用户。
    在/etc/rc.d/init.d目录中安装启动脚本:cp ./contrib/dist/rpm/proftpd.init.d /etc/rc.d 
    /init.d/proftpd
    添加一个新组:groupadd nogroup。
    建立符号链结让FTP服务器随启动自动启动:ln -/etc/rc.d/init.d/proftpd /etc/rc.d/rc3.d/S95proftpd 
    测试连接情况:从客户端测试proftpd是否正常运行: 

    C:WINDOWS>ftp 192.168.2.33 
    Connected to 192.168.2.33. 
    220 ProFTPD 1.2.0rc3 Server (ProFTPD Default Installation)[ftpd.test.com.cn] 
    User (192.168.2.33:(none)): ideal 
    Password: 
    230 User ideal logged in. 
    ftp>

    ProFTPD的控制命令:/etc/rc.d/init.d/proftpd stop 关闭服务器
                           /etc/rc.d/init.d/proftpd start 启动服务器
                           /etc/rc.d/init.d/ proftpd reload 重新加载修改后的配置文件etc/proftpd.conf并且启动服务器。

        4.建立一个安全的匿名ProFTPD站点

        如果人们只需要从FTP服务器等到一些小文件(几兆),可以使用Apache web服务器代替匿名FTP站点。如果要通过一个匿名账号频繁上传、下载文件,就要建立一个安全的ProFTPD服务器。下面是配置文件/etc/proftpd.conf内容(其中incoming目录容许用户上传文件):
    <Anonymous ~ftp> 
    User ftp 
    Group ftp 
    RequireValidShell off 
    UserAlias anonymous ftp 
    MaxClients 40 
    <Directory *> 
    <Limit WRITE> 
    DenyAll 
    </Limit> 
    </Directory> 
    <Directory incoming> 
    <Limit WRITE> 
    AllowAll 
    </Limit> 
    <Limit READ> 
    DenyAll 
    </Limit> 
    </Directory> 
    </Anonymous>

        根据以上内容建立的ProFTPD服务器会为自动连接到匿名ProFTPD服务器的用户创建一个chroot限制,用户的主目录为站点的根目录。下面解释主要配置指令的作用:
    User 和 Group:这两个指令确保User ftp和Group ftp拥有所有匿名会话。
    RequireValidShell:由于在/etc/passwd中没有用户FTP的有效列表,所以该指令说明ProFTPD允许User ftp的匿名会话。
    UserAlias:该指令把anonymous赋予FTP账号,以便所有用户可以使用ftp和anonymous作为用户名登录匿名FTP服务器。
    MaxClients:这里限制匿名连接数目是40,你可以根据系统负载设定连接数目。
    <Directory>容器:这些容器给定目录的各种限制:
    第一个目录容器对每个用户和每个目录禁止写权限(包括上传、删除和修改)。
    第二个目录容器在incoming子目录中给每个用户写权限。
    最后一个Limit指令确保在incoming子目录中上传文件的用户不能查看和恢复目录中的文件。

        5. 设定虚拟主机 

    可以通过指令:VirtualHost来实现虚拟主机,一个最简单的例子: 
    <VirtualHost 192.168.2.35> 
    ServerName "virtual FTP server" 
    </VirtualHost> 
    若你仅仅希望通过匿名访问某个虚拟主机,则使用如下的指令: 

    <Anonymous ~student> 
    User student 
    Group ftp 
    MaxClientsPerHost 1 "Sorry,This ftp only use one's IP connect!!" 
    AnonRequirePassword on 
    RateReadBPS 512000     “限制带宽最大速度” 
    RateReadFreeBytes 512000 
    RateReadHardBPS on 
    <Limit LOGIN /home/student/*> 
    Order allow,deny 
    Allow from 192.16.*.*   “限制IP登陆范围” 
    Deny from all 
    </Limit> 
    <Limit READ>   “设置/home/student用户可以读” 
    AllowAll 
    </Limit> 
    <Limit DELE>   “不能删除 文件”
    DenyAll 
    </Limit> 
    <Limit RNFR>   “不可更名文件”
    DenyAll 
    </Limit> 
    <Limit MKD>   “不可建立文件目录”
    DenyAll 
    </Limit> 
    </Anonymous>

    Limit参数说明:
    CWD :Change Working Directory,变换目录之意; 
    MKD :MaKe Directory,可建立目录与否; 
    RNFR :ReName FRom,可更改档名与否; 
    DELE :DELEt,可删除文件语法; 
    RMD :ReMove Directory,可移除目录与否; 
    RETR :RETRieve,下载之意由服务器传送数据到客户端; 
    READ :可读取与否 ;
    WRITE:可写入与否 ;
    STOR :STORe,上传之意,由客户端传送数据到服务器; 
    ALL :允许全部的动作;

    6.在图形界面下控制ProFTPD 

        GProftpd一个GNOME桌面环境下的ProFTPD标准克隆,基本上能实现命令行模下的所有的功能。使用之后,在看配置文件,顿有拔云见山之感 。因为ProFTPD可设定的功能太多了,初学者不太可能完全背下所有功能及相关的设定。也因为如此,许多人退而选择使用ProFTPD的预设设定值。但这么一来,ProFTPD的强大功能被弃之不用,相当可惜。如果有一套软件,可以辅助管理员进行ProFTPD的设定动作,相信这些问题便可以迎刃而解了。GProFTPD便是一套以GTK+图形界面下发展的帮助管理员在GNOME环境下进行ProFTPD设定工作ProFTPD前端程序。GProFTPD并不只是一个设定工作的辅助程序而已。通过GProFTPD,管理员可以进行FTP账号管理、文件传输动作的实时监控,还可以直接查看系统登入成功及失败的次数,提前了解是否有人正在对系统进行攻击动作。当然也可以进行ProFTPD服务器的服务启动、停止动作,也可以直接修改设定文件,或是决定系统重新启动的时间。几乎所有与ProFTPD相关的功能,都能使用GProFTPD直接进行,不必再担心看不懂配置的内容了。

        (1)下载安装:
        #Wget http://mange.dynalias.org/linux/gproftpd/OLD/gproftpd-8.2.4.tar.gz

        (2)系统要求: 
        硬件: 中央处理器:兼容 Intel X86处理器PentiumII 400 以上 ,64 兆(推荐128兆)内存,150兆以上硬盘空间 ,显示内存4兆。软件: 内核版本基于2.4或以上 ,GNOME 1.2以上,桌面分辨率 至少为640×480 ,桌面颜色至少6万5千色(16位元)。

        (3)安装前的准备工作: 
        安装过程中需要编译所以需要GCC(2.96以上)和Qt(2.0以上)、GTK支持,所以要使用RPM来确认: rpm -qa | grep gcc;rpm -qa | grep qt;rpm -qa | grep gtk

        (4)命令行下安装软件
    gunzip gproftpd-8.2.4.tar.gz
    tar vxf gproftpd-8.2.4.tar
    cd gproftpd-8.2.4
    ./configure;make;make install

        (5)运行软件:
        打开一个终端运行命令:“/usr/sbin/gproftpd”服务器(Sever)主工作界面如图1。        

    图1 gproftpd 主工作界面
       
          
        在图1主工作界面 我们可以设置FTP服务器IP地址,查看FTP服务器运行情况等信息。下面看看安全(Secunity)界面见图2。
    图2 gproftpd 安全界面

        这里我们可以看到FTP的登录用户情况。在用户界面(users)可以设置用户登录密码、登录目录以及最大并发连接等见图3 。
    图3 用户设置界面

        接着可以查看磁盘(disk)界面。这里可以监控磁盘使用情况,避免恶意用户用垃圾数据塞满你的硬盘。见图4。
    图4 磁盘使用情况

        到此为止我们已经基本建立一个ProFTPD服务器。

     trackback: http://hi.baidu.com/tonyty163/blog/item/987422d587de0e08a18bb7b1.html

  • 相关阅读:
    全能VIP音乐在线解析
    wordpress插件推荐
    day 34 IO模型
    day 33 协程、 socketserver模块
    day 32-2 练习
    day 32-2 并发编程——认识线程(下)
    day 32 练习
    day 32 并发编程——认识线程(上)
    day 31-1 练习
    day 31-1 守护进程、互斥锁、队列、生产消费模型
  • 原文地址:https://www.cnblogs.com/JohnShao/p/2477544.html
Copyright © 2020-2023  润新知