Vsftp(Very Secure FTP)以它优越的安全,稳定,快速的性能在ftp软件中占了一席之地。
很多大站已经采用它如如ftp.redhat.com,ftp.kde.org,ftp.gnome.org.等。
Vsftp官方最新版本下载:ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.4.tar.gz
本文所有配置文件和相关文件的下载:http://xiutuo.vxv.cn/blog/file/vsftp_conf.rar
本文采用vsftp2.0.4,它有三种实现形式:
1、匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问
2、本地用户形式:以/etc/passwd中的用户名为认证方式
3、虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,
虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中
的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不让所有人匿名下载;既需要对下载用户进行管理,又考虑到主机安全和
管理方便的FTP站点来说, 虚拟用户是一种极好的解决方案。
一:下载安装
下载到/home/xiutuo/software/目录下,由于默认编译是支持pam认证,不支持tcpwrappers和ssl。
我们采用默认,即:本地用户不允许登入vsftp,不能使用hosts.allow和hosts.deny
# rpm -e vsftpd-** //卸载原来低版本的vsftp
# cd /home/xiutuo/software/
# tar -zvxf vsftpd-2.0.4.tar.gz
# cd vsftpd-2.0.4
# make
把编译好的文件安装到相应目录下即可,没有相关目录请先创建。
# cp vsftpd /usr/local/sbin/vsftpd
# cp vsftpd.conf.5 /usr/local/man/man5
# cp vsftpd.8 /usr/local/man/man8
# cp vsftpd.conf /etc/
二:vsftp的启动和关闭--独立模式下
启动:
# /usr/local/sbin/vsftpd &
关闭:
# killall vsftpd
以下的配置均采用vsftp推荐的独立方式启动,即standalone方式启动vsftp
三:匿名用户vsftp配置
创建必要的账号,目录:
# useradd nobody //可能你的系统已经存在此账号,那就不用建立
# mkdir /usr/share/empty //可能你的系统已经存在此目录,那就不用建立
# mkdir /var/ftp //可能你的系统已经存在此目录,那就不用建立
# useradd -d /var/ftp ftp //可能你的系统已经存在此账号,那就不用建立
# chown root:root /var/ftp //改变属主
# chmod og-w /var/ftp //赋予相关目录权限
a.配置匿名用户只能下载,不能上传的vsftp,vsftpd.conf内容如下:
# Standalone mode
listen=YES
listen_address=192.168.1.100 //可以通过域名来访问vsftp
#tcp_wrappers=YES
# Access rights
anonymous_enable=YES
anon_root=/var/ftp
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=NO //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限)
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
ftpd_banner=Welcome to xiutuo.com FTP service.
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
max_clients=200
max_per_ip=4
#check_shell=NO
b.配置匿名用户可下载,可上传。
先创建一个可写目录/var/ftp/pub
# mkdir /var/ftp/pub
# chmod -R 777 /var/ftp/pub
配置文件vsftp.conf的内容如下:
# Standalone mode
listen=YES
listen_address=192.168.1.100
#tcp_wrappers=YES
# Access rights
anonymous_enable=YES
anon_root=/var/ftp
local_enable=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# Security
anon_world_readable_only=NO
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
ftpd_banner=Welcome to xiutuo.com FTP service.
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
max_clients=200
max_per_ip=4
#check_shell=NO
四:虚拟用户配置。
a.基于db的虚拟用户配置。
请查看linux中是否存在db4。
# rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
……
如果有的话,那就不必安装db,没有的话,请安装db4的db4-devel-4.2.52-7.1,db4-4.2.52-7.1,db4-utils-4.2.52-7.1相关软件包。
1.建立虚拟用户数据库文件
在/etc/下建立login.txt,添加vsftp虚拟用户和密码。
# cd /etc
# touch login.txt
# vi login.txt
#login.txt内容如下,其中虚拟用户是test,test1,test2;他们的密码分别是password0,password1,password2。用户和密码分别各占一行。
test
password0
test1
password1
test2
password2
#生成虚拟用户数据库文件vsftpd_login.db,并赋予root可以读写,其他用户没有任何权限
# db_load -T -t hash -f /etc/login.txt /etc/vsftpd_login.db
# chmod 600 /etc/vsftpd_login.db
2.建立认证文件
# vi /etc/pam.d/ftp 插入如下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
3.创建真实用户与虚拟用户的映射。
# useradd -d /home/ftpsite -s /sbin/nologin virtual
# cd /home/ftpsite
# touch test.txt
# chown virtual.virtual test.txt
4.配置文件vsftpd.conf内容如下:
# Standalone mode
listen=YES
listen_address=192.168.1.100 //可以通过域名来访问vsftp
#tcp_wrappers=YES
# Access rights
anonymous_enable=NO
#anon_root=/var/ftp
local_enable=YES //一定要yes,否则ftp登入会提示,本地用户和匿名用户都没有访问权限的提示
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
guest_enable=YES // 启用虚拟用户
guest_username=virtual //指定虚拟用户,
virtual_use_local_privs=YES //虚拟用户和本地用户权限相同
# Security
anon_world_readable_only=NO //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限)
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
ftpd_banner=Welcome to xiutuo.com FTP service.
# Performance
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
max_clients=200
max_per_ip=4
check_shell=NO