配置的思路:使用帐号和密码登录FTP服务器,每个用户只能登录到自己用户名的目录中,可以增删改查文件。 -- 使用VSFTP的虚拟用户和chroot目录的配置。
安装vsftp。使用pam管理vsftp的虚拟用户。
vsftp使用的目录/ftp vsftp使用的本地用户:vsftpd
因为是使用vsftpd的虚拟用户,所以我们需要先在系统中创建一个用户,并且该用户对/ftp目录具有可读可写可执行权限。
在iptables中开放20、21、被动模式端口范围(30000-35000),并加载FTP驱动模块
modprobe ip_nat_ftp
modprobe 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配置ssl
1.生成证书
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
2.在vsftpd.conf配置文件中增加ssl配置项
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_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模块。在使用虚拟用户上传下载文件的时候映射到本地新建的用户。