Ubuntu搭建vsftp(以及使用TLS/SSL证书加密
帮同学解决个ftp使用加密搭建的问题,发现网上全是复制粘贴的重复帖子,按照步骤复现搭建完全不可行。hehe~
搭建FTP服务
本此搭建环境为ubuntu环境
首先更新下源文件,然后安装下vsftp,这里默认root权限(或者使用sudo也可以的)
apt-get update
apt-get install vsftpd
记得在云服务器上的安全组把端口开放,并在ubuntu开启ftp服务的端口
ufw allow 20/tcp
ufw allow 21/tcp
ufw status
安装了vsftp,其中默认配置文件地址为/etc/vsftpd.conf
我们首先来备份下配置文件
cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
创建ftp的目录,创建utfp用户,以及分配相应的权限(否则不能上传文件)
mkdir /home/uftp
useradd -d /home/uftp -s /bin/bash uftp
chmod 777 /home/utfp
新增allowed_users文件(运行使用的用户),内容为utfp
touch /etc/allowed_users
vi /etc/allowed_users
接下来编辑配置文件,在最后面新增内容
vi /etc/vsftpd.conf
userlist_deny=NO
userlist_enable=YES
#允许登录的用户
userlist_file=/etc/allowed_users
seccomp_sandbox=NO
#默认ftp下载目录
local_root=/home/uftp/
local_enable=YES
#设置文件上传
write_enable=YES
#使用utf8
utf8_filesystem=YES
启动vsftpd服务
sudo /etc/init.d/vsftpd start 或者 systemctl start vsftpd
查看vsftpd状态
systemctl status vsftpd
此时ftp通信抓取ftp数据包,其中都是明文。接下来我们来改造这个ftp服务器,使其使用ssl/tls证书加密
使用 SSL/TLS 证书进行加密
先生成个证书
openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048
会提示你配置相关信息,提供参考
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]: mi-di.cn
Organizational Unit Name (eg, section) []:midi
Common Name (eg, your name or your server's hostname) []:midi
Email Address []:1076735024@qq.com
接下来开启TLS连接证书的通信
sudo ufw allow 990/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw status
打开vsftpd配置文件
vi /etc/vsftpd.conf
进行下面的配置
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=40000
pasv_max_port=50000
debug_ssl=YES
开启了DEBUG,其中出了什么问题可以去/var/log/vsftpd.log下进行查看
重启VSFTPD
systemctl restart vsftpd
记得使用支持SSL/TLS加密的FTP软件哦,有一些是不支持的,所以连不上该服务器,推荐使用FileZilla
这样ftp传输的数据都加密了,也不怕中间人攻击了