vsftpd安装配置

一、什么是FTP?

FTP (File Transfer Protocol) 件传输协议的缩写,在RFC 959中具体说明。
FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。
控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。
FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式。

PORT模式(主动方式)
FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。

PASV模式(被动方式)
在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。

如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。

 

二、什么是vsftpd  ?

       vsftpd意思为“very secure FTP daemon(非常安全的FTP进程)”,是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux、BSD、Solaris、HP-UX以及Irix等系统上面。vsftpd支持很多其他传统的FTP服务器不支持的良好特性。

 

三、安装方式(两种)

包安装:(rpm,简单)

yum install vsftpd

rpm -ql vsftpd(查看安装了什么文件)

编译安装:(make,需求个性化)

http://down1.chinaunix.net/distfiles/vsftpd-3.0.2.tar.gz

tar -zxf  vsftpd-3.0.2.tar.gz

cd vsftpd-3.0.2

less INSTALL

make

make install

四、配置认证方式(三种)

匿名认证

echo “anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES” >/etc/vsftpd/vsftpd.conf

本地用户认证

echo “listen=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES” >/etc/vsftpd/vsftpd.conf

虚拟用户认证

1.配置认证模块

32位系统

echo “auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login”>/etc/pam.d/vsftpd.vu

64位系统

echo “auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login”>/etc/pam.d/vsftpd.vu

2.配置指向认证模块

pam_service_name=vsftpd.vu

3.生成虚拟用户库

db_load -T -t hash -f /etc/vsftpd/login.txt  /etc/vsftpd/vsftpd_login.db

chmod 600 /etc/vsftpd/vsftpd_login.db

4.创建虚拟用户配置文件

echo “write_enable=YES
local_root=/home/vsftpd/dbzh3″>/etc/vsftpd/virtual_user

5.vsftpd.conf配置

echo “listen=YES
listen_port=21
write_enable=YES
local_umask=022
dirmessage_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
virtual_use_local_privs=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/
userlist_enable=YES
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES” >/etc/vsftpd/vsftpd.conf

五、配置主被动模式

1.主动

listen_port=21
connect_from_port_20=YES

2.被动

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999

 

六、权限限制

chroot_local_user=YES
tcp_wrappers=YES

七、配置文件注解

匿名ftp的以上控制分别为:
用户控制

anonymous_enable=YES                         启用匿名用户
no_anon_password=YES                         需要密码
anon_root=/var/ftp                                  匿名用户的主目录(默认为/var/ftp)
local_enable=NO                                         禁用本地用户
guest_enable=NO                                        禁用gust用户
ftp_username=ftp                                       匿名用户的用户名(默认还有anonymous可使用)

权限控制

write_enable=NO                                        匿名用户不可写
local_umask=022                                       上传文件的umask
file_open_mode=0666                             上传文件的总权限,与umask共同决定了上传文件的实际权限
anon_upload_enable=NO                        匿名用户不可以上传
anon_mkdir_write_enable=NO             匿名用户不可以建目录等写操作
anon_other_write_enable=NO              匿名用户不可以做其他的写操作
anon_world_readable_only=YES        匿名用户可以读文件
#chown_uploads=YES                              修改上传的文件的属主
#chown_username=ftpadmin                修改上传的文件的属主为XXX
ascii_upload_enable=NO                         不使用ascii上传文件
ascii_download_enable=NO                   不使用ascii下载文件

userlist_enable=YES                                  启动用户限制功能
userlist_deny=YES userlist                     文件中的用户禁止登录,NO的话则只有userlist中用户可以登录
userlist_file=/etc/vsftpd/denyuser    禁止登录用户列表文件名和位置(在denyuser文件中加入一行denyuser1)
chroot_list_enable=YES                           启动用户目录限制功能
chroot_list_file=/etc/vsftpd/unchroot      此文件中的用户不能改变到其他外层目录中。(加入一行unchrootuser)

超时控制

idle_session_timeout=600                     空闲超时600秒
data_connection_timeout=120            传输超时120秒
accept_timeout=60 pasv                         模式等待时间60秒
connect_timeout=60 port                       模式等待时间60秒

服务控制

xferlog_enable=YES                                   启动日志功能
xferlog_std_format=YES                          使用标准日志格式
xferlog_file=/var/log/vsftpd.log          日志默认的位置
pasv_enable=YES                                        启用被动模式
#port_enable=YES                                      启用主动模式
tcp_wrappers=YES                                      启用tcp_wrappers功能
nopriv_user=nobody                                 最低权限用户
listen=YES                                                       使用standalone 模式(推荐的)

显示信息

ftpd_banner=welcome to ftp.                  登录时的欢迎信息
dirmessage_enable=YES                           启动切换目录时提示目录信息的功能
message_file=.message                              目录提示信息的内容文件

连接选项

max_clients=100                                          最大连接数
max_per_ip=5                                                每个ip最大连接数
connect_from_port_20=YES                  启用20端口传输数据
#listen_address=192.168.0.2                  限制只有指定此ip地址可以访问
listen_port=21                                                监听的端口号
ftp_data_port=20                                         数据传输端口号
pasv_max_port=0                                        被动模式的端口号的上限(0为不限)
pasv_min_port=0                                         被动模式的端口号的下限(0为不限)

数据传输速度

anon_max_rate=51200                              匿名用户最大传输率
local_max_rate=5120000                        本地用户最大传输率

 

八、FTP与iptables防火墙

 1、加载模块:

modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp

2,加上一条规则:

server
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

client
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

允许连接保持的被动访问。
其实这样在重启iptables的时候所需的模块又不见了,通过不懈的努力终于找到了最终的解决方法,编辑/etc/sysconfig/iptables-config:
IPTABLES_MODULES=”ip_conntrack_ftp”
IPTABLES_MODULES=”ip_nat_ftp”
把需要加载的模块加入,无论重启系统还是iptables但ftp模块始终还是加载的。
搞定就这样哈哈哈,希望能在以后帮助大家来解决ftp上的问题。

posted @ 2013-12-04 11:29  jeffnose  阅读(224)  评论(0)    收藏  举报