思路:

  • 关闭防火墙和selinux
  • 配置yum源
  • 软件三步曲(安装|确认|软件列表)
  • 了解配置文件—->(man 5 xxx.conf)
  • 根据需求通过修改配置文件完成服务的搭建
  • 启动服务、开机自启动
  • 测试验证

    一、FTP服务的客户端工具

    linux: ftp、lftp(客户端工具)

  • rpm -q ftp lftp

  • yum list | grep ftp yum list | grep lftp

二、FTP服务的基本配置

1.1 确认安装成功

  • rpm -q vsftpd

1.2 查案软件带来的文件列表

  • rpm -ql vsftpd

1.3 了解配置文件
主配置文件: man 5 vsftpd.conf

  • 取出不以# 开头的行,grep -v ^# /etv/vsftpd/vsftpd.conf

1.4 根据需求通过修改配置文件来完成服务的搭建
1.5 启动服务,开机自启动

  • chkconfig --list | grep vsftpd
  • chkconfig vsftpd on
  • 确认21端口是否是开启状态 netstat -nltp | grep 21

1.6 测试验证
client:

  • yum -y install ftp lftp
  • ftp 10.1.1.1 使用ftp 或anonymous 作为用户名登录

总结:

  • ftp 默认使用用户名和密码登录 ftp 或者匿名用户
  • lftp 默认使用的匿名用户登录
  • 匿名用户可以下载文件但是不能上传文件
  • 本地用户可以上传和下载文件

    需求一:允许匿名用户上传文件

  • man 5 vsftpd.conf 找到三个参数

    • echo "anon_mkdir_write_enable=YES" >> vsftpd.conf
    • echo "anon_other_write_enable=YES" >> vsftpd.conf
    • echo "anon_upload_enable=YES" >> vsftpd.conf
  • 重启服务
  • chmod o+w /var/ftp/pub 允许用户对服务端的扩展目录有写的权限

    • /var/ftp 数据目录的权限太大,解决: chmod o-w
    • 所以会登录时提示 500 OOPS:vsftpd:refusing to run with writable anonymous root

      需求二:下载其他匿名用户上传的文件

  • umask 077 file: 666-077=600 rw- —- —- dir: 777-077=700 rwx —- —-

  • echo "anon_umask=022" >> vsftpd.conf
  • 重启服务
  • 测试验证

    需求三:开启本地用户消息功能

    1)本地用户访问 —> /home/username
    2)匿名用户访问 —> /var/ftp

  • 配置文件中dirmessage_enable=YES 表示开启了消息功能

  • echo "welcome to myhome" >> ~/.message
  • echo "welcome to anon home" >> /var/ftp/.message
  • 测试验证。使用用户登录ftp时,就能看到提示消息

3)另外一种情况。只要你使用ftp连接服务端,就会看到消息

  • echo "banner_file=/etc/vsftpd/banner_file" >> vsftpd.conf
  • 编辑文件 /etc/vsftpd/banner_file 内容
  • 重启服务
  • 测试验证

    需求四:禁锢本地用户的家,只能在自己的家中活动

    1) 禁锢所有的本地用户

  • echo "chroot_local_user=YES" >> vsftpd.conf

  • 重启服务,测试验证

2) 禁锢大部分用户,允许小部分

  • echo "chroot_local_user=YES" >> vsftpd.conf
  • echo "chroot_list_enable=YES" >> vsftpd.conf
  • echo "chroot_list_file=/etc/vsftpd/chroot_list" >> vsftpd.conf
  • 编辑 /etc/vsftpd/chroot_list 文件, echo stu2 >> chroot_lsit VIP用户列表文件
  • 重启,测试验证

3) 允许大部分,禁锢小部分

  • echo "chroot_local_user=NO" >> vsftpd.conf或者将此行参数注释掉
  • echo "chroot_list_enable=YES" >> vsftpd.conf
  • echo "chroot_list_file=/etc/vsftpd/chroot_list" >> vsftpd.conf
  • 步骤类似上面

    需求五:指定匿名用户和本地用户上传文件的目录

  • echo "anon_root=/anon/data" > vsftpd.conf

  • echo "local_root=/local/data" > vsftpd.conf
    • anon_root=/anon chmod o+w /anon/data
  • 重启,测试验证

    FTP服务的访问控制

    FTP服务的自身访问控制(对象访问控制)

    需求1:不允许stu1 用户访问ftp服务

  • echo stu1 >> /etc/vsftpd/ftpusers 添加用户名到黑名单中去

需求2:只允许stu2用户访问ftp服务

  • echo "userlist_deny=NO" >> vsftpd.conf 将user_list 文件变成白名单
  • echo stu2 >> user_list 添加用户名到白名单中

总结:

  1. 用户在ftpusers 文件中,那么不能访问ftp服务器
  2. 用户在user_list 文件中,如果该文件是白名单,那么只在该文件中的用户可以访问ftp服务器
  3. 如果user_list 文件是白名单,用户既在ftpusers 又在user_list 中,那么ftpusers黑名单拒绝优先

    FTP服务的网络访问控制

  • 支持tcp_wrappers
    /etc/hosts.allow
    /etc/hosts.deny
  • 查看服务名称, rpm -ql openssh-server
  • 判断一个服务是否支持tcp_wrappers ldd /usr/sbin/sshd | grep libwrap
  • 写法

    1. /etc/hosts.deny
    2. vsftpd:all
    3. vsftpd:all EXCEPT 192.168.0.2
    4. vsftpd:192.168.0.254
    5. vsftpd:192.168.0.0/255.255.255.0
    6. vsftpd:192.168.0.0/255.255.255.0,10.1.1.0/255.255.255.0 EXCEPT 192.168.0.254
    7. 注意: 子网掩码不支持192.168.0.0/24 这种写法
  • 或者托管给xinetd 服务去管理