vsftpd服务的归纳总结

简介:

1、理论知识

1.1、配置文件

1.1.1、vsftp的简介

vsftp的名字是“very secure FTP daemon”的简称,他工作在chroot模式下(程序限定一个访问目录),故而比较安全。

1.1.2、工作模式

1)PORT模式(主动模式)

主动模式工作流程如下:

-- 客户端与服务器TCP 21端口建立连接通道

-- 接收数据时在此通道上发送PORT命令(声明一个大于1024的客户端端口)

-- 服务器端通过TCP 20向客户端传送数据(建立新的连接)

注:防火墙OUTBOUND过程

2)PASV模式(被动模式)

被动模式工作流程如下:

-- 客户端与服务器TCP 21端口建立连接通道

-- 客户端发送PASV命令给服务器

-- 服务器默认开启1024至5000之间的随机端口并通知客户端在此端口请求数据

-- 服务器端通过此端口传送数据

注:防火墙INBOUND过程

1.1.3、运行模式

1)standalone模式

-- 一次性启动,常驻内存

-- 接入反省快,消耗系统资源

-- 支持PAM验证功能

2)inetd(xinetd)模式

-- 外部请求则调用ftp进程

-- 反应慢,不占系统资源

-- 单一IP限制

1.1.4、主配置文件

1
/etc/vsftpd/vsftpd .conf

1.1.5、PAM配置文件

1)配置文件位置:

1
/etc/pam .d /vsftpd

2)PAM配置文件的修改

vim编辑/etc/pam.d/vsftpd

更改前(在列表中的不允许chroot):

1
auth required pam_listfile.so item=user sense=deny  file = /etc/vsftpd/ftpusers  onerr=succeedd

更改后(只有在列表中的用户才允许chroot):

1
auth required pam_listfile.so item=user sense=allow  file = /etc/vsftpd/ftpusers  onerr=faile

1.2、主机访问控制

/etc/hosts.deny

1.3、启动失败调试方法

启动失败解决:

1
bash  -x  /etc/init .d /vsftpd  start

1.4、帮助

1
man  vsftpd.conf

1.5、配置文件参数

1.5.1、全局配置参数

注:参数与注解正式环境下分开两行写,否则报错

1)权限参数

1
write_enable=YES  #允许改变命令(STOR, DELE,RNFR, RNTO, MKD, RMD, APPE and SITE,默认NO)

2)登录信息参数

1
2
3
4
dirmessage_enable=YES #换目录时,显示目录下“.message”文件的内容
ftpd_banner=Welcome to www.cmdschool.org FTP servers #登录欢迎信息
banner_file=/etc/vsftpd/banner_file #登录成功信息
banner_fail=/etc/vsftpd/banner_fail #登录失败信息

注意:

ftp_banner会覆盖vsftpd默认连接后的信息显示;

banner_file设置会覆盖ftp_banner的提示;

3)日志文件参数

1
2
3
xferlog_enable=YES #开启日志
xferlog_std_format=YES #wu-ftpd风格记录日志
xferlog_file=/ var /log/xferlog #记录上传下载的日志

4)性能参数

1
2
3
4
5
6
7
8
9
idle_session_timeout=600  #闲置会话中断超时
data_connection_timemout=120  #闲置数据连接超时
accept_timeout=60  #PASV模式响应数据超时
ls_recurse_enable=YES  #是否允许递归查询ls -R(默认YES)
dirlist_enable=YES  #允许使用dir/ls(默认YES)
download_enable=YES  #允许用户下载文件
max_clients=30  #客户端最大数量
max_per_ip=3  #一个IP的最大连接数
use_localtime=YES  #启用当地时间(默认GMT)

5)安全参数

1
2
3
4
5
6
tcp_wrappers= yes  #开启tcp_wrapper访问控制
max_login_fails=3  #默认试探密码的次数
pam_service_name=vsftpd  #PAM验证配置文件名称
nopriv_user= ftp  | nobody  #vsftp服务运行时的账号
deny_file={*.exe,*.dll}  #拒绝上传下载的文件类型
async_abor_enable=YES  #是否允许运行特殊的ftp命令async ABOR.

6)安全SSL协议

1
2
3
4
5
6
7
ssl_enable=YES  #开启SSL加密协议
ssl_sslv2=YES  #指定加密方式
ssl_sslv3=YES
ssl_tlsv1=YES
require_ssl_reuse=NO  #禁用数据与控制流使用相同的ssl通道
ssl_ciphers=HIGH  #加密套件
rsa_cert_file= /etc/vsftpd/ .sslkey /vsftpd .pem  #指定加密证书文件

7)传输协议

1
2
3
#ASCII模式传送文件
ascii_upload_enable=YES
ascii_download_enable=YES

8)进程相关

1
2
3
4
5
6
7
8
background=YES #vsftp将以监听(listen)模式启动
connect_timeout=60 #PORT模式响应数据超时
listen=yes #vsftp则运行在standalone模式
listen_port=21 #vsftpd监听端口
connect_from_port_20=YES #启用默认的20端口监听
listen_ipv6=YES #开启ipv6支持
pasv_min_port=50000 #PASV模式最小端口
pasv_max_port=60000 #PASV模式最大端口

1.5.2、本地用户配置参数

1)前提参数

1
local_enable=YES #开启普通用户ftp访问(默认NO,不限制chroot)

2)权限参数

1
2
3
4
5
6
7
8
local_umask=0022 #上传文件默认权限设置为6644,不设置默认为0077,目录为700
chroot_local_user=NO #禁止用户chroot
chroot_list_enable=YES #开启chroot控制列表
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #chroot控制列表(默认在列拒绝)
userlist_enable=yes #开启用户登录控制列表
userlist_deny= #拒绝或允许用户登录
userlist_file=/etc/vsftpd.user_list #用户登录控制列表
local_root= #指定ftp家目录

3)性能参数

1
local_max_rate=128 #本地账号最大速率128B/s(0不限制)

4)安全SSL协议

1
2
force_local_logins_ssl=YES  #强制本地和虚拟用户登录使用SSL协议
force_local_data_ssl=YES  #强制本地和虚拟用户数据使用SSL协议


1.5.3、匿名用户配置参数

1)前提参数

1
2
anonymous_enable=YES #开启匿名用户登录(默认YES)
ftp_username=ftp #匿名用户的系统用户名(默认ftp)

2)权限参数

1
2
3
4
5
6
7
anon_world_readable_only=YES #开启匿名用户文件只读
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建文件夹
anon_other_write_enable=YES #允许匿名用户其他写操作(删除,重命名)
anon_umask=022 #默认0077
chown_uploads= YES #修改匿名用户所上传文件的所有权
chown_username = username #指定拥有匿名用户上传文件所有权的用户

3)性能参数

1
2
3
anon_upload_enable=NO #匿名用户上传文件
anon_mkdir_write_enable=NO #匿名用户上传目录权限
anon_max_rate=64 #匿名账号最大下载速度64B/s

4)安全SSL协议

1
2
3
allow_anon_ssl=YES  #允许匿名用户使用SSL协议
force_anon_logins_ssl=YES  #强制匿名用户登录使用SSL协议
force_anon_data_ssl=YES  #强制匿名用户数据使用SSL协议

1.5.4、虚拟用户配置参数

1)前提参数

1
2
guest_enable=YES  #开启虚拟用户
guest_username=  #指定虚拟用户映射的本地用户

2)权限参数

1
2
user_config_dir= /etc/vsftpd/config  #虚拟用户配置文件目录
local_root=  #虚拟用户家目录

3)安全SSL协议

1
2
force_local_logins_ssl=YES  #强制本地和虚拟用户登录使用SSL协议
force_local_data_ssl=YES  #强制本地和虚拟用户数据使用SSL协议


2、本地用户验证的FTP实践

2.1、基础信息

ftpSer:

ipaddress=10.168.0.166

hostname=vsFTPSer


client:

ipaddress=10.168.0.8

hostname=client


应用场景:

ftp用于上传网站源代码,故需要考虑到apache的权限。

2.2、yum源安装

In ftpSer:

1
yum -y  install  vsftpd httpd

In client:

1
  yum -y  install  ftp

2.3、配置

In ftpSer:

2.3.1、step1

启动服务和配置开机默认启动

1
2
/etc/init .d /vsftpd  start
  chkconfig vsftpd on

2.3.2、step2

1)修改配置文件

vim编辑/etc/vsftpd/vsftpd.conf

清空之前的配置,加入如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#--------日志参数-------
#开启日志
xferlog_enable=YES
#wu-ftpd风格记录日志
xferlog_std_format=YES
#记录上传下载的日志
xferlog_file= /var/log/xferlog
#开启登录日志
dual_log_enable=YES
#登录日志保存路径
vsftpd_log_file= /var/log/vsftpd .log
#-------权限参数--------
#禁止匿名用户登录
anonymous_enable=NO
#禁止匿名用户上传文件
anon_upload_enable=NO
#禁止匿名用户创建文件夹
anon_mkdir_write_enable=NO
#禁止匿名用户其他写操作(删除,重命名)
anon_other_write_enable=NO
#开启普通用户ftp访问
local_enable=YES
#上传文件默认权限
local_umask=022
#开启用户登录控制列表
userlist_enable=YES
#禁止用户chroot
chroot_local_user=NO
#开启chroot控制列表
chroot_list_enable=YES
#chroot控制列表
chroot_list_file= /etc/vsftpd/vsftpd .chroot_list
#允许改变系统
write_enable=YES
#---------安全参数----------
#允许运行特殊的ftp命令async ABOR.
async_abor_enable=YES
#开启tcp_wrapper访问控制
tcp_wrappers=YES
#PAM验证配置文件名称
pam_service_name=vsftpd
#---------登录消息----------
dirmessage_enable=YES
ftpd_banner=Welcome to www.cmdschool.org FTP servers
#---------进行配置---------
#listen模式启动
background=YES
#运行在standalone模式
listen=YES
#PAM验证配置文件名称
pam_service_name=vsftpd
#PASV模式最小端口
pasv_min_port=50000
#PASV模式最大端口
pasv_max_port=60000
#---------传输相关---------
ascii_upload_enable=YES
ascii_download_enable=YES

2)重启服务

1
/etc/init .d /vsftpd  restart

2.3.3、step3

配置防火墙

vim编辑/etc/sysconfig/iptables

1
2
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 50000:60000 -j ACCEPT

2.3.4、step4

创建ftp目录

1
2
mkdir  /var/www/www .cmdschool.org/ 
echo  www.cmdschool.org  > index.html

2.3.5、step5

创建ftp用户并修改密码

1
2
3
useradd  ftp_user1 -d  /var/www/www .cmdschool.org/ -s  /sbin/nologin
echo  ftppwd |  passwd  --stdin ftp_user1
usermod  -G apache ftp_user1

2.3.6、step6

权限调整

1
2
3
chown  :apache -R  /var/www/www .cmdschool.org/
chmod  g+s  /var/www/www .cmdschool.org/
chmod  770 -R  /var/www/www .cmdschool.org/

2.3.7、step7

配置自动生成chroot_list

1)创建脚本文件夹

1
mkdir  ~ /script

2)vim编辑~/script/ftp_chroot.sh

键入如下内容:

1
cat  /etc/passwd  cut  -d : -f1 >  /etc/vsftpd/vsftpd .chroot_list

3)添加计划任务

1
crontab  -e

加入如下内容:

1
* /5  * * * * sh ~ /script/ftp_chroot .sh

2.3.8、step8

关闭selinux

1
2
setenforce 0
sed  -i  's/SELINUX=enforcing/SELINUX=disabled/g'  /etc/selinux/config

2.3.9、step9

1
2
usermod  -L ftp_user1
usermod  -U ftp_user1

3、本地用户验证的SSL加密实践

2.1、yum源

In ftpSer:


1
yum -y  install  tcpdump

In ftpSer:

1
yum -y  install  lftp

2.2、SSL加密的必要性

In ftpSer:

1
tcpdump port 21 -nA

In client:

1
2
3
4
5
lftp
open  10.168.0.166
user ftp_user1  #输入用户名
ftppwd  #输入密码
ls

In ftpSer:

显示如下:

1
2
3
4
5
#前有节删
..%.    ...USER ftp_user1
#中间有节删
..%.    ...PASS 123
#后有节删

2.3、配置

In ftpSer:

2.3.1、创建证书目录

1
2
mkdir  /etc/vsftpd/ .sslkey
cd  /etc/vsftpd/ .sslkey

2.3.2、创建证书

1
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

交互模式如下(根据实际情况填写):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Generating a 1024 bit RSA private key
....++++++
...........++++++
writing new private key to  'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter  '.' , the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:GD
Locality Name (eg, city) [Default City]:DG
Organization Name (eg, company) [Default Company Ltd]:cmdschool.org
Organizational Unit Name (eg, section) []:MIS
Common Name (eg, your name or your server's  hostname ) []:ftpSer
Email Address []:will@cmdschool.org

2.3.3、设置证书目录权限

In ftpSer:

1
chmod  -R 400  /etc/vsftpd/ .sslkey/

2.3.4、加载证书配置参数

In ftpSer:

vim编辑/etc/vsftpd/vsftpd.conf

末尾加入如下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#--------SSL-------
#开启SSL加密协议
ssl_enable=YES
#指定加密方式
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
#强制本地和虚拟用户登录使用SSL协议
force_local_logins_ssl=YES
#强制本地和虚拟用户数据使用SSL协议
force_local_data_ssl=YES
#禁用数据与控制流使用相同的ssl通道
require_ssl_reuse=NO
#加密套件
ssl_ciphers=HIGH
#指定加密证书文件
rsa_cert_file= /etc/vsftpd/ .sslkey /vsftpd .pem

2.3.5、验证

In ftpSer:

1
tcpdump port 21 -nA

In client:

1
2
3
4
5
lftp
open  10.168.0.166
user ftp_user1  #输入用户名
ftppwd  #输入密码
ls

In ftpSer:

注:监听的信息无法找到明文的用户名和密码。









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1712760,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
139 2
|
1月前
|
Linux 数据安全/隐私保护 Windows
Linux vsFTPd服务详解——本地用户登录实战
Linux vsFTPd服务详解——本地用户登录实战
32 2
|
1天前
|
网络协议 安全 Linux
配置vsftpd服务
FTP是TCP/IP协议族中的应用层协议,用于可靠地传输文件,基于C/S架构,使用20(数据)和21(命令)端口。有两种传输模式:主动模式,客户端告知服务器数据端口,服务器发起连接;被动模式,服务器响应客户端的PASV命令,客户端建立数据连接。安装Linux的vsftpd服务涉及`yum install vsftpd`,创建用户,重启服务并设置开机启动。配置文件`vsftpd.conf`可调整访问权限和行为。通过FTP命令如`help`,`get`,`put`进行文件操作。匿名用户模式可允许无密码访问,需修改配置文件开启。
5 0
|
1月前
|
运维 网络协议 安全
Linux vsFTPd服务详解——vsFTPd基础知识
Linux vsFTPd服务详解——vsFTPd基础知识
28 4
|
4月前
|
安全 Linux 网络安全
Linux加强篇011-使用Vsftpd服务传输文件
山重水复疑无路,柳暗花明又一村
257 1
Linux加强篇011-使用Vsftpd服务传输文件
|
10月前
|
存储 运维 安全
Linux巩固篇011-Linux vsftpd 服务传输文件
纸上得来终觉浅,绝知此事要躬行
11243 13
Linux巩固篇011-Linux vsftpd 服务传输文件
|
弹性计算 缓存 Linux
Centos Linux系统使用vsftpd搭建ftp服务
Centos Linux系统使用vsftpd搭建ftp服务
205 0
Centos Linux系统使用vsftpd搭建ftp服务
|
网络协议 安全 网络安全
centos7.6部署vsftpd服务实现一个用户一个访问目录
本文章分为2部分,分别是FTP的理论部分和实战部分 FTP原理以及相关理论 FTP文件传输协议,是典型的C/S结构的应用层协议,需要由服务端软件、客户端软件两部分共同实现文件传输功能。 FTP文件传输协议提供文件上传和下载,可以在局域网使用,也可以在互联网使用。 FTP属于应用层协议,同时也属于TCP,TCP的好处:安全、可靠、有连接、速度慢,通过ftp可以传输文件
251 0
centos7.6部署vsftpd服务实现一个用户一个访问目录
|
弹性计算 网络协议 Linux
Day1-基于ECS的FTP-Vsftpd服务
云服务器(Elastic Compute Service,简称ECS)是阿里云提供的弹性计算服务。基于它,可以用来配置FTP服务器;其中,FTP(File Transfer Protocol)文件传输协议是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。依照该协议,可以用来提供文件存储和访问服务。而基于该协议,发展出了vsftpd,它是一款在Linux发行版中最受欢迎的FTP服务器,它具有非常高的安全性需求、带宽限制、良好的可伸缩性和速率高等特点。
338 0