当前位置: 首页 > news >正文

vsftp+ssl服务搭建

文章目录

      • centos7
        • 安装
        • 文件结构
          • /etc/vsftpd/vsftpd.conf
          • /etc/vsftpd/chroot_list
          • /etc/vsftpd/ftpusers
          • /etc/vsftpd/user_list
        • 配置(本地用户模式配置)
        • 开启ssl
        • error
      • 开启虚拟用户模式

centos7

安装

yum install vsftpd

文件结构

/etc/vsftpd/vsftpd.conf

​ ftp的主配置文件

/etc/vsftpd/chroot_list

​ 该文件为自己新建,里面放允许登录ftp的用户,一行放一个用户名

/etc/vsftpd/ftpusers

​ 里面放不允许登录ftp的用户

/etc/vsftpd/user_list

​ 这个文件在有了chroot_lsit后就有点鸡肋,默认情况userlist_deny=YES ,这时,该文件内的用户就不可以登录,当userlist_deny=NO,该文件内的用户就可以登录。

配置(本地用户模式配置)

打开配置文件:

vim /etc/vsftpd/vsftpd.conf

修改以下内容(注意,监听IPV6会同时开启IPV6和IPV4,因此只设置listen_ipv6=YES也是可以的,不过会慢一点,因为使用这个的话你会发现会先匹配ipv6,而ipv6无法使用从而还是使用ipv4):

# 拒绝匿名登录
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 允许上传和修改内容
write_enable=YES

# 将用户限制在自己的主目录里
chroot_local_user=YES

# 开启可登录用户列表
chroot_list_enable=YES

# 指定用户列表文件目录
chroot_list_file=/etc/vsftpd/chroot_list

# 开启ipv4监听
listen=YES

# 注释掉,listen和listen_ipv6无法同时开启,
# listen_ipv6=YES

创建一个用户专门用于管理ftp,并设置其家目录,该目录专门用于上传和下载:

useradd ftpuser -d /var/ftp/ftpuser

passwd ftpuser

在用户列表中添加该用户,首先创建chroot_list文件:

touch /etc/vsftpd/chroot_list

并输入以下内容:

ftpuser

在vsftpd.conf文件中添加如下内容:

# 指定ftpuser使用的目录
local_root=/var/ftp/ftpuser
allow_writeable_chroot=YES
# 密码登录
pasv_enable=YES
pasv_address= 你的ip地址 
# 设置数据传输可用的端口范围
pasv_min_port=40000
pasv_max_port=45000

重启vsftpd并开启自启:

systemctl restart vsftpd

systemctl enable vsftpd

开启ssl

普通的ftp是不安全的,因此需要开启SSL,实际上是TLS,这里手动创建ssl。

创建.ssl目录:

mkdir /etc/vsftpd/.ssl

创建SSL证书:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/.ssl/vsftpd.key -out /etc/vsftpd/.ssl/vsftpd.pem

在vsftpd.conf文件末尾添加如下内容:

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
rsa_cert_file=/etc/vsftpd/.ssl/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/.ssl/vsftpd.key  

重启:

systemctl restart vsftpd

最后,不要忘记在iptables中添加相关记录。

error

​ 如果直接拷贝代码,有时会出现一些问题,比如code=exited status=2,一般是某个变量设置值错误的问题,这是因为在在copy的代码中,变量后往往会有一些看不见的符号,这导致变量值设置错误,这个时候清理一下就好。

如果想要看更为详细的信息,不是去systemctl status vsftpd,而是输入以下命令:

vsftpd /etc/vsftpd/vsftpd.conf

开启虚拟用户模式

​ 虚拟用户模式是匿名模式、本地用户模式和虚拟用户模式三种模式中最安全的一种认证模式。前面开启的是本地用户模式。虚拟用户模式旨在使用虚拟出来的用户来登录ftp,这个虚拟用户只能访问指定的目录,不像本地用户模式可以访问其他目录。

参考:第11章 使用Vsftpd服务传输文件。 | 《Linux就该这么学》 (linuxprobe.com)

(1)开启虚拟用户模式,注意,以下只显示了·部分配置,没显示的配置都是本地用户模式配置了的

打开ftp配置文件

vim /etc/vsftpd/vsftpd.conf

输入以下内容,同时记得关闭本地用户模式:

# 虚拟用户模式关键参数
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES


# 本地用户模式关键参数
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list

(2)创建virtual用户和虚拟用户配置目录,其中/var/ftp/virtual是虚拟用户的访问根目录(也是virtual用户的家目录):

useradd -d /var/ftp/virtual -s /sbin/nologin virtual
mkdir /etc/vsftpd/virtual

(3)创建虚拟用户数配置目录,配置目录是虚拟用户配置文件所在目录,其下的配置文件内容为vsftpd.conf配置匿名用户时所需的部分内容:

mkdir /etc/vsftpd/virtual

创建相应的配置文件:

vim /etc/vsftpd/virtual/user1

输入以下内容,local_root指定了用户访问的目录,无该目录可自行创建,该目录及父目录应赋予相应的权限,都赋予755就行,umask是和virtual对user1目录的权限再作掩码得到在该目录下新建文件和文件夹的默认权限,这里是755:

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=000
local_root=/var/ftp/virtual/user1

新建user2的配置文件,可和上面类似。

(4)开启pam,在vsftpd.conf文件中添加以下行:

pam_service_name=vsftpd.vu

(5)新建一个用于虚拟用户认证的PAM文件vsftpd.vu:

vim /etc/pam.d/vsftpd.vu

输入以下内容,其中PAM文件内的“db=”参数为使用db_load命令生成的账户密码数据库文件的路径,但不用写数据库文件的后缀:

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

(6)新建虚拟用户列表文件,并生成相应的数据库文件:

vim /etc/vsftpd/vuser.list

输入以下内容:

user1
password1
user2
password2

生成数据库文件并赋予其可读可写的权限:

 db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
 
 chmod 600 vuser.db

(7)重启vsftpd然后远程用虚拟用户和密码访问即可(注意,我的系统是关了SELInux的

相关文章:

  • 做网站用域名不备案怎么弄/百度框架户开户渠道代理
  • 上海网站建设高端定制网络服务公司/seo课堂
  • 1688网站怎么做分销/如何优化网页
  • wordpress如何添加封面/千牛怎么做免费推广引流
  • 苏州好的做网站的公司有哪些/考试培训
  • 做网站的职位/百度客户管理系统登录
  • vue+node+mysql全栈项目完整记录
  • 机器学习/人工智能 实验二:图像特征自动学习方法实践与分析
  • sqli-labs 11~14 多命通关攻略(报错注入)
  • python学习笔记---面向对象高级编程【廖雪峰】
  • 1813. 句子相似性 III
  • 【PCB专题】什么是工程咨询EQ(Engineer Questions)
  • 基于强化学习Q学习算法的AI下五子棋项目
  • pdf怎么压缩的小一点,这一招超级有效
  • java通过sessionID获取指定session,jetty通过sessionID获取指定session,Jetty的session源码分析
  • Python连接es笔记二之查询方式汇总
  • 光纤内窥镜物镜光学设计
  • 3.Python基础之流程控制