- pure-ftpd 比vftpd更加的轻量;更加简单
- 安装包
- yum
install
-y pure-ftpd
```
[root@aming-01 ~]
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
已安装:
pure-ftpd.x86_64 0:1.0.42-3.el7
作为依赖被安装:
postgresql-libs.x86_64 0:9.2.23-1.el7_4 usermode.x86_64 0:1.111-5.el7
完毕!
[root@aming-01 ~]
```
- 更改配置文件vim
/etc/pure-ftpd/pure-ftpd
.conf
```
[root@aming-01 ~]
ChrootEveryone
yes
```
- 搜索pdb 把前面的井号删除,y也就是说要把前面的密码 这一行指定
```
PureDB
/etc/pure-ftpd/pureftpd
.pdb
PAMAuthentication
yes
:wq
[root@aming-01 ~]
[root@aming-01 ~]
```
- 因为vsftpd 和pure-ftpd 都是监听21端口,如果装有vsftpd,需要先暂停服务,如果不停掉在启动pure-ftpd的时候会报错,因为你的21端口被占用了,
```
[root@aming-01 ~]
[root@aming-01 ~]
[root@aming-01 ~]
root 2396 0.0 0.1 53188 1944 ? Ss 23:24 0:00
/usr/libexec/openssh/sftp-server
root 2535 0.0 0.1 202424 1196 ? Ss 23:49 0:00 pure-ftpd (SERVER)
root 2537 0.0 0.0 112680 980 pts
/0
R+ 23:50 0:00
grep
--color=auto
ftp
[root@aming-01 ~]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID
/Program
name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1
/systemd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1239
/nginx
: master
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1067
/rpc
.mountd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 2535
/pure-ftpd
(SER
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1002
/sshd
tcp 0 0 0.0.0.0:43927 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2134
/master
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1239
/nginx
: master
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:38024 0.0.0.0:* LISTEN 910
/rpc
.statd
tcp6 0 0 :::3306 :::* LISTEN 2026
/mysqld
tcp6 0 0 :::111 :::* LISTEN 1
/systemd
tcp6 0 0 :::20048 :::* LISTEN 1067
/rpc
.mountd
tcp6 0 0 :::34868 :::* LISTEN 910
/rpc
.statd
tcp6 0 0 :::21 :::* LISTEN 2535
/pure-ftpd
(SER
tcp6 0 0 :::22 :::* LISTEN 1002
/sshd
tcp6 0 0 ::1:25 :::* LISTEN 2134
/master
tcp6 0 0 :::41152 :::* LISTEN -
tcp6 0 0 :::2049 :::* LISTEN -
[root@aming-01 ~]
```
- 下面我们来创建一个测试的目录
- 给pure-ftpd用户使用
mkdir
/data/ftp
- 创建一个普通用户
useradd
-u 1010 pure-
ftp
- 更改一下属主、属组权限
chown
-R pure-
ftp
:pure-
ftp
/data/ftp
- 创建一个用户,
- 同样是虚拟用户映射系统用户
pure-pw
useradd
[指定用户] -u [指定系统用户] -d [指定虚拟用户的家目录]
pure-pw
useradd
ftp_usera -u pure-
ftp
-d
/data/ftp
//
密码为“123456”
- 添加完之后,让 pure-ftpd 建立虚拟用户数据 pure-pw mkdb
- 查看命令说明文件pure-pw list
/userdel/usermod/passwd
```
[root@aming-01 ~]
[root@aming-01 ~]
[root@aming-01 ~]
[root@aming-01 ~]
[root@aming-01 ~]
Password:
Enter it again:
[root@aming-01 ~]
```
- 下面来测试下
```
[root@aming-01 ~]
[root@aming-01 ~]
口令:
lftp ftp_usera@127.0.0.1:~>
ls
drwxr-xr-x 2 1010 pure-
ftp
21 Nov 3 00:00 .
drwxr-xr-x 2 1010 pure-
ftp
21 Nov 3 00:00 ..
-rw-r--r-- 1 0 0 0 Nov 3 00:00 123.txt
lftp ftp_usera@127.0.0.1:/>
```
- 不妨给它改下属主属组
```
lftp ftp_usera@127.0.0.1:/> quit
[root@aming-01 ~]
[root@aming-01 ~]
口令:
lftp ftp_usera@127.0.0.1:~>
ls
drwxr-xr-x 2 1010 pure-
ftp
21 Nov 3 00:00 .
drwxr-xr-x 2 1010 pure-
ftp
21 Nov 3 00:00 ..
-rw-r--r-- 1 1010 pure-
ftp
0 Nov 3 00:00 123.txt
lftp ftp_usera@127.0.0.1:/>
lftp ftp_usera@127.0.0.1:/> quit
[root@aming-01 ~]
```
- 扩展
- [x] vsftp使用mysql存放虚拟用户并验证 http:
//www
.aminglinux.com
/bbs/thread-342-1-1
.html
vsftp 利用mysql 验证虚拟账户
账户 验证 虚拟 vsftp mysql 资料分享
1 安装vsftpd
```
(1) yum
install
-y vsftpd
(2)编辑vsftpd.conf
内容如下
listen=YES
connect_from_port_20=YES
pasv_enable=YES
tcp_wrappers=YES
local_enable=YES
chroot_local_user=
yes
anonymous_enable=NO
guest_enable=YES
guest_username=vsftpdguest
user_config_dir=
/etc/vsftpd/vsftpd_user_conf
pam_service_name=
/etc/pam
.d
/vsftpd
dirmessage_enable=YES
idle_session_timeout=600
check_shell=NO
(3)创建一个虚拟用户映射系统用户
useradd
–s
/sbin/nologin
vsftpdguest
2 安装 mysql
具体步骤参考 http:
//www
.lishiming.net
/thread-7-1-2
.html
3 安装 pam-mysql
wget https:
//nchc
.dl.sourceforge.net
/project/pam-mysql/pam-mysql/0
.7RC1
/pam_mysql-0
.7RC1.
tar
.gz
tar
zxvf pam_mysql-0.7RC1.
tar
.gz
cd
pam_mysql-0.7RC1
.
/configure
--with-mysql=
/usr/local/mysql
--with-pam=
/usr
--with-pam-mods-
dir
=
/usr/lib
make
&&
make
install
4 创建vsftp 库和相关的表并授权
>create database vsftp;
>use vsftp ;
>create table
users
( name char(16) binary ,
passwd
char(125) binary ) ;
>insert into
users
(name,
passwd
) values (
'test001'
,password(
'123456'
));
>insert into
users
(name,
passwd
) values (
'test002'
,password(
'234567'
));
>grant
select
on vsftp.
users
to vsftpdguest@localhost identified by
'vsftpdguest'
;
```
5 创建虚拟账户的配置文件
```
mkdir
/etc/vsftpd/vsftpd_user_conf
cd
/etc/vsftpd/vsftpd_user_conf
vim test001
内容如下
local_root=
/ftp/
write_enable=YES
virtual_use_local_privs=YES
chmod_enable=YES
6 编辑验证文件
vim
/etc/pam
.d
/vsftpd
内容如下
auth required
/usr/lib/pam_mysql
.so user=vsftpdguest
passwd
=vsftpdguest host=localhost db=vsftp table=
users
usercolumn=name passwdcolumn=
passwd
crypt=2
account required
/usr/lib/pam_mysql
.so user=vsftpdguest
passwd
=vsftpdguest host=localhost db=vsftp table=
users
usercolumn=name passwdcolumn=
passwd
crypt=2
```
- 如果不想使用mysql也可以使用文件的形式来搞虚拟账号,请参考 Centos5.5 配置vsftpd 虚拟账号
- [x]
ftp
的主动和被动模式 http:
//www
.aminglinux.com
/bbs/thread-961-1-1
.html
ftp
的主动模式与被动模式的区别是什么?
中文意思 客户端 服务器 资料分享
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动模式和被动模式
一、什么是主动FTP
主动模式的FTP工作原理:客户端从一个任意的非特权端口N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:
1、 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2、 FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3、 FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4、 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
二、什么是被动FTP
为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。
当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:
1、 从任何大于1024的端口到服务器的21端口(客户端初始化的连接)
2、 服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)
3、 从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)
4、 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)
从上面可以看出,两种方式的命令链路连接方法是一样的,而数据链路的建立方法就完全不同,如下图:
FTP服务器的主动工作模式
port.jpg
FTP服务器的被动工作模式
pasv.jpg
以上关于主动和被动FTP的解释,可以简单概括为以下两点:
1、主动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 <- 服务器 20端口
2、被动FTP:
命令连接:客户端 >1024端口 -> 服务器 21端口
数据连接:客户端 >1024端口 -> 服务器 >1024端口
三、主动模式
ftp
与被动模式FTP优点和缺点:
主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
pasv.jpg
本文转自 ch71smas 51CTO博客,原文链接:http://blog.51cto.com/ch71smas/1977609