联系我们

公司电话:17190811125

经理邮箱:zeta@mautow.com

销售邮箱:sale@mautow.com

公司地址:大连开发区辽河西三路169号

官方网站>专题杂项>Linux杂论Linux杂论

vsftpd服务器搭建记要
作者: zeta  点击次数:   更新时间: 2020-09-15

一、前言

        vsftpd服务器在linux系统下,默认匿名用户,出于安全考虑,ftp根目录只能读,不能写;但是在虚拟用户下,不受此限制。这里在ubuntu 20.04和centos 8示例。网络上的要么太繁琐要么太简单,而且大坑很多,这里的是经过检验是可行的,记录以备后用。

二、搭建

1、安装vsftpd,db-util

        sudo apt install vsftpd db-util

        sudo yum install vsftpd

2、vsftpd配置

        sudo vi /etc/vsftpd.conf或者sudo vi /etc/vsftpd/vsftpd.conf

保持默认,直接在最后添加:

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

3、虚拟用户配置

创建ftpuser虚拟用户,sudo useradd -s /usr/sbin/nologin ftpuser

创建用户目录,mkdir /home/xxx/1

创建vsftpd目录,sudo mkdir /etc/vsftpd

设置登录ftp的用户名test和密码test文件login.txt,sudo vi /etc/vsftpd/login.txt

test
test

对login.txt进行加密,sudo db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

虚拟用户相关配置,sudo mkdir /etc/vsftpd/vu,sudo vi /etc/vsftpd/vu/test

guest_username=ftpuser
local_root=/home/xxx/1
virtual_use_local_privs=YES
anon_umask=133

4、PAM验证配置

sudo vi /etc/pam.d/vsftpd.virtual

auth required pam_userdb.so db=/etc/vsftpd/login
account required pam_userdb.so db=/etc/vsftpd/login

5、重启服务

sudo systemctl restart vsftpd,或者sudo /etc/init.d/vsftpd restart

三、验证

浏览器或ftp客户端登录,过程省略

四、SSL/TLS配置

1、生成key和crt

openssl genrsa -out server.key 2048

openssl req -new -key server.key -out server.csr

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

2、vsftpd配置

在vsftpd.conf中修改或添加:

rsa_cert_file=/etc/vsftpd/server.crt
rsa_private_key_file=/etc/vsftpd/server.key
ssl_enable=YES

3、验证

本地验证或局域网正常,lftp -u test localhost

布置在云端,用FillZilla,总是报220错误,若不开启TLS在明文下正常,具体还有待测试,初步预估由于经过路由等复杂网络环境,基于ftp自身不安全因素等导致。ftp用于局域网还可以,若用于互联网还是考虑其它协议吧。

五、限制用户访问上级目录

在vsftpd.conf中修改为:

chroot_local_user=YES

用户目录去掉写属性,如:

chmod 555 /home/xxx/1