vsftpd实战练习

Vsftpd文件系统服务

实验:vsftpd中禁止匿名用户的登录,yixuan与xiaozhu同时映射系统用户vuser,但是两个虚拟用户却一个有上传权限,一个没有,主要的原因是在vsftpd.conf配置文件中有一个user_upload_dir=/etc/vsftpd/vusers.conf.d

1.Vsftpd服务介绍

vsftpd:very secure ftpdaemon一个安全的ftp服务

启动文件:/usr/sbin/vsftpd

主配置文件:/etc/vsftpd/vsftpd.conf

CentOS6:

启动程序:/etc/rc.d/init.d/vsftpd

开机自启:chkconfig  vsftpd on

CentOS7:

启动程序:/usr/lib/systemd/system/vsftpd.service

开机自启:systemctl  enable vsftpd.service

2.vsftpd配置文件的格式

配置文件:/etc/vsftpd/vsftpd.conf

配置文件中指令格式:directive=value

匿名用户:

anonymous_enable=YES:允许匿名用户登录

anon_upload_enable=YES:匿名用户上传权限

注意:匿名用户的上传操作;生效要依赖于write_enable=YES;

anon_mkdir_write_enable=YES:匿名用户创建目录的权限;

anon_other_write_enable:匿名用户的删除,重命名操作权限;

本地用户:

local_enable:所有的非匿名的生效,都依赖于此指令;

local_umask=022:本地用户上传文件的权限掩码;

说明:文件掩码666,目录掩码777

目录消息:

dirmessage_enable=YES:用户第一次进入目录时,vsftpd会查看.message文件,并将其内容显示给用户;

message_file指定文件路径,而不使用默认的.message;

数据传输日志:

xferlog_enable:是否支持上传及下载日志

xferlog_std_format:是否使用上传标准格式日志

xferlog_file=/var/log/xferlog:上传下载日志文件路径

数据传输模式:

connect_from_port_20:是否启用PORT模式

修改匿名用户上传的文件的属主:

chown_uploads:是否修改;

chown_username:启用chown_uploads指令时,将文件属主修改为此指令指定的用户;默认为root;

chown_upload_mode:设定匿名用户上传的文件的权限;默认为600;

设定会话超时时长:

idle_session_timeout:空闲会话超时时长;

connect_timeout:PORT模式下,服务器连接客户端的超时时长;

data_connection_timeout:数据传输的超时时长;

命令连接的监听端口:

listen_port:默认为21;

设定连接及传输速率:

ocal_max_rate:本地用户的最大传输速率,单位是字节;默认为0,表示无限制;

anon_max_rate:匿名用户的最大传输速率;

max_clients:最大并发连接数;

max_per_ip:每个IP所允许发起的最大连接数;

禁锢本地用户:

chroot_local_user=YES:禁锢所有本地用户;

注意:要求用户不能对家目录有写权限;

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

禁锢指定用户于家目录中;

userlist_enable

启用时,vsftpd将加载一个由userlist_file指令指定的用户列表文件;此文件中的用户是否能访问vsftpd服务取决于userlist_deny指令;

userlist_deny=YES:表示此列表为黑名单;

userlist_deny=NO:表示此列表为白名单;

3.虚拟用户

基于数据库表中的某一个用户实现登录访问

基于db文件: /etc/vsftpd/vusers.txt文件

格式:

奇数行:用户名

偶数行:密码

基于mysql服务:

[注意]vsftpd框架是基于pam认证,如果想要使用mysql,就要使用pam认证,对于pam来说能支持N中数据库,默认情况下是不支持mysql驱动的,在/lib64/security目录下显示pam支持的所有驱动,对于mysql,我们需要自己编译

(1)编译程序包之前提供开发环境

[[email protected] ~]# yum -y  groupinstall "Development Tools" "Server Platform 
Development"

(2)提供mariadb-servermaradb-devel openssl-devel

[[email protected] ~]#  yum -y install pam-devel openssl-develmariadb-devel

(3)开启mariadb服务并开机开启

(4)下载pam_mysql-0.7RC1.tar.gz编译安装

[提示]./conifgure –help查看编译的选项参数信息

[[email protected] ~]# ./configure--with-mysql=/usr --with-openssl=/usr --with-pam=/usr--with-
pam-mods-dir=/lib64/security
[[email protected] ~]# make && makeinstall

(5)进入mysql创建一个数据库,在数据库中创建一个表,(用户的密码采用的是password加密方式,因此我们要考虑pam是否支持password的加密方式)

[[email protected] security]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.44-MariaDBMariaDB Server
Copyright (c) 2000, 2015,Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
MariaDB [(none)]> createdatabase vsftpd;
Query OK, 1 row affected (0.00sec)
MariaDB [(none)]> use vsftpd;
Database changed
MariaDB [vsftpd]> createtable users(
    ->id int AUTO_INCREMENT not null primary key,
    ->name char(30)not null,
    ->passwd char(48) binary not null);
Query OK, 0 rows affected (0.10sec)
MariaDB [vsftpd]> desc users;
+--------+----------+------+-----+---------+----------------+
| Field  | Type     | Null | Key |Default | Extra          |
+--------+----------+------+-----+---------+----------------+
| id     | int(11)  | NO  | PRI | NULL    |auto_increment |
| name   | char(30)| NO   |     | NULL    |                |
| passwd | char(48) | NO   |    | NULL    |                |
+--------+----------+------+-----+---------+----------------+
3 rows in set (0.08 sec)
MariaDB [vsftpd]> insertinto users(name,password) value (‘xiaozhu‘,password(‘xiaozhu‘));
ERROR 1054 (42S22): Unknowncolumn ‘password‘ in ‘field list‘
MariaDB [vsftpd]> insertinto users(name,passwd) value (‘xiaozhu‘,password(‘xiaozhu‘));
Query OK, 1 row affected (0.06sec)
MariaDB [vsftpd]> insertinto users(name,passwd) value (‘yixuan‘,password(‘yixuan‘));
Query OK, 1 row affected (0.01sec)
MariaDB [vsftpd]> select *from users;
+----+---------+-------------------------------------------+
| id | name    |passwd                                   |
+----+---------+-------------------------------------------+
|  1 | xiaozhu | *9C9ABCC50CA3281C861B0C79CA0B67274D5477B4|
|  2 | yixuan  | *36728ECF64E6D5EADAF4C3234142F116A64CCEAE|
+----+---------+-------------------------------------------+
2 rows in set (0.00 sec)
MariaDB [vsftpd]> grant select on vsftpd.*to [email protected] identified by ‘mysql‘;
Query OK, 0 rows affected (0.11 sec)
MariaDB [vsftpd]> grant select on vsftpd.*to [email protected]’localhost’ identified by ‘mysql‘;
#正向与反向解析
MariaDB [vsftpd]> flush privileges;
Query OK, 0 rows affected (0.06 sec)
MariaDB [vsftpd]> exit
Bye

(6)检验授权是否正确

[[email protected] security]# mysql -u vsftpd -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 5.5.44-MariaDBMariaDB Server
Copyright (c) 2000, 2015,Oracle, MariaDB Corporation Ab and others.
Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ toclear the current input statement.
MariaDB [(none)]> showdatabases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| vsftpd             |
+--------------------+
3 rows in set (0.00 sec)
 
MariaDB [(none)]> use vsftpd;
Reading table information for completion oftable and column names
You can turn off this feature to get aquicker startup with -A
 
Database changed
MariaDB [vsftpd]> select *from users;
+----+---------+-------------------------------------------+
| id | name    |passwd                                   |
+----+---------+-------------------------------------------+
|  1 | xiaozhu | *9C9ABCC50CA3281C861B0C79CA0B67274D5477B4|
|  2 | yixuan  | *36728ECF64E6D5EADAF4C3234142F116A64CCEAE|
+----+---------+-------------------------------------------+
2 rows in set (0.00 sec)
 
MariaDB [vsftpd]>

(7)vim /etc/vsftpd/vsftpd.conf中的pam_service_name=vsftpd就是数据库用户的认证文件

Vsftpd文件在/etc/pam.d/vsftpd文件

(可以通过man vsftpd.conf查看pam_service_name参数找到vsftpd相对路径)

(8)在/etc/pam.d/下创建一个认证文件pam.mysql

Pa.mysql配置文件内容

auth   required pam_mysql.so user=vsftpd passwd=mageedu host=localhostdb=vsftpd table=
users usercolumn=name passwdcolumn=passwdcrypt=2
account required pam_mysql.so user=vsftpdpasswd=mageedu host=localhost db=vsftpd table=
usersusercolumn=name passwdcolumn=passwd crypt=2

(扩展)查看password加密的crypt值,我们可以查看pam_mysql-0.7RC1.tar.gz解压缩之后文件中的README文件中的crypt选项

(9)因为任何的虚拟用户都必须要映射到系统用户,因此要创建一个系统用户,作为映射使用的用户

# useradd -s /sbin/nologin -d /ftproot vuser

(10)映射用户的读写权限

# chmod go+rx /ftproot/
# chmod –w /ftproot/

(11)确保/etc/vsftpd/vsftpd.conf中的pam_service_name=pam.mysql

(12)在/etc/vsftpd/vsftpd.conf文件中添加

guest_ensble=YES来宾用户可以访问

guest_username=vuser 把所有来宾用户映射到系统用户vuser

(13)当然我们也可以关闭匿名用户

(14)如何能在文件系统中上传文件呢

注意两点:必须开启匿名上传功能的权限,并且用户对文件系统具有写权限

 #chown vuser /ftproot/upload

(15)vim /etc/vsftpd/vsftpd.conf 开启anon_upload_enable=YES

思考:两个用户同时映射一个系统用户,如何控制一个用户能上传,一个用户不能上传呢?

1.    首先取消匿名上传权限#anon_upload_enable=YES

2.    Mkdir /etc/vsftpd/vusers.conf.d

3.    cd /etc/vsftpf/vusers.conf.d

4.    创建一个yixuan的文件vim yixuan

5.    anon_upload_enable=YES

6.    cp yixuan xiaozhu

7.       vim /etc/vsftpd/vsftpd.conf 添加user_config_dir=/etc/vsftpd/vusers.conf.d

8.    systemctl restart vsftpd.service

走到这里vsftpd的配置就完成了,下面是vsftpd.conf的配置文件

anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
# anon_upload_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
user_config_dir=/etc/vsftpd/vusers.conf.d
pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
userlist_enable=YES
tcp_wrappers=YES
时间: 2024-10-08 20:14:40

vsftpd实战练习的相关文章

【中级】RHEL6.5下部署vsftpd实战全集

  1.          实验需求: 1)     使用RPM包安装vsftpd服务 2)     实现匿名用户访问,验证仅可以访问和下载,不可以上传 3)     实现匿名用户可上传.下载.修改等完全权限(现实环境中这样的需求可能性很小) 4)     实现把登陆的用户禁锢在自己的家目录中 5)     实现限制某些用户的访问 6)     实现虚拟用户的访问 7)     实现针对不同的虚拟用户拥有不同的权限 2.          实验环境: Linux服务器系统版本:Red Hat E

Vsftp的PASV mode(被动模式传送)和Port模式及 Linux下VsFTP配置全方案

什么叫做PASV mode(被动模式传送)?他是如何工作的? FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别. 先假设客户端为C,服务端为S. Port模式: 当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S

VSFTPD虚拟用户实战配置

FTP是文件传输协议,正是由于这种协议使得主机间可以共享文件. FTP 使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输. vsftpd是一款在LINUX发行版中最主流的FTP服务器程序:特点是小巧轻快,安全易用:能让其自身特点得发发挥和掌握.如果使用系统用户登录FTP,是比较危险的,所以我们主要采用vsftpd虚拟用户登录FTP服务器进行常见的操作,当然配置就相对复杂一点.(centos7安装) 1.首先安装FTP以及虚拟用户需要用到的软件及认证模块 yu

vsftpd配置实战

首先检查是否安装了db软件, rpm -qa|grep db4 如果没有安装,则安装,这里就不介绍了,有很多. 安装完db4数据库软件,正式进入vsftpd服务器. 1.添加虚拟用户vdear adduser -d /home/vdear -s /sbin/nologin vdear 2.添加3个文件夹, mkdir up down all 3.改变文件夹所属用户 chown vdear.vdear up chown vdear.vdear down chown vdear.vdear all

公司网站,邮箱,文件服务器搭建实战

项目案例: Tarena公司要求实现公司网站,邮箱,文件服务器的运营,并保证安全可靠,方便管理. 项目分析: 为实现要求我们首先要购买域名tarena.com.然后配置一台DNS和WEB服务器,因为这是公司的主要业务,要求可靠性高,所以我们应该建立备用的服务器,以防万一.同时还需要搭建邮件,和文件服务器,现公司给我们提供四台Dell R710服务器.四台服务器的规化如下 服务器规划: 主机名 域名 IP 服务 web01 www.Tarena.com 192.168.11.11 主HTTP we

vsftpd服务程序的三种认证模式

vsftpd服务程序的三种认证模式的配置方法--匿名开放模式.本地用户模式以及虚拟用户模式.了解PAM可插拔认证模块的原理.作用以及实战配置方法,通过实战课程进一步继续学习SELinux服务的配置方法,扩展学习TFTP简单文件传输协议理论及实操课程 文件传输协议 一般来讲,人们将电脑联网的首要需求就是获取资料,而文件传输是其中非常重要的方式之一,21世纪的互联网是由几千万台个人电脑.工作站.小型机.大型机等等不同型号.架构的物理设备共同组成的,即便是个人电脑上也可能会装有诸如Linux.Wind

vsftpd架设(配置pam模块)

Vsftpd 是很安全的ftp软件 VSFTPD的目录结构 /usr/sbin/vsftpd: VSFTPD的可执行文件 /etc/rc.d/init.d/vsftpd:启动脚本 /etc/vsftpd/vsftpd.conf:主配置文件 /etc/pam.d/vsftpd:PAM认证文件 /etc/vsftpd.ftpusers:禁用使用VSFTPD的用户列表文件 /etc/vsftpd.user_list:禁止或允许使用VSFTPD的用户列表文件 /var/ftp:匿名用户主目录 一,安装v

OPENVPN的经典使用技巧实战

OPENVPN的经典使用技巧实战 概述: OpenVPN允许参与建立VPN的单点使用共享密钥,电子证书,用户名/密码来进行身份验证,它大量使用了OpenSSL加密码库中的SSLv3/TLSv1协议函式库. 目前OpenVPN能在Solaris, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS X与Windows 2000/XP/Vista上运行,并包含了许多安全性的功能, 它并不是一个基于Web的VPN软件, 也不与IPsec及其它VPN软件包兼容.OpenVPN

Java由浅入深开发企业级电商项目 大牛实战开发电商后台项目实战视频教程

第1章 课程介绍(实战本项目需具备Java,SSM,Linux等基础) 本章详细介绍Java服务端课程的内容,然后还介绍下课程安排,最后会讲解一下高大上的架构是如何一步一步从一台服务器演变到高性能.高并发.高可用架构的过程并讲解在这过程中大型架构演进思想以及代码演进细节. 第2章 开发环境安装与配置讲解.实操(linux平台[推荐]或windows平台) 考虑到学习这门课程的同学自己的电脑系统有的可能是Linux的,有的可能是Windows的,为了降低大家在搭建环境这块的难度和需要避免的坑,本章