Linux下的vsftpd服务配置

**

Redhat下的vsftpd服务配置

**

什么是vsftpd服务?

FTP(文件传输协议)全称是:Very Secure FTP Server。 FTPINTERNET上仍常用的最老的网络协议之一,它为系统系统提供了通过网络与远程服务器进行传输的简单方法,在RED HAT ENTREPRISE LINUX 6 中,FTP服务器包的名字称为VSFTPD,他代表Very Secure File TransferProtocol Damon 服务器名称也叫做 vsftpd

vsftp提供三种登陆方式:1.匿名登录 2.本地用户登录 3.虚拟用户登录

vsftpd的特点:1.较高的安全性需求 2.带宽的限制 3.创建支持虚拟用户 4.支持IPV6 5.中等偏上的性能 6.可分配虚拟IP 7.高速

FTP服务分为tftp(文件推送)vsftpd(文件传输,安全)fastftp,qftp,lftp(浏览器)

部署FTP服务器

  • 首先:在虚拟机中修改他的主机名为ftp_server, 方便识别主机
hostnamectl set-hostname ftp_server.westos.com

在这里插入图片描述

  • 修改网络配置,并重启网络

在这里插入图片描述

  • 搭建yum源,下载vsftpd,lftp服务,并开启服务。
    在这里插入图片描述
    在这里插入图片描述

  • 禁用内核防火墙

vim /etc/sysconfig/selinux     
更改SELINUX=disabled

在这里插入图片描述

  • 设置防火墙允许ftp服务,并重载防火墙

在这里插入图片描述
在这里插入图片描述
那么前期的配置已经完成!
下面进入实验环节!!!!
首先介绍一下FTP服务的基本信息

  • 软件安装包:vsftpd
  • 默认发布目录:/var/ftp
  • 协议接口:21/tcp
  • 服务配置文件:/etc/vsftpd/vsftpd.conf
  • 报错的ip解析
500文件系统权限过大
530用户认证失败,密码输错或者在服务器的黑名单中
550服务本身功能未开启或配置文件有问题
553服务器上文件系统的权限过小,服务未拒绝

实验一:匿名用户的设定

配置文件:/etc/vsftpd/vsftpd.conf, 每次修改完后就需要重启服务

systemctl restart vsftpd.service
  1. 匿名用户是否可以登陆 (12行) anonymous_enable=YES|NO
  2. 匿名用户上传(29行)anon_upload_enable=YES
    write_enable=YES
    在这里插入图片描述
    匿名用户上传功能
    在这里插入图片描述

在这里插入图片描述
显示550服务本身功能未开启
将anon_upload_enable=YES
在这里插入图片描述
报错553,显示文件系统权限过小,我们需要修改/var/ftp/pub目录的权限
在这里插入图片描述
修改文件权限

chgrp ftp /var/ftp/pub        //修改目录所属组
chmod 775 /var/ftp/pub    //修改权限775

在这里插入图片描述

匿名用户家目录修改
在根目录下创建一个新的文件夹作为家目录
创建文件
在这里插入图片描述
修改配置文件
在这里插入图片描述
修改以后家目录
在这里插入图片描述
匿名用户上传文件默认权限修改anon_umask=022
在这里插入图片描述

在这里插入图片描述

匿名用户建立目录
在这里插入图片描述
创建文件
在这里插入图片描述
匿名用户下载
在这里插入图片描述
在这里插入图片描述
匿名用户删除
在这里插入图片描述
在这里插入图片描述
匿名用户使用的用户身份修改
在这里插入图片描述
最大上传速率
在这里插入图片描述
在这里插入图片描述
最大连接数
在这里插入图片描述

本地用户的设定

本地用户指的是服务端存在的用户
本地用户是否可以登录
在这里插入图片描述
在这里插入图片描述

ftp是否对登陆用户可写
修改为NO,不可写
在这里插入图片描述
在这里插入图片描述
修改回YES,可删除
在这里插入图片描述
在这里插入图片描述
本地用户家目录修改
在这里插入图片描述
在这里插入图片描述
本地用户上传文件权限修改
在这里插入图片描述
修改以后文件权限
在这里插入图片描述
限制本地用户浏览目录
所有本地用户都被锁定在自己家里
在这里插入图片描述
在这里插入图片描述
修改本地用户的家目录权限

chmod u-w /home/student

在这里插入图片描述

用户黑名单的建立

在这里插入图片描述
在/etc/vsftpd/chroot_list文件中写入用户名,该用户就被锁在自己的家目录
在这里插入图片描述
在这里插入图片描述

用户白名单的建立

在这里插入图片描述
白名单中的不会被锁
在这里插入图片描述
限制本地用户的登陆
用户永久黑名单 /etc/vsftpd/ftpusers
将student添加到/etc/vsftpd/ftpusers中
在这里插入图片描述
在配置文件中添加userlist_deny=YES,重启服务
在这里插入图片描述
student登入失败
在这里插入图片描述
westos登陆成功
在这里插入图片描述

FTP虚拟用户的设定

Linux系统中能创建的用户数量是有限的,但是如果我们需要创建无数的用户要怎么办?我们可以设置虚拟用户。
可以通过/etc/login.def中读取创建用户规则,可以看到数量是有限的。
在这里插入图片描述
创建虚拟帐号身份vim /etc/vsftpd/login
在这里插入图片描述
对文件进行加密

db_load -T -t hash -f login login.db       

在这里插入图片描述
在/etc/pam,d/westos文件中写入以下内容
在这里插入图片描述
在配置文件中写入以下内容
在这里插入图片描述
使用创建的虚拟用户登陆
在这里插入图片描述
虚拟用户配置独立
目的是让虚拟用户相互独立,只能查看自己的家目录
先给每个虚拟用户创建一个家目录

在这里插入图片描述
修改配置文件添加以下内容
在这里插入图片描述
使用创建的用户访问家目录
在这里插入图片描述
虚拟用户的权限设定
对创建的虚拟用户权限进行设定,使只有user1能上传文件
在/etc/vsftp新建目录和文件,名为westos,添加以下内容

在这里插入图片描述
在这里插入图片描述
在配置文件中,将匿名用户上传文件功能注销
并添加内容,指向刚才创建的目录,重启服务
在这里插入图片描述
使用user1和user2分别测试
在这里插入图片描述
在这里插入图片描述

vsftpd搭建步骤 1、首先安装vsftpd,并设置开机启动 yum -y install vsftpd chkconfig vsftpd on 2、基于虚拟用户配置,(所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统)  2.1 配置参数 [root@ftp vuser_conf]# sed -n '/^[^#]/P' /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/xferlog xferlog_std_format=YES idle_session_timeout=600 data_connection_timeout=120 ascii_upload_enable=YES ascii_download_enable=YES chroot_list_enable=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES guest_enable=YEs guest_username=ftp user_config_dir=/etc/vsftpd/vuser_conf pasv_enable=YES pasv_min_port=40000 pasv_max_port=40080 pasv_promiscuous=YES accept_timeout=60 connect_timeout=60  2.2 参数解释 [root@ftp /]# sed -n '/^[^#]/P' /etc/vsftpd/vsftpd.conf #设定不允许匿名访问 anonymous_enable=NO #设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问 local_enable=YES #允许用户上传数据(包括文档与目录) write_enable=YES #建立新目录(775)与档案(644)的权限 local_umask=022 #若目录下有.message则显示该文档内容 dirmessage_enable=YES #启动登录文件记录,记录于 /var/log/xferlog xferlog_enable=YES #支持主动式联机功能 connect_from_port_20=YES #如果上一个xferlog_enable=YES的话,这里可以设定了!这个是登录档案的档名。 xferlog_file=/var/log/xferlog #是否设定为 wu ftp 相同的登录档格式?预设为 NO ,因为登录档会比较容易读! 不过,如果你有使用 wu ftp 登录文件的分析软件,这里才需要设定为 YES xferlog_std_format=YES #若匿名者发呆超过 10 分钟就断线 idle_session_timeout=600 #如果服务器与客户端的数据联机已经成功建立 (不论主动还是被动联机),但是可能由于线路问题导致 120 秒内还是无法顺利的完成数据的传送,那客户端的联机就会被我们的 vsftpd 强制剔除! data_connection_timeout=120 #如果设定为 YES ,那么 client 就优先 (预设) 使用 ASCII 格式上传文件。 ascii_upload_enable=YES #如果设定为 YES ,那么 client 就优先 (预设) 使用 ASCII 格式下载文件。 ascii_download_enable=YES #是否启用 chroot 写入列表的功能?与底下的 chroot_list_flie 有关!这个项目得要开启,否则底下的列表档案会无效。 chroot_list_enable=YES #若设定为 YES 表示 vsftpd 是以 standalone 的方式来启动的!预设是 NO !所以我们的 CentOS 将它改为 YES !这样才能使用 stand alone 的方式来唤醒。 listen=YES #这个是 pam 模块的名称,我们放置在 /etc/pam.d/vsftpd 即是这个。 pam_service_name=vsftpd #支持 /etc/vsftpd/user_list 档案内的账号登入管控! userlist_enable=YES #支持 TCP Wrappers 的防火墙机制 tcp_wrappers=YES #若这个值设定为 YES 时,那么任何实体账号,均会被假设成为 guest (所以预设是不开放的)! 至于访客在 vsftpd 当中,预设会取得 ftp 这个使用者的相关权限。但可以透过 guest_username 来修改。 guest_enable=YES #指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了 guest_username=ftp # FTP服务文件(配置文件名=虚拟用户名) user_config_dir=/etc/vsftpd/vuser_conf #支持数据流的被动式联机模式(passive mode),一定要设定为 YES pasv_enable=YES #在防火墙配置内开启40000到40080端口(没有测试过) -A INPUT -m state --state NEW -m tcp -p -dport 40000:40080 -j ACCEPT pasv_min_port=40000 pasv_max_port=40080 #是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用) pasv_promiscuous=YES #当用户以被动式 PASV 来进行数据传输时,如果服务器启用 passive port 并等待 client 超过 60 秒而无回应, 那么就给他强制断线!这个设定值与 connect_timeout accept_timeout=60 #单位是秒,在数据连接的主动式联机模式下,我们发出的连接讯号在 60 秒内得不到客户端的响应,则不等待并强制断线 connect_timeout=60  2.3 FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 一、PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。 二、PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。 从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同。而FTP的复杂性就在于此。 3 进行认证  安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包 yum install db4 db4-utils  创建用户密码文本,注意奇行是用户名,偶行是密码 [root@ftp /]# cat /etc/vsftpd/vuser_passwd.txt lixiang 8qu.com.cn shuaicong 8qu.com.cn gaojingyuan 8qu.com.cn  生成虚拟用户认证的db文件 db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db 注:(每添加一用户和秘密就得生成一次)  编辑认证文件,全部注释掉原来语句,再增加以下两句 [root@ftp /]# cat /etc/pam.d/vsftpd #%PAM-1.0 #session optional pam_keyinit.so force revoke #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #auth required pam_shells.so #auth include password-auth #account include password-auth #session required pam_loginuid.so #session include password-auth auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd  创建虚拟用户配置文件 mkdir /etc/vsftpd/vuser_conf/ -p [root@ftp /]# cd /etc/vsftpd/vuser_conf/  文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效 [root@ftp /]# cat /etc/vsftpd/vuser_passwd.txt lixiang 8qu.com.cn shuaicong 8qu.com.cn gaojingyuan 8qu.com.cn [root@ftp /]# cd /etc/vsftpd/vuser_conf/ [root@ftp vuser_conf]# ll total 12 -rw-r--r-- 1 root root 159 Apr 1 17:57 gaojingyuan -rw-r--r-- 1 root root 161 Apr 1 16:27 lixiang -rw-r--r-- 1 root root 161 Apr 1 17:00 shuaicong  虚拟用户根目录,根据实际情况修改 #指定虚拟用户的具体主路径。 local_root=/data/ftp #设定可以进行写操作 write_enable=YES # umask = 022 时,新建的目录 权限是755,文件的权限是 644 umask = 077 时,新建的目录 权限是700,文件的权限时 600。这里应该是anonymous用户创建的文件权限。 anon_umask=022 #仅允许 anonymous 具有下载可读档案的权限 anon_world_readable_only=NO #是否让 anonymous 具有上传数据的功能,默认是 NO,如果要设定为 YES ,则 anon_other_write_enable=YES 必须设定 anon_upload_enable=YES #是否让 anonymous 具有建立目录的权限?默认值是 NO!如果要设定为 YES, 那么 anony_other_write_enable 必须设定为 YES ! anon_mkdir_write_enable=YES #是否允许 anonymous 具有除了写入之外的权限?包括删除与改写服务器上的档案及档名等权限。预设当然是 NO!如果要设定为 YES, anon_other_write_enable=YES 4 设置FTP根目录权限  最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置777权限 mkdir /data/ftp chmod -R 755 /data chmod -R 777 /data/ftp [root@ftp data]# ls -ld /data/ drwxr-xr-x 3 root root 4096 Apr 1 16:25 /data/ [root@ftp data]# ll total 4 drwxrwxrwx 2 root root 4096 Apr 1 17:21 ftp  建立限制用户访问目录的空文件(不需要也得创建) touch /etc/vsftpd/chroot_list  如果启用vsftpd日志需手动建立日志文件 touch /var/log/xferlog touch /var/log/vsftpd.log  重启iptabls和vsftpd service iptables restart service vsftpd restart 5 Selinux和防火墙  该关闭的关闭,该放行的放行 1 2 3 4 5 #关闭selinux/iptables sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 chkconfig iptables off service iptables stop 常见问题 如果登录时出现 500 OOPS: priv_sock_get_result. Connection closed by remote host. 这样的错误,需要升级pam yum update pam 6日志分析 vsftpd的两个日志文件分析如下: /var/log/xferlog 记录内容举例 /var/log/vsftpd.log Sat Apr 1 16:34:14 2017 1 10.13.98.101 55 /vsftpd(1).txt b _ i g lixiang ftp 0 * c /var/log/xferlog日志文件中数据的分析和参数说明 记录数据 参数名称 参数说明 Thu Sep 6 09:07:48 2007 当前时间 当前服务器本地时间,格式为: DDD MMM dd hh:mm:ss YYY 7 传输时间 传送文件所用时间,单位为秒 192.168.57.1 远程主机名称/IP 远程主机名称/IP 4323279 文件大小 传送文件的大小,单位为byte /home/student/phpMyadmin- 2.11.0-all-languages.tar.gz 文件名 传输文件名,包括路径 b 传输类型 传输方式的类型,包括两种: a以ASCII传输 b以二进制文件传输 – 特殊处理标志 特殊处理的标志位,可能的值包括: _ 不做任何特殊处理 C 文件是压缩格式 U 文件是非压缩格式 T 文件是tar格式 i 传输方向 文件传输方向,包括两种: o 从FTP服务器向客户端传输 i 从客户端向FTP服务器传输 r 访问模式 用户访问模式,包括: a 匿名用户 g 来宾用户 r 真实用户,即系统中的用户 student 用户名 用户名称 ftp 服务名 所使用的服务名称,一般为FTP 0 认证方式 认证方式,包括: 0 无 1 RFC931认证 * 认证用户id 认证用户的id,如果使用*,则表示无法获得该id c 完成状态 传输的状态: c 表示传输已完成 i 表示传输示完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值