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、主配置文件

/etc/vsftpd/vsftpd.conf

1.1.5、PAM配置文件

1)配置文件位置:

/etc/pam.d/vsftpd

2)PAM配置文件的修改

vim编辑/etc/pam.d/vsftpd

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

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

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

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

1.2、主机访问控制

/etc/hosts.deny

1.3、启动失败调试方法

启动失败解决:

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

1.4、帮助

man vsftpd.conf

1.5、配置文件参数

1.5.1、全局配置参数

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

1)权限参数

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

2)登录信息参数

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)日志文件参数

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

4)性能参数

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)安全参数

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协议

ssl_enable=YES #开启SSL加密协议
ssl_sslv2=YES #指定加密方式
ssl_sslv3=YES
ssl_tlsv1=YES
force_local_logins_ssl=YES #强制本地和虚拟用户登录使用SSL协议
force_local_data_ssl=YES #强制本地和虚拟用户数据使用SSL协议
allow_anon_ssl=YES #允许匿名用户使用SSL协议
force_anon_logins_ssl=YES #强制匿名用户登录使用SSL协议
force_anon_data_ssl=YES #强制匿名用户数据使用SSL协议
require_ssl_reuse=NO #禁用数据与控制流使用相同的ssl通道
ssl_ciphers=HIGH #加密套件
rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem #指定加密证书文件

7)传输协议

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

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)前提参数

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

2)权限参数

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)性能参数

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

1.5.3、匿名用户配置参数

1)前提参数

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

2)权限参数

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)性能参数

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

1.5.4、虚拟用户配置参数

1)前提参数

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

2)权限参数

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

3)性能参数


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:

yum -y install vsftpd httpd

In client:

 yum -y install ftp

2.3、配置

In ftpSer:

2.3.1、step1

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

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

2.3.2、step2

1)修改配置文件

vim编辑/etc/vsftpd/vsftpd.conf

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

#--------日志参数-------
#开启日志
xferlog_enable=YES
#wu-ftpd风格记录日志
xferlog_std_format=YES
#记录上传下载的日志
xferlog_file=/var/log/xferlog
#-------权限参数--------
#禁止匿名用户登录
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)重启服务

/etc/init.d/vsftpd restart

2.3.3、step3

配置防火墙

vim编辑/etc/sysconfig/iptables

-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 30005:31000 -j ACCEPT

2.3.4、step4

创建ftp目录

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

2.3.5、step5

创建ftp用户并修改密码

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

权限调整

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)创建脚本文件夹

mkdir ~/script

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

键入如下内容:

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

3)添加计划任务

crontab -e

加入如下内容:

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

2.3.8、step8

关闭selinux

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

2.3.9、step9

usermod -L ftp_user1
usermod -U ftp_user1

3、SSL加密FTP实验

2.1、yum源

yum -y install tcpdump

2.2、SSL加密的必要性

In ftpSer:

tcpdump port 21 -nA

In client:

ftp
open 10.168.0.166
ftp_user1 #输入用户名

In ftpSer:

显示如下:

#前有节删
.<...j*|USER ftp_user1
#后有节删

In client:

ftppwd #输入密码

In ftpSer:

显示如下:

#前有节删
.=.F.k..PASS ftppwd
#后有节删

2.3、配置

2.3.1、创建证书目录

mkdir /etc/vsftpd/.sslkey
cd /etc/vsftpd/.sslkey

2.3.2、创建证书

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

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

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 []:[email protected]

2.3.3、设置证书目录权限

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

2.3.4、加载证书配置参数

vim编辑/etc/vsftpd/vsftpd.conf

末尾加入如下配置:

#--------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

参阅资料:

vsftp基础资料:

http://os.51cto.com/art/201008/222036.htm

http://zhidao.baidu.com/link?url=-b3RW2xPe_nMYv10tERFHIk1LAAgCWxfmpSV_n7OeHsE4av2oMCRVgXuPjgpMCQO0s8Ny6xqALcR0fjrIU6I-31zSgxBt99Ql6xwiZRZ-We

http://www.jb51.net/LINUXjishu/10964.html

启用SSL的资料:

http://my.oschina.net/HankCN/blog/116127

ftp端资料:

http://www.linuxidc.com/Linux/2012-10/73157.htm


你可能感兴趣的:(配置文件,主机)