暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ftp服务搭建

Linux系统运维笔记 2019-10-22
187
  • 写在前面:

众所周知ftp服务的安全性一般,现在企业应用中已经逐渐淘汰ftp应用,目前只有极少数的开发者使用ftp做文件共享。

本文操作系统版本为Centos7.5,ip为192.168.10.6


  • 软件包安装:

yum instasll vsftpd ftp  

# vsftpd 为服务端,ftp为客户端,方便登陆测试使用。


  • 修改配置文件:

vsftp配置文件非常简单,只有一个配置文件。默认位置在/etc/vsftpd/vsftpd.conf

如果英文好可以直接man vsftpd.conf 即可查看各个配置的详细参数。


案例一允许匿名登陆,匿名用户只能下载文件(读权限)没有上传和修改删除权限(写和执行权限),同时指定匿名访问目录为/var/www/html。

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES # 允许匿名用户登陆,默认允许。
anon_root=/var/www/html # 指定匿名用户登陆后的目录,默认为/var/ftp


启动服务。systemctl start vsftpd.service

测试:浏览器ftp://192.168.10.6   命令行测试:ftp 192.168.10.6

注意:命令行登陆匿名用户名为anonymous  密码为空

此种方式常用在内网用户访问,一般不对外开放,对外开放需要进行访问限制和流量限制。


案例二:允许匿名访问,并且匿名用户可以上传下载修改文件(不推荐使用)。

vim /etc/vsftpd/vsftpd.conf
anon_umask=022    # 设置匿名用户创建文件umask
anon_upload_enable=YES    # 允许匿名上传
anon_mkdir_write_enable=YES   # 允许匿名创建文件夹
anon_other_write_enable=YES   # 允许匿名重命名和删除文件
anon_root=/tmp/ftp        # 匿名用户目录


# chmod 777 /tmp/ftp/* -R  # 增加权限

不推荐这样做,存在很大的安全问题,匿名用户权限太大。一般如果需要匿名访问也就是案例一就足够了。


案例三:不允许匿名访问。

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO    # 禁止匿名用户登陆,默认允许。

在vsftp配置文件中基本上所有以anon开头的配置都是与匿名用户相关,如果不允许匿名用户登录,直接在开头的anonymous_enable=NO设置即可,在后续配置中不用再理会anon相关的配置。


案例四:设置本地用户访问路径为/var/www/html

默认本地用户登录的目录为自己的家目录,比如用户test的登陆目录就是/home/test。

vim /etc/vsftpd/vsftpd.conf
local_root=/var/www/html # 本地用户登录后路径

如果需要指定不同的用户登录后需要不同的路径,可以直接将指定的路径设置为用户的家目录。比如用户a登录后访问/tmp/a目录,则直接useradd -d /tmp/a 即可


案例五:设置本地用户上传

本地用户权限同样和登录路径权限设置有关。默认有上传权限。


注意:本地用户登录限制

默认在/etc/vsftpd/ftpusers和 /etc/vsftpd/user_list文件中的用户不可以登录ftp,比如root用户不允许登录ftp


注意:权限问题

匿名用户的登录目录(默认目录),应该保持默认755权限,例如设置anon_root=/tmp/ftp 则ftp目录权限应该保持755.

匿名用户需要上传权限,则其父目录需要写权限,所以如果需要开启匿名用户写权限则可以直接在其目录下赋予777权限。例如案例二,所以案例二是非常危险的行为。不建议使用。


注意:套笼限制chroot

vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #开启chroot,将用户限定在自己的主目录中。
chroot_list_enable=YES #是否启用chroot写入列表功能。
chroot_list_file=/etc/vsftpd/chroot_list #chroot用户列表


# touch /etc/vsftpd/chroot_list

此为本地用户套笼设置,匿名用户默认开启套笼,不会切换到其他路径。


功能:访问限制,只允许特定ip访问。

访问限制实现的方式有很多种,基于上层网络的的可以在硬件防火墙/路由器/三层交换机等网络设备上设置。基于系统级别的可以在/etc/下面的hosts.deny和hosts.allow文件设置或者iptables/firewalld设置。这里使用hosts.allow 和 hosts.deny配置

修改/etc/hosts.deny

加入vsftpd : ALL

修改/etc/hosts.allow

加入vsftpd:.admin.net

       vsftpd:192.168.0.

       vsftpd:192.168.0.0/255.255.255.0

第一行表只有admin.net这个域里的主机允许访问vsftpd服务,注意admin.net前面的那个点(.);

第二行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意0后面的点(.);

第三行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意这里不能写为192.168.0.0/24。

vsftpd服务是由xinetd管理的话,可以修改/etc/xinetd.d/

/vsftpd配置文件,加入only_from  =  ip段即可

注意:hosts.allow 优先级比 hosts.deny要高。


功能:限制流量速率。

vim /etc/vsftpd/vsftpd.conf  # 增加以下两行

local_max_rate=2000000   # 限制本地用户传输速率,2M/s

anon_max_rate=2000000  # 限制匿名用户传输速率,2M/s


说明:ftp不支持软连接

mount --bind source_path dest_path 可以通过挂载来支持


  • 写在最后:

vsftp服务的配置相对简单,仅有一个配置文件,各个配置参数也是类似搭积木的方式,需要哪些功能就在配置文件中配置即可。

其实所有的配置文件在man vsftpd.conf中都可以找到。但是谁又愿意去看英文文档呢~

文章转载自Linux系统运维笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论