linux vsftpd服务配置

FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,使用20端口进行数据传输,21进行相关参数和命令传输。FTP服务器是按照FTP协议在互联网上提供文件存储和访问服务的主机,FTP客户端是向服务器发送服务请求,以建立数据传输链路的主机。FTP具有主动模式(FTP服务器主动向客户机发起连接请求)和被动模式(FTP服务器等待客户端发起连接请求,FTP默认工作模式)。

vsftpd服务具有三种认证模式:匿名开放模式、本地用户模式、虚拟用户模式。vs表示安全的ftp传输,d表示守护进程。ftp是协议,而对应软件包和程序名称是vsftpd。

1. ftp传输协议的准备:

   1.1 安装vsftpd服务程序yum install vsftpd;安装ftp客户端工具yum install ftp

   1.2 iptables防火墙管理工具默认禁止了FTP传输协议的端口号,清空iptables防火墙默认策略,然后保存。iptables -F;service iptables save

2. 处理vsftpd服务主配置文件(/etc/vsftpd/vsftpd.conf)去掉注释部分。

   mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak                  # A文件重命名为B

   grep -v "#" /etc/vsftpd/vsftpd.conf_bak > /etc/vsftpd/vsftpd.conf   #  在B文件总过滤反选非#开头的内容重定向到A文件

   cat /etc/vsftpd/vsftpd.conf_bak                                                      # 查看过滤后的文件

   结果分析:

      关于每条参数的详细意义参考:https://www.cnblogs.com/qianyuliang/p/8317890.html

       关于local_umask文件反掩码的计算:

文件默认权限:666实际权限:644umask:022
目录默认权限:777默认权限:755umask:022
公式实际权限 = 文件满权限 - umask
umask使无需逐一设置文件权限,通过umask自动设置想要的权限大小

 3. 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器上。

   3.1 修改vsftpd主配置文件:

      vim /etc/vsftpd/vsftpd.conf     

------------------------------------------------------------------------------------------------     

      anonymous_enable=YES           #打开匿名开放模式

      anon_umask=022                       #文件反掩码

      anon_upload_enable=YES         #上传权限

      anon_mkdir_write_enable=YES #写权限

      anon_other_write_enable=YES  #对已有文件的删除、修改、新建等操作

      ---------------------------------------------------------------------------------------------

      重启服务和加入开机启动项:systemctl restart vsftpd;systemctl enable vsftpd

   3.2 远程连接ftp服务器:ftp 192.168.10.10

                                          Name:anonymous

   3.3 权限问题。

在登录ftp后,默认登录的文件夹是当前用户的/var/ftp文件夹。cd pub进入当前文件夹下的pub文件夹,新建个路径发现权限不够,被拒绝。查看pub文件夹的权限:ls -ld /var/ftp/pub发现是所有者和所属组都是root,权限是715。现在有两种方式在pub路径下新建文件,1.将715改为717,或者将所有者改为系统账户ftp。因为登录后,我们的身份是“”其他人“”,权限715中,没有写权限。所以两种方法:1. chown -Rf ftp /var/ftp/pub; 2. chmod -Rf 777 /var/ftp/pub,注意赋予777权限时,一定要给pub而不是给ftp,因为ftp目录下文件太多,chmod命令可能会失败。

   3.4 SELinux域策略问题。

因为匿名开放模式是不安全的,所以SELinux安全上下文会关闭ftp访问权限,查看一下:

getsebool -a | grep ftp  然后找到ftpd_full_access为off状态,然后打开:

setsebool -P ftpd_full_access=on;-P参数让修改过得参数永久生效,确保服务器重启后依然能够顺利写入文件。

4. 本地用户模式:通过Linux系统本地的账户密码信息进行认证的模式,相比于匿名用户模式更安全,且配置起来也很简单。

4.1 编辑vsftpd主配置文件

      vim /etc/vsftpd/vsftpd.conf     

------------------------------------------------------------------------------------------------     

      anonymous_enable=NO          #关闭匿名开放模式

      anon_umask=022                       #文件反掩码

      local_enable=YES

      write_enable=YES

--------------------------------------------------------------------------------------------------

4.2 检查用户名单:user_list和ftpusers,倘若想使用用户cccc登录ftp则,在这两个文件中务必确保不存在cccc用户。因为这两个名单记录了系统常用用户名,为了防止入侵,ftp服务禁掉这些系统用户登录,所以新建的普通用户都可以直接本地登录ftp服务。

     vim /etc/vsftpd/user_list;    vim /etc/vsftpd/ftpusers

4.3 打开SELinux域中对FTP服务的允许策略:ftpd_full_access=on

4.4 登录:ftp 192.168.10.10 ;用户名;用户名密码

5. 虚拟用户模式:三种模式中最安全的一种,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用,所以即便外力破解了账户信息,依然无法登陆服务器,从而有效降低了破坏范围和影响。

三种模式登录后默认目录
1匿名用户/var/ftp(最好在此目录下的pub文件夹中处理数据)
2本地用户/home/zhangsan
3虚拟用户虚拟用户映射实际用户自定义的目录

5.1 创建用于FTP认证的用户(数据库)文件,奇数行为账户名,偶数行为密码

   vim /etc/vsftpd/vuser.list    # vuser.list后缀是啥无所谓

5.2 使用哈希算法将明文信息文件转换为数据库文件,并且降低权限,删除原始明文信息

[root@liunuxprobe Desktop]# db_load -T -t hash -f /etc/vsftpd/vuser.list /etc/vsftpd/vuser.db
[root@liunuxprobe Desktop]# file /etc/vsftpd/vuser.db
/etc/vsftpd/vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[root@liunuxprobe Desktop]# chmod 600 /etc/vsftpd/vuser.db
[root@liunuxprobe Desktop]# rm -f /etc/vsftpd/vuser.list

5.3 创建本地用户 。

    虚拟用户需要与一个实际存在的系统本地用户建立映射关系。虚拟用户建立的文件什么的属性也都归于此系统本地用户,在创建系统本地用户时指定虚拟用户登录ftp服务器时默认访问路径。

[root@liunuxprobe Desktop]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@liunuxprobe Desktop]# ls -ld /var/ftproot
drwx------. 3 virtual virtual 74 Dec 25 17:13 /var/ftproot
[root@liunuxprobe Desktop]# chmod -Rf 755 /var/ftproot

  其中,/var/ftproot就是虚拟用户登录时的默认路径。

5.4 建立支持虚拟用户的PAM文件。

   PAM可插拔认证模块是一种认证机制,它把系统提供的服务和认证方式分开,使系统管理员可以根据需求灵活调整服务程序的不同认证方式。新建一个PAM文件vsftpd.vu,目录是vim /etc/pam.d

    vim /etc/pam.d/vsftpd.vu

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

5.5 编辑vsftpd服务主配置文件,尤其注意PAM模块的更换。

   vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES

pam_service_name=vsftpd.vu

  其中,chroot是牢笼机制...

5.6 为虚拟用户设置不同的权限。

    touch /etc/vsftpd/vuser_dir/lisi

    vim /etc/vsftpd/vuser_dir/zhangsan

    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

5.7 再次修改vsftpd服务主配置文件,将两个虚拟用户不同权限配置文件存放路径加入进去

   vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=YES

pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/vuser_dir

5.8 打开SELinux域中对FTP服务的允许策略:ftpd_full_access=on

5.9 使用虚拟用户登录后,登录的默认路径是/var/ftproot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值