|
本帖最后由 graduated 于 2023-8-28 23:00 编辑
之前一直是用useradd添加用户来设置ftp用户在ubuntu系统上的权限。
今天完成了用vsftpd部署一个SSL/TLS+虚拟用户的Very Secure FTP服务器,不需要再在系统里useradd添加用户,也就不必担心各种权限问题。
1、安装vsftpd服务器,很简单就是常规安装命令:2、此外,为了稍后加密虚拟用户信息,用到的db_load工具,需要安装一个100K左右的db_util package:
3、安装完成,开始配置。vsftpd的配置文件ubutnu18.0~22.04,都是/etc/vsftpd.conf,
配置内容如下,每一行都强行注释,老白痴不注释下次会忘记。# vsftpd用例注释如果是listen_ipv6=YES的话,可以同时监听来自IPv6和IPv4的客户端连接,就不用这个listen=YES,改天测试。
listen=YES
# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许用户写入
write_enable=YES
# 定义ftp用户新建文件权限掩码为022,默认是077。777-权限掩码=预设权限,777-022=755。
local_umask=022
# jail 监禁用户,就是让ftp用户被限制在给他们设定的ftp目录里,不能随意访问其它目录
chroot_local_user=YES
# 如果是本地用户方式,就要设置chroot_list_enable和chroot_list_file,
# 以确定哪些本地用户被监禁,哪些本地用户可以自由访问。
# 这次用虚拟用户,所以不用设置这两项。
# 下面这一行是今天关键,浪费半天时间,就因为它,各种莫名其妙的错又是SSLv3版本不对,又是需要发送cert文件都因为它,偏偏官网用例里没有它:
allow_writeable_chroot=YES
# 设置 vsftpd使用的 PAM 服务,默认是vsftpd,修改为vsftpd.virtual,稍后去编辑这个文件:
pam_service_name=vsftpd.virtual
# 设置SSL加密访问,cert file和key file,安装vsftpd时候带了一个默认的,取消注释直接使用,
# 同时设置禁止匿名加密,并设置加密算法
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
ssl_request_cert=NO
# 为了安全,隐藏文件Owner(用户和用户组)
hide_ids=YES
# 开启被动模式,多数ftp软件都是被动模式,设置被动模式监听端口,记得iptables开放这些端口
pasv_enable=YES
pasv_min_port=49000
pasv_max_port=49100
# 激活虚拟用户,让虚拟用户和本地用户一样访问ftp
virtual_use_local_privs=YES
guest_enable=YES
# 设置虚拟用户的用户目录,稍后要创建这个根目录
user_sub_token=$USER
local_root=/home/vftp/$USER
4、创建“db4”格式虚拟用户数据库:
4.1、首先在/etc目录下编辑一个vusers.txt文本 按照用户名一行,密码一行的格式输入内容,如:(实际使用不要带注释内容)
user1 #虚拟用户名1
user1passwd #虚拟用户1的密码
user2
user2passwd
4.2、创建数据库- sudo db_load -T -t hash -f vusers.txt vsftpd-virtual-user.db
复制代码 4.3、修改数据库权限,让它无法被全局访问- sudo chmod 600 vsftpd-virtual-user.db
复制代码 4.4、删除明文vusers.txt
5、修改之前.conf里提到的pam文件vsftpd.virtual
- sudo vi /etc/pam.d/vsftpd.virtual
复制代码 文件内容如下:
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd-virtual-user
session required pam_loginuid.so
6、创建虚拟用户根目录:
- mkdir /home/vftp
- mkdir -p /home/vftp/{user1, user2}
- chown -R ftp:ftp /home/vftp
复制代码 7、最后一步,启动/重启动vsftpd服务- sudo service vsftpd stop
- sudo service vsftpd start
复制代码
8、ftp软件设置注意两点:
Encryption加密模式要选择:TLS/SSL Explicit encryption显示加密
Connection连接模式要勾选:Passive mode
|
|