vsftpd+openssl+mysql实现sftp和ftp虚拟用户

FTP:File Transfer protocol ,端口:控制:tcp/21;数据:tcp/20或随机高端口

ftp有两个连接:

命令连接(控制连接):tcp/21

数据连接(按需打开):

主动模式:tcp/20(ftp服务器主动连接客户端)

被动模式:随机高端口

ftp有两种传输模式:二进制、文本(默认为auto,会根据文件特性动匹配)

sftp是以openssl来实现;ftps是ssh的子功能。

系统平台:rhel5.8(32位),ip:32.12.32.227,采用系统自带的rpm包安装

安装ftp:

#yum install vsftpd

#service vsftpd start

#finger ftp (安装vsftpd会自动创建ftp用户和用户组,查看ftp对应的家目录

测试(此时匿名登录,用户名可以anonymous或ftp,密码为空):

C:\Users\yangyuan>ftp 32.12.32.227

连接到 32.12.32.227。

220 (vsFTPd 2.0.5)

用户(32.12.32.227:(none)): ftp

331 Please specify the password.

密码:

230 Login successful.

ftp>

注意:匿名用户是不能上传文件,新建目录,删除文件,除非改配置文件/etc/vsftpd/vsftpd.conf

#vim /etc/vsftpd/vsftpd.conf

anon_upload_enable=YES  (允许匿名用户上传文件)

anon_mkdir_write_enable=YES  (允许匿名用户新建目录)

anon_other_write_enable=YES  (允许匿名用户删除文件)

#mkdir /var/ftp/upload (创建一个上传目录)

#setfacl -m u:ftp:rwx /var/ftp/upload

#service vsftpd restart

#setenforce 0

#iptables -F   (清空防火墙)

测试:

Xshell:\> ftp 32.12.32.227

Connecting to 32.12.32.227:21...

Connection established.

To escape to local shell, press ‘Ctrl+Alt+]‘.

220 (vsFTPd 2.0.5)

Name (32.12.32.227:yangyuan): ftp

331 Please specify the password.

Password:

230 Login successful.

ftp:/> cd upload

250 Directory successfully changed.

ftp:/upload> lpwd

D:\Users\yangyuan\Desktop

ftp:/upload> put fd.png

227 Entering Passive Mode (32,12,32,227,222,90)

150 Ok to send data.

fd.png: 12.8 KB sent in 0.001 sec (13,129 bytes, 12.5 MB/sec).

226 File receive OK.

ftp:/upload> mkdir test3

257 "/upload/test3" created

ftp:/upload> delete fd.png

250 Delete operation successful.

用系统的普通用户访问ftp会进入普通用户家目录,建议不要使用:

#useradd hadoop

#echo "redhat" | passwd --stdin hadoop

Xshell:\> ftp 32.12.32.227

Connecting to 32.12.32.227:21...

Connection established.

To escape to local shell, press ‘Ctrl+Alt+]‘.

220 (vsFTPd 2.0.5)

Name (32.12.32.227:yangyuan): hadoop

331 Please specify the password.

Password:

230 Login successful.

ftp:/home/hadoop>

另外可以/etc/vsftpd/vsftpd.conf中增加如下两个指令:

max_clients=数值  (用来定义访问最大用户数)

mas_per_ip=数值    (用来定义单独一IP地址用户数)

sftp的实现:CA---->sftp

# (umask 077;openssl genrsa -out private/cakey.pem 2048)

# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

.........

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:JS

Locality Name (eg, city) [Newbury]:SZ

Organization Name (eg, company) [My Company Ltd]:bocs

Organizational Unit Name (eg, section) []:Tech

Common Name (eg, your name or your server‘s hostname) []:ca.bocs.com

Email Address []:

# vim /etc/pki/tls/openssl.cnf

dir             = /etc/pki/CA

# mkdir /etc/vsftpd/ssl

# cd /etc/vsftpd/ssl

# (umask 077;openssl genrsa -out vsftpd.key 2048)

# openssl req -new -key vsftpd.key -out vsftpd.csr

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:JS

Locality Name (eg, city) [Newbury]:SZ

Organization Name (eg, company) [My Company Ltd]:bocs

Organizational Unit Name (eg, section) []:Tech

Common Name (eg, your name or your server‘s hostname) []:ftp.bocs.com

Email Address []:

Please enter the following ‘extra‘ attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

# openssl ca -in vsftpd.csr -out vsftpd.crt  (y y)

#vim /etc/vsftpd/vsftpd.conf  (增加如下内容)

#########   SSL or TLS  #########

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv3=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key

#service vsftpd restart

测试

基于PAM、Mysql实现虚拟用户

# yum -y install mysql-server mysql-devel

# service mysqld start

# chkconfig mysqld on

由于系统的pam与mysql关联还一个包:pam_mysql-0.7RC1.tar.gz,下载位置:http://download.chinaunix.net/download.php?id=15901&ResourceID=7820

# tar xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-msyql --with-openssl

#  make

# make install

创建数据库、表,给用库用户赋权限

# mysql

mysql> CREATE DATABASE vsftpd;

Query OK, 1 row affected (0.02 sec)

mysql> USE vsftpd;

Database changed

mysql> CREATE TABLE users (

-> id SMALLINT AUTO_INCREMENT NOT NULL,

-> name CHAR(20) BINARY NOT NULL,

-> password CHAR(48) BINARY NOT NULL,

-> PRIMARY KEY(id)

-> );

Query OK, 0 rows affected (0.03 sec)

mysql> DESC users;

+----------+-------------+------+-----+---------+----------------+

| Field    | Type        | Null | Key | Default | Extra          |

+----------+-------------+------+-----+---------+----------------+

| id       | smallint(6) | NO   | PRI | NULL    | auto_increment |

| name     | char(20)    | NO   |     | NULL    |                |

| password | char(48)    | NO   |     | NULL    |                |

+----------+-------------+------+-----+---------+----------------+

3 rows in set (0.01 sec)

mysql> GRANT SELECT ON vsftpd.* TO [email protected] IDENTIFIED BY ‘vsftpd‘;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT ON vsftpd.* TO [email protected]‘127.0.0.1‘ IDENTIFIED BY ‘vsftpd‘;

Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO users (name,password) values (‘tom‘,‘redhat‘);

Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO users (name,password) values (‘jerry‘,‘redhat‘);

Query OK, 1 row affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> \q

建立pam认证所需的文件

# vim /etc/pam.d/vsftpd.mysql

auth required /usr/lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

account required /usr/lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

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

# chmod go+rx /var/vuser

# vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd.mysql

force_local_data_ssl=NO

force_local_logins_ssl=NO

########    guset   ##########

guest_enable=YES

guest_username=YES

user_config_dir=/etc/vsftpd/vuser_list

# mkdir /etc/vsftpd/vuser_list

# touch /etc/vsftpd/vuser_list/{tom,jerry}

# vim /etc/vsftpd/vuser_list/jerry    (jerry用户有上传、创建目录、删除文件功能)

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

# service vsftpd restart

测试

[[email protected] ~]# ftp 32.12.32.227

Connected to 32.12.32.227.

220 (vsFTPd 2.0.5)

504 Unknown AUTH type.

504 Unknown AUTH type.

KERBEROS_V4 rejected as an authentication type

Name (32.12.32.227:root): tom

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

[[email protected] ~]# ftp 32.12.32.227

Connected to 32.12.32.227.

220 (vsFTPd 2.0.5)

504 Unknown AUTH type.

504 Unknown AUTH type.

KERBEROS_V4 rejected as an authentication type

Name (32.12.32.227:root): jerry

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> lcd /etc

Local directory now /etc

ftp> put inittab

local: inittab remote: inittab

227 Entering Passive Mode (32,12,32,227,93,85)

150 Ok to send data.

226 File receive OK.

1666 bytes sent in 0.021 seconds (77 Kbytes/s)

ftp> mkdir test

257 "/test" created

ftp> ls

227 Entering Passive Mode (32,12,32,227,230,252)

150 Here comes the directory listing.

-rw-------    1 502      502          1666 May 05 16:21 inittab

drwx------    2 502      502          4096 May 05 16:21 test

226 Directory send OK.

ftp> delete inittab

250 Delete operation successful.

时间: 2024-08-05 05:12:17

vsftpd+openssl+mysql实现sftp和ftp虚拟用户的相关文章

ftp 虚拟用户

一.概述 为何用虚拟用户 虚拟用户只能访问服务器提供的FTP服务,而不能访问系统的其它资源.所以,如果想让用户对FTP服务器有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性 二.软件安装 1.安装vftpd:yum或者编译安装都可以 2.安装生成口令认证文件所需要的软件db4-utils yum install db4-utils db4-devel -y 三.配置 本地数据文件方式[也可使用mysql] (1)添加虚拟用户口令文件[奇数行为用户名,偶数行为密码] vim

[vsftp服务]——ftp虚拟用户、权限设置等的实验

搭建ftp服务器,满足以下要求: 1.允许匿名用户登录服务器并下载文件,下载速度设置为最高2MB/s 2.不允许本地用户登录ftp服务器 3.在服务器添加虚拟用户vuser01.vuser02.vuser03,密码自己设置.其中: (1)vuser01用户的下载速度最高为3MB/s,vuser02为4MB/s,vuser03为5MB/s: (2)vuser01可以进行文件上传,但不能进行其它操作: (3)vuser02可以上传和创建目录: (4)vuser03可以进行上传.创建文件和删除文件:

Linux 下 FTP虚拟用户的使用配置

Linux下FTP虚拟用户的使用配置 Linux的FTP服务支持3种用户: 1.匿名帐户 2.本地帐户 3.虚拟用户 为什么要使用虚拟用户: 匿名帐户可以很好的保证FTP服务器的安全性,但是,对匿名用户的权限管理不够灵活.如果想对访问FTP的帐户给予更多的权限,就可以用本地帐户来实现.但是,本地帐户默认情况下是可以登陆Linux系统的,这样对Linux系统来说是一个安全隐患.那么怎么能在灵活的赋予FTP用户权限的前提下,保证FTP服务器乃至整个Linux系统的安全呢?使用虚拟用户就是一种解决办法

使用linux FTP虚拟用户搭建FTP服务器

最近接触一个项目,客户需要搭建一台FTP服务器.具体要求是:系统采用red hat 6.4 64位操作系统:创建20个ftp用户,这些用户拥有自己独立的工作目录,并且有上传.下载.删除等权限:创建一个ftp管理用户,这个用户拥有管理以上20个ftp用户目录的权限. 仔细一看要求单单使用本地用户设置属组和文件目录权限控制的方法很难实现以上要求,于是想到使用ftp虚拟用户,而且ftp虚拟用户安全性高,不能登录系统,只能访问ftp服务器. 下面开始在自己的虚拟机环境中根据客户的要求搭建ftp服务器.

配置FTP虚拟用户访问

直接使用本地用户(Linux系统的用户账户)来访问vsftpd服务器可能带来安全问题,变通的方法是使用虚拟用户(virtual user)来作为专门的FTP账户.FTP虚拟用户并不是操作系统的用户账户,不能登入系统,只能访问FTP服务器,对操作系统的影响更小.虚拟用户主要用来访问提供给非信任用户,但又不适合公开的内容. PAM(Pluggable Authentication Modules)是一套身份验证共享库,用于限定特定应用程序的访问.使用PAM身份验证机制可以实现vsftpd的虚拟用户功

linux下利用脚本添加ftp虚拟用户并赋予权限

首先ftp配置应为虚拟用户登录模式 用户密码文本目录为/etc/vsftpd/vftpuser,代码如下: 1 #!/bin/bash 2 # 3 if [ $# -ne 2 ] //限制用户只能完整输入一组用户名和密码.在用户密码文本中奇数行为用户名,偶数行为密码. 4 then echo "Please input a set of username and password" 提示"请输入一组用户名和密码" 5 exit 1 6 fi 7 8 for user

Linux FTP虚拟用户创建

(1)cd /etc/vsftpd/(2)vim vuser.list创建用户zhaosi和liwu 密码均为redhat(奇数行为帐户名,偶数行为密码)(3)db_load -T -t hash -f vuser.list vuser.db(4)file vuser.db(5)chmod 600 vuser.db(6)rm -f vuser.list(7)设置/var/ftproot/为本地用户家目录(8)chmod -Rf 755 /var/ftproot/赋予家目录权限(9)vim /et

linux下VSFTPD的主动模式、被动模式和虚拟用户登录配置。

主动模式: 以CENTOS为例. 1.在 root 权限下,通过命令 yum install vsftpd 安装 vsftp. 2.启动 vsftpd 服务之前,需要登录云服务器修改配置文件,禁用匿名登录. 使用 vim /etc/vsftpd/vsftpd.conf 打开配置文件,将配置文件中第 11 行的 anonymous_enable=YES 改为anonymous_enable=NO 即可禁用匿名登录. 3.使用 cat /etc/vsftpd/vsftpd.conf |grep ^[

Vsftpd安装以及配置FTP虚拟用户实践

安装vsftpd #查看当前系统版本 [[email protected] vsftpd]# cat  /etc/redhat-release CentOS release 6.7 (Final) #安装 yum  install  vsftpd  -y #开机启动 chkconfig  vsftpd   on 基于虚拟用户和被动模式的配置 [[email protected] vsftpd]# cat  vsftpd.conf anonymous_enable=NO listen=YES li