• 实验01:构建FTP服务器


    .实验目标

       

       根据公司的业务发展要求,需要面向Internet 搭建一台FTP文件服务器,以提供公测软  

       件、市场资料的下载,以及员工的一些资源上传分享

     1. 测试默认安装vsftpd的结果

        匿名用户与本地用户是否可以登录

        匿名用户与本地用户登录的家目录在哪里

        匿名用户与本地用户登录后的权限

        匿名用户登录对共享根目录禁止有写入权限,否则禁止匿名账户登录!

    2.禁止匿名用户登录

       修改FTP默认端口为2121

       禁锢本地用户在自己家目录

    3.验证黑/白名单

    4.本地用户登录到/data/ftproot目录

       up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户

       最多20个并发,每IP地址最多2个并发

       限制下载速度限制为100KB/s

       

    . 实验步骤

       

    一、测试默认安装vsftpd的结果

       

      实验要求:测试默认安装vsftpd的结果

                匿名用户与本地用户是否可以登录

                匿名用户与本地用户登录的家目录在哪里

                匿名用户与本地用户登录后的权限

       

    (一)服务端设置

       

    一)IP设置

       

    1. 设置ip地址

    [root@dhcpser ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0

    BOOTPROTO=none

    ONBOOT=yes    

    HWADDR=00:0c:29:48:71:56  (MAK地址)

    IPADDR=192.168.10.253   (ip地址)

    NETMASK=255.255.255.0   (子网掩码)

    ~           

                  

    2. 设置网关及主机名

    [root@dhcpser ~]# vim /etc/sysconfig/network

    NETWORKING=yes

    NETWORKING_IPV6=yes

    HOSTNAME=dhcpser.tarena.com  (主机名)

    GATEWAY=192.168.10.254    (网关地址)

       

    3. 配置搜索域

    [root@dhcpser ~]#  vim /etc/hosts

    # Do not remove the following line, or various programs

    # that require network functionality will fail.

    127.0.0.1               localhost.localdomain localhost

    ::1             localhost6.localdomain6 localhost6

    192.168.10.253  dhcpser.tarena.com       dhcpser (搜索域)

       

    4. 重启服务

    [root@dhcpser ~]# service network restart

    [root@dhcpser ~]# chkconfig network on

       

    5. 验证 

    [root@dhcpser ~]# ifconfig eth0(验证ip地址)

    [root@dhcpser ~]# route -n(验证网络)

    [root@dhcpser ~]# hostname (验证主机名)

    [root@dhcpser ~]# ping dhcpser.tarena.com(验证搜索域)

       

    二)安装软件包

       

     1 检测是否安装dhcp

    [root@dhcpser ~]# rpm -q dhcp

           放入RHEL5.9 iso镜像

       

    2. 查看安装软件

    [root@dhcpser ~]# cd /misc/cd/Server 

    [root@dhcpser Server]# ls *vsftpd*

    vsftpd-2.0.5-28.el5.x86_64.rpm

       

    3. 安装vsftpd

    [root@localhost Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm

    warning: vsftpd-2.0.5-28.el5.x86_64.rpm: Header V3 DSA signature:  

    NOKEY, key ID 37017186

    Preparing...                                                 

    ########################################### [100%]

       1:vsftpd                                             

        ########################################### [100%]

       

       

    4. 检测安装结果

    [root@dhcpser Server]# rpm -q vsftpd

    vsftpd-2.0.5-28.el5

       

    5. 启动vsftpd服务

    [root@dhcpser Server]# service vsftpd restart

    [root@dhcpser Server]# chkconfig vsftpd on  //开机自启

       

     6. 文件输出

    [root@localhost ~]# ls -lh /etc > /var/ftp/pub/etc.txt

       

    7.新建用户

    [root@localhost ~]# useradd kaka

    [root@localhost ~]# echo "redhat" | passwd --stdin kaka

    Changing password for user kaka.

    passwd: all authentication tokens updated successfully.

       

    (二)客户端测试

       

         1. 匿名访问的用户ftp

    [root@localhost ~]#  ftp 192.168.10.253//使用ftp命令访问FTP服务器

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): ftp   //匿名FTP用户

    331 Please specify the password.

    Password:           //密码任意

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp> cd pub

    250 Directory successfully changed.

    ftp> ls

    227 Entering Passive Mode (192,168,10,253,234,9)

    150 Here comes the directory listing.

    -rw-r--r--    1 0        0           11571 Sep 13 20:02 etc.txt

    226 Directory send OK.

    ftp> get etc.txt      //下载

    local: etc.txt remote: etc.txt

    227 Entering Passive Mode (192,168,10,253,213,17)

    150 Opening BINARY mode data connection for etc.txt (11571 bytes).

    226 File send OK.

    11571 bytes received in 8.9e-05 seconds (1.3e+05 Kbytes/s)

    ftp> !ls

    anaconda-ks.cfg  etc.txt      install.log.syslog

    Desktop          install.log

    ftp>  put install.log     //上传

    local: install.log remote: install.log

    227 Entering Passive Mode (192,168,10,253,142,214)

    550 Permission denied.    //失败

    ftp> quit

    221 Goodbye.

       

         2. 本地用户访问

    [root@localhost ~]# lftp 192.168.10.253

    lftp 192.168.10.253:~> user kaka

    口令: 

    lftp kaka@192.168.10.253:~> put install.log   //上传

    33139 bytes transferred                  //成功      

    lftp kaka@192.168.10.253:~> ls

    -rw-r--r--    1 500      500         33139 Sep 13 20:26 install.log

     tp kaka@192.168.10.253:~> get etc.txt  //下载

    get: etc.txt: file already exists and xfer:clobber is unset 

    //成功 

     tp kaka@192.168.10.253:~>!ls

    anaconda-ks.cfg  etc.txt      install.log.syslog

    Desktop          install.log

       

    . 结果

       

        匿名用户与本地用户都可以登录

        匿名用户登录到/var/ftp,只能下载不能上传

       本地用户登录到本地用户的家目录,可以上传和下载

       

    .   问题和经验总结 

       

    故障现象:用户登录失败

    [root@localhost ~]#  ftp 192.168.10.253

    ftp: connect: No route to host

    ftp> 

       

    解决办法:关闭防火墙

    [root@localhost ~]# service iptables stop

       

    解决办法:查看服务器IP地址及端口号

      [root@localhost~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0

      [root@localhost ~]# ifconfig 

       

    二.禁止匿名用户登录修改FTP默认端口及禁锢本地用户在自己家目录

       

       实验要求:禁止匿名用户登录

               修改FTP默认端口为2121

               禁锢本地用户在自己家目录

       

    (一)在服务端配置

       

        1. 修改/etc/vsftpd/文件

       [root@dhcpser ~]# cd /etc/vsftpd/

       [root@dhcpser vsftpd]# ls

        ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh

       [root@dhcpser vsftpd]#cp vsftpd.conf vsftpd.conf.bak//备份配置文件

       [root@dhcpser vsftpd]# vim vsftpd.conf

       ...

       12 anonymous_enable=NO  //关闭匿名FTP访问

       ...

       119 listen_port=2121

       120 chroot_local_user=YES //禁锢本地用户 --> 宿主目录

         注:

    anonymous_enable=YES//(默认)允许匿名登录

    anon_upload_enable=YES//允许匿名上传文件

    anon_mkdir_write_enable=YES//允许匿名创建目录

    anon_other_write_enable=YES//允许其他写入权限

    write_enable=YES//(默认)允许写入(全局)

    anon_umask=022//设置上传文件权限掩码

       

    [root@dhcpser vsftpd]# service vsftpd restart

    关闭 vsftpd:                                              [确定]

    为 vsftpd 启动 vsftpd:                                 [确定]

       

    2. 重启vsftpd服务

    [root@dhcpser vsftpd]# service vsftpd restart

    关闭 vsftpd:                                              [确定]

    为 vsftpd 启动 vsftpd:                                 [确定]

       

    3. 查看端口

    [root@dhcpser vsftpd]# netstat -tulnp | grep vsftpd

    tcp 0  0 0.0.0.0:2121 0.0.0.0:*  LISTEN      4879/vsftpd     

          

    (二)客户端测试

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): ftp   //匿名用户

    331 Please specify the password.

    Password:

    530 Login incorrect.

    Login failed.                 //登录失败

    ftp> quit

    221 Goodbye.

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): kaka        //本地用户

    331 Please specify the password.

    Password:

    230 Login successful.                  //成功

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp> pwd

    257 "/"                 //登入位置已变为"/",

                              //实际是kaka的宿主目录

    ftp> ls

    227 Entering Passive Mode (192,168,10,253,113,26)

    150 Here comes the directory listing.

    -rw-r--r--    1 500      500         33139 Sep 13 20:26 install.log

    226 Directory send OK.

       

    三.黑/白名单

       

    实验要求:验证黑/白名单

       

    (一)服务端

       

    1. 新建用户

    [root@dhcpser ~]#  useradd jerry

    [root@dhcpser ~]# useradd mike

    [root@dhcpser ~]# echo "redhat" | passwd --stdin jerry

    Changing password for user jerry.

    passwd: all authentication tokens updated successfully.

    [root@dhcpser ~]# echo "redhat" | passwd --stdin mike

    Changing password for user mike.

    passwd: all authentication tokens updated successfully.

       

    2. 黑名单文件:/etc/vsftpd/ftpusers

    [root@dhcpser ~]# vim /etc/vsftpd/ftpusers 

    kaka

       

    3. 查看

    [root@dhcpser ~]# grep kaka /etc/vsftpd/ftpusers 

    kaka

       

    (二)客户端

       

    1. 验证kaka能否登录FTP

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): kaka

    530 Permission denied.

    Login failed.

    ftp> quit

    221 Goodbye.

       

    结论:不能登录

       

    (一)服务端

       

    4. 黑/白名单:/etc/vsftpd/user_list

    [root@dhcpser ~]# vim  /etc/vsftpd/user_list 

    jerry

       

    5. 查看

    [root@dhcpser ~]# grep jerry /etc/vsftpd/user_list 

    jerry

       

    (二)客户端

       

    2. 验证jerry能否登录FTP

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): jerry

    331 Please specify the password.

    Password:

    530 Login incorrect.

    Login failed.

    ftp> quit

    221 Goodbye.

       

    结论:不能登录

       

    6. 修改/etc/vsftpd/vsftpd.conf文件

    [root@dhcpser ~]# vim /etc/vsftpd/vsftpd.conf

    ...

    121 userlist_deny=NO

       

    7. 启动vsftpd服务

    oot@dhcpser ~]# service vsftpd restart

    关闭 vsftpd:                                              [确定]

    为 vsftpd 启动 vsftpd:                                 [确定]

       

    (二)客户端

       

    3. 验证jerry能否登录FTP

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): jerry

    331 Please specify the password.

    Password:

    230 Login successful.

    Remote system type is UNIX.

    Using binary mode to transfer files.

    ftp> quit

    221 Goodbye.

       

    结论:登录成功

       

      4.  验证mike能否登录FTP

    [root@localhost ~]# ftp 192.168.10.253 2121

    Connected to 192.168.10.253.

    220 (vsFTPd 2.0.5)

    530 Please login with USER and PASS.

    530 Please login with USER and PASS.

    KERBEROS_V4 rejected as an authentication type

    Name (192.168.10.253:root): kike

    530 Permission denied.

    Login failed.

    ftp> quit

    221 Goodbye

       

    验证结论:登录失败

       

    注:实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和ftpusers里

         面添加的账户去掉

       

    .   问题和经验总结

       

    黑名单文件:/etc/vsftpd/ftpusers

    黑/白名单:/etc/vsftpd/user_list

       

    1)将user_list作为黑名单(缺省)

    userlist_enable=YES//(默认)启用user_list列表文件

    userlist_deny=YES//(默认)

       

    2)改将user_list作为白名单

    userlist_enable=YES//(默认)启用user_list列表文件

    userlist_deny=NO//将user_list作为白名单

       

       

    四.连接限制、下载速度限制

       

      实验要求:本地用户登录到/data/ftproot目录

                up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户

                最多20个并发,每IP地址最多2个并发

                限制下载速度限制为100KB/s

       

    (一).客户端

       

    1. 新建用户

    [root@dhcpser ~]# useradd down

    [root@dhcpser ~]# echo "redhat" | passwd --stdin up

    Changing password for user up.

    passwd: all authentication tokens updated successfully.

    [root@dhcpser ~]# echo "redhat" | passwd --stdin down

    Changing password for user down.

    passwd: all authentication tokens updated successfully.

       

    2. 修改/etc/vsftpd/vsftpd.conf文件

    ...

     12 anonymous_enable=NO

    ...

     18 write_enable=YES

    ...

    117 userlist_enable=YES

    ...

    121 userlist_deny=NO   //将user_list作为白名单

    122 local_root=/data/ftproot

    123 max_clients=20   //允许的最大并发连接数

    124 max_per_ip=2       //每个IP地址最多允许多少连接

    125 local_max_rate=100000  //本地用户下载速度,Byte/s

       

    3.启动vsftpd服务

    [root@dhcpser ~]# service vsftpd restart

    关闭 vsftpd:                                              [确定]

    为 vsftpd 启动 vsftpd:                                 [确定]

       

    4. 设置权限

    [root@dhcpser ~]# setfacl -m u:up:rwx /data/ftproot/

    5. Up,down加入黑/白名单:/etc/vsftpd/user_list

    [root@dhcpser ~]# vim /etc/vsftpd/user_list 

    up

    Down

    [root@dhcpser ~]# tail -n 2 /etc/vsftpd/user_list 

    up

    down

       

    5.建下载测试文件

    [root@dhcpser ~]# dd if=/dev/zero of=/data/ftproot/local.tgz

     bs=1M count=1000

    1000+0 records in

    1000+0 records out

    1048576000 bytes (1.0 GB) copied, 7.60703 seconds, 138 MB/s

       

    . 结果验证

       

    [root@dhcpser~]#wget   

    ftp://up:redhat@192.168.10.253:2121/local.tgz

    --2014-09-1423:54:47--  

    ftp://up:*password*@192.168.10.253:2121/local.tgz

               => `local.tgz'

    Connecting to 192.168.10.253:2121... 已连接。

    正在以 up 登录 ... 登录成功!

    ==> SYST ... 完成。    ==> PWD ... 完成。

    ==> TYPE I ... 完成。  ==> 不需要 CWD。

    ==> SIZE local.tgz ... 1048576000

    ==> PASV ... 完成。    ==> RETR local.tgz ... 完成。

    长度:1048576000 (1000M)

       

     0% [                   ] 6,963,200   97.7K/seta 2h 53m  

       

       

    . 问题和经验总结

       

    建下载测试文件

    dd if=/dev/zero of=/var/ftp/anon.tgz bs=1M count=100

    dd if=/dev/zero of=/home/用户名/local.tgz bs=1M count=100 

  • 相关阅读:
    R语言nest_join()函数
    R语言行/列合并
    ffmpeg 命令将视频转化为图帧
    Natas Wargame Level20 Writeup(会话状态注入/篡改)
    vim简明教程--半小时从入门到精通
    笔记:Spring Cloud Hystrix 异常处理、缓存和请求合并
    【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)
    Android Handler消息处理顺序分析
    着色器语言之变量类型
    Redis源码分析(十一)--- memtest内存检测
  • 原文地址:https://www.cnblogs.com/jonathanyue/p/9301199.html
Copyright © 2020-2023  润新知