vsftp服务器 安装和配置

vsFTPd FTP服务器,搭建及管理,设置多个虚拟用户
- https://security.appspot.com/vsftpd.html
- http://cn.linux.vbird.org/linux_server/0410vsftpd/0410vsftpd-centos4.php

安装 和 一些管理命令

# 安装vsftpd  db-util(用来存储虚拟用户)
sudo apt-get -y install vsftpd
sudo apt-get -y install db-util

## 启动 停止服务命令
sudo service vsftpd stop
sudo service vsftpd start
sudo service vsftpd restart
sudo service vsftpd status    #查看状态

# 主要配置文件和目录
/etc/vsftpd/vsftpd.conf    # vsftpd配置文件 
/etc/vsftpd/virtusers.txt  # 虚拟用户列表(一行账号 一行密码)
/etc/vsftpd/virtusers.db   # 新加用户后记得重新 db_load
/etc/pam.d/vsftpd.virtual  # PAM 验证设置
/etc/vsftpd/vu/vconf.tmp   # 虚拟用户的配置 user_config_dir=/etc/vsftpd/vu 来指定
/home/vsftpd  #宿主目录
/home/vsftpd/test  #虚拟用户目录,在数组目录下建与账号对应的文件夹

宿主用户及虚拟用户配置(虚拟用户需要由一个系统的真实用户来管理和操作)
1.新建宿主用户
2.虚拟用户,导入到db文件
3.PAM验证设置

#1.建立vsftpd服务的宿主用户,不能登录系统,指定主目录
useradd vsftpd -d /home/vsftpd -M -s /sbin/nologin
cat /etc/passwd |grep vsftpd
sudo chown -R vsftpd:vsftpd /home/vsftpd

#2.虚拟用户设置
sudo mkdir /etc/vsftpd/
sudo vim   /etc/vsftpd/virtusers.txt
# 加一些账号密码在里面,一行账号 一行密码()
# 转化为db 文件/etc/vsftpd/virtusers.db ,后面会用到,这里面保存着虚拟账号的信息
sudo db_load -T -t hash -f /etc/vsftpd/virtusers.txt /etc/vsftpd/virtusers.db

#3.PAM 验证设置,
sudo vim /etc/pam.d/vsftpd.virtual
#替换为下面两行配置,pam_userdb.so根据自己的系统配置路径,db为纲生成的(不用加后缀.db) /etc/vsftpd/virtusers.db
auth    required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers

#以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
这里的auth是指对用户的用户名口令进行验证。
这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。
相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,
意味着用户还必须将经历剩下来的验证审核。
再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。
最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。

4.修改vsftp的配置,这一步很重要,配置项有点多,功能也很齐全

#4.配置vsftpd
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
sudo vim /etc/vsftpd/vsftpd.conf

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

#在以上配置文件中,有几点需要重点指出。
local_enable=YES
write_enable=YES
local_umask=022
# 这两项是启用系统用户的写权限。
# 特别是 write_enable=YES项一定要启用,否则vsftpd虚拟用户将无法登录vsftpd。

chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
#这三项是配置vsftpd用户禁止切换上级目录的权限。

guest_enable=YES
pam_service_name=vsftpd.virtual
user_config_dir=/etc/vsftpd/vu
# 这三项是启用vsftpd虚拟用以及虚拟用户账号配置目录。

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
#这三项是启用vsftpd被动模式及相关端口。


## 新加 ###########################
#详细版 修改vsftpd.conf配置文件
anonymous_enable=NO
#设定不允许匿名访问
local_enable=YES
#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
write_enable=YES
#设定可以进行写操作。
local_umask=022
#设定上传后文件的权限掩码。
anon_upload_enable=NO
#禁止匿名用户上传。
anon_mkdir_write_enable=NO
#禁止匿名用户建立目录。
dirmessage_enable=YES
#设定开启目录标语功能。
xferlog_enable=YES
#设定开启日志记录功能。
connect_from_port_20=YES
#设定端口20进行数据连接。
chown_uploads=NO
#设定禁止上传文件更改宿主。
xferlog_file=/var/log/vsftpd.log
#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败。
xferlog_std_format=YES
#设定日志使用标准的记录格式。
async_abor_enable=YES
#设定支持异步传输功能。
ascii_upload_enable=YES
ascii_download_enable=YES
#设定支持ASCII模式的上传和下载功能。
ftpd_banner=This Vsftp server supports virtual users ^_^
#设定Vsftpd的登陆标语。
chroot_list_enable=NO
#禁止用户登出自己的FTP主目录。
ls_recurse_enable=NO
#禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么当多用户同时使用该命令时将会对该服务器造成威胁。
listen=YES
#设定该Vsftpd服务工作在StandAlone模式下。
pam_service_name=vsftpd #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
userlist_enable=YES
#设定userlist_file中的用户将不得使用FTP。
tcp_wrappers=YES
#设定支持TCP Wrappers
#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。
#默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
guest_enable=YES
#设定启用虚拟用户功能。
guest_username=ftpvload
#指定虚拟用户的宿主用户。
virtual_use_local_privs=YES
#设定虚拟用户的权限符合他们的宿主用户。
user_config_dir=/etc/vsftpd/vconf
#设定虚拟用户个人Vsftp的配置文件存放路径。
#也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件
#一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同。

5.每个虚拟用户也可以单独设置配置,在/etc/vsftpd/vu/ 文件夹,可以从上面的配置中定义
user_config_dir=/etc/vsftpd/vconf

##################################################
##4 虚拟用户配置

# 建立虚拟用户配置文件模版:
vi /etc/vsftpd/vu/vconf.tmp

# vconf.tmp内容如下:
guest_username=vsftpd
virtual_use_local_privs=NO #虚拟用户和本地用户有相同的权限。
local_root=/home/vsftpd/test1 #指定虚拟用户的具体主路径
write_enable=YES  #设定允许写操作
local_umask=022  #设定上传文件权限掩码
anonymous_enable=NO  #设定不允许匿名用户访问
anon_upload_enable=NO  #设定不允许匿名用户上传
anon_mkdir_write_enable=NO  #设定不允许匿名用户建立目录
idle_session_timeout=600  #设定空闲连接超时时间
data_connection_timeout=120  #设定单次连续传输最大时间
max_clients=10  #设定并发客户端访问个数
max_per_ip=5   #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000  #设定该用户的最大传输速率,单位b/s
anon_umask=133


#测试用户复制配置模板
cp  /etc/vsftpd/vu/vconf.tmp /etc/vsftpd/vu/test
vim /etc/vsftpd/vu/test
# 其他设置
chown vsftpd:vsftpd /var/log/vsftpd.log

你可能感兴趣的:(Ubuntu,工具安装)