Linux操作篇之配置vSFTP

在Linux系统中,比较常用的是vsftp(Very Secure FTP),使用的协议是FTP协议。虽然vsftp是解决了ftp传输的一些的安全性问题,但在实际的传输过程中依然使用的明文传输方式。

一、vsftp两种连接方式。

1、控制连接:使用端口21,也成为命令信道,主要是用于建立连接、认证过程。这个端口是一直处于监听的状态。

2、数据连接:使用端口20(或在某些模式下,指定的端口范围中的任意端口),也称为数据信道,主要用于文件数据的传输。这个端口只有在进行文件传输时才会打开。

二、vsftp两种连接模式。

1、被动模式

2、主动模式

三、vsftp的两种传输模式

1、Binary模式:这一模式下,不对数据进行任何处理。适用于可执行文件、压缩文件及图片等。

2、ASCII模式:这一模式下,自动适应目标操作系统的一些不同的地方,如回车,结束符等。适用于文本文件。

四、三种登录验证方式(我这里测试将SELinux与防火墙关闭)

1、匿名用户登录

当安装完成并且正常启动vsftp服务后,自动设置的便是匿名用户登录;账户名:ftp或anonymous;无密码;登录的目录/var/ftp/;默认的权限是可读取(下载)不可写入(上传)。

步骤:

  (a)配置文件(/etc/vsftpd/vsftpd.conf)。

  anonymous_enable=YES  #开启匿名模式

  anon_umask=022  #匿名用户上传文件的权限掩码

  anon_root=/var/ftp  #匿名用户的活动的根目录

  anon_upload_enable=YES  #允许匿名用户上传

  anon_mkdir_write_enable=YES  #允许匿名用户新建目录

  anon_othet_write_enable=YES  #开放其他的写入权限(重命名、覆盖、删除)

  anon_max_rate=0  #上传或下载时的速率(0代表不限速,单位bytes/s)

  (b)需要写入的目录的其他用户具有写权限。

  

  缺点:文件目录杂乱无章、容易造成文件修改或者丢失的情况

2、本地用户登录

为了解决上面的缺点,可以使用本地用户登录的模式进行配置,这样每个用户都有自己的账号、密码、活动目录等信息,这样可以杜绝上面的一些问题。

账号存放(/etc/passwd);密码存放(/etc/shadow);活动目录:用户的家目录且只有对应的用户有此目录的7权限(drwx------);

步骤:

  (a)创建用户使用(useradd -r -s /sbin/nologin  name),来建立无法登录shell的用户

  (b)修改主配置文件(/etc/vsftpd/vsftpd.conf)

  local_enable=YES  #启用本地用户模式

  local_umask=022  #设置本地用户上传文件目录的权限掩码

  local_root=/var/ftp  #设置本地用户的FTP根目录

  chroot_local_user=YES  #用户活动目录最高执行到根目录

  local_max_rate=0  #限制传输速度

  ftpd_banner=Hello  #登录时的欢迎信息

  userlist_enable=YES & userlist_deny=YES  #设置黑名单(禁止/etc/vsftpd/ftpusers中的用户登录,若没有需手动建立,一个用户名占一行)

  userlist_enable=YES & userlist_deny=NO  #设置白名单(仅允许/etc/vsftpd/ftpusers中的用户登录,若没有需手动建立,一个用户名占一行)

  缺点:由于账号、密码都存在于系统账户、密码的存储位置,当出现大量用户时,极易出现问题。

3、虚拟用户登录

为了解决上面的缺点,虚拟用户模式是将用户名、密码等信息存在于数据库文件中(/etc/vsftpd/vsftpd.db,需手动建立)。

步骤:

  (a)建立存放用户名与密码的数据库文件

  首先建立一文件(vsftpduser),内容是账户名、密码,按照一行用户名一行密码的形式排列,单行用户名,双数行为密码。

  使用(db_load -T -t hash -f  vsftpduser  vsftpd.db),其中   -T是指将普通文件转化为数据库文件;-t是使用hash加密方式;-f 是源文件;vsftpd.db是加密后的数据库文件

  chmod 600 vsftpd.db(将vsftpd.db权限设置为600,保障文件安全)

  (b)创建一本地用户,其作用是将此本地用户的家目录做为虚拟用户的活动目录。(可指定其家目录位置)

  useradd  -d /var/vsftproot -s /sbin/nologin zhangsan

  让虚拟用户对映射的家目录具有读写权限

  chomd o+r /var/vsftproot

  chmod o+w /var/vsftproot

  由于只是使用此用户的家目录,并不需要登录,所以不需要设置密码。

  (c)虽然前面已创建了数据库文件,但是vsftpd服务并不会调用这个文件,所以需要修改配置文件(/etc/pam.d/vsftpd),使其调用之前的数据库文件。

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

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

  (d)修改主配置文件,使其支持并开启虚拟用户模式

  guest_enable=YES  #启用虚拟用户模式

  guest_username=zhangsan  #填写新建的作为映射的用户名(我上面新建的是zhangsan用户)

  user_config_dir=/etc/vsftpd/config  #这个目录内存放的是每个虚拟用户的相关配置文件。

  注:用于vsftpd默认本身是不支持虚拟用户的,所以/etc/vsftpd/config中的配置文件内的参数使用的是匿名用户的参数,文件名使用虚拟用户名命名即可。

五、更改为被动模式

pasv_enable=YES  #开启被动模式

pasv_min_port=30000  #设置端口范围最小为30000

pasv_max_port=40000  #设置端口范围最大为40000

 

posted on 2020-08-01 01:10  沫仔  阅读(394)  评论(0编辑  收藏  举报

导航