您的位置:首页 > 编程语言 > PHP开发

vsftp 使用虚拟用户

2016-08-29 15:52 316 查看
配置的思路:使用帐号和密码登录FTP服务器,每个用户只能登录到自己用户名的目录中,可以增删改查文件。 -- 使用VSFTP的虚拟用户和chroot目录的配置。

安装vsftp。使用pam管理vsftp的虚拟用户。

vsftp使用的目录/ftp vsftp使用的本地用户:vsftpd

因为是使用vsftpd的虚拟用户,所以我们需要先在系统中创建一个用户,并且该用户对/ftp目录具有可读可写可执行权限。

在iptables中开放20、21、被动模式端口范围(30000-35000),并加载FTP驱动模块modprobe ip_nat_ftpmodprobe ip_conntrack_ftp

/etc/vsftpd.conf文件内容

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

# 指定vsftp欢迎信息及日志记录格式和日志文件路径
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to nixCraft ftp server

connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
# 使用的本地账户的名称
guest_enable=YES
guest_username=vsftpd

secure_chroot_dir=/var/run/vsftpd/empty
# 指定使用pam.d目录中的哪个文件
pam_service_name=vsftpd
# 启用被动模式、被动模式使用的端口号范围及被动模式使用的公网IP
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=61.139.2.69

#虚拟用户目录
user_config_dir=/etc/vsftpd/user_conf

# vsftp使用ssl key方式
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

#结合/etc/hosts.allow和/etc/hosts.deny限制ip访问vsftpd服务。
tcp_wrappers=YES

修改/etc/hosts.deny
加入vsftpd : ALL

修改/etc/hosts.allow
加入vsftpd:.admin99.net
vsftpd:192.168.0.
vsftpd:192.168.0.0/255.255.255.0
第一行表示,只有admin99.net这个域里的主机允许访问vsftpd服务,注意admin99.net前面的那个点(.);
/第二行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意0后面的点(.);
第三行表示,只有192.168.0这个网段的用户允许访问vsftpd服务,注意这里不能写为192.168.0.0/24。

/etc/pam.d/vsftpd文件内容 ,这个文件就是使用的用户名和密码的txt生成的db数据文件。/etc/vsftpd/user_config这个文件就是.db文件路径

auth sufficient pam_userdb.so db=/etc/vsftpd/user_config
account sufficient pam_userdb.so db=/etc/vsftpd/user_config

虚拟用户配置文件内容/etc/vsftpd/user_conf/username
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/ftp/FTPUser
该配置内容为具有可读可写权限。

创建一个本地系统用户
useradd vsftpd -d /ftp -s /bin/false
chown vsftpd:vsftpd /ftp

创建文本文件loguser.txt
格式如下:
username
password

于是,我们/home/loguser.txt文件的内容为
cd /home 切换到/home目录
sudo touch /home/loguser.txt 创建账户和密码文件
sudo gedit /home/loguser.txt
然后将下面的账户文件字符粘帖入loguser.txt中,注意一行一行输入。
注意:奇数行为账户名,偶数行为密码。也就是1.3.5.等行为用户名,2.4.6行为密码;
最后一行需要回车(否则建立数据库文件时无法识别最后一行,导致报奇数行错误)。

db1
db100
db2
db200
db3
db300
test
生成数据库
sudo db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db

最后设置一下数据库文件的访问权限
sudo chmod 600 /etc/vsftpd_login.db

在ubuntu下要启动、停止、重启vsftpd,我们必须使用以下命令:
sudo service vsftpd stop
sudo service vsftpd start
sudo service vsftpd restart

vsftp配置ssl1.生成证书sudo openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem2.在vsftpd.conf配置文件中增加ssl配置项rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem配置强制使用ssl ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
After this we configure the server to use TLS, which is actually a successor to SSL, and preferred:
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
Finally, we will require add some additional options to flesh out our configuration file:
require_ssl_reuse=NO
ssl_ciphers=HIGH

总结:vsftp使用虚拟用户访问主要使用了单用户配置的方式。使用了pam模块。在使用虚拟用户上传下载文件的时候映射到本地新建的用户。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vsftp