linux下vsftpd系统虚拟帐户用

作者 : 开心源码 本文共2521个字,预计阅读时间需要7分钟 发布时间: 2022-05-12 共49人阅读

一、需求

1、系统帐号和虚拟帐号

这是一个相当复杂的需求,系统上少量采集系统走的ftp进行采集的。历史积累下来的,最早都是直接在OS上创立系统帐号再ftp登录(shell大部分设置为/bin/false或者/sbin/nologin,也部分用的bash和csh)。后来因为系统安全加固用了pam_tally2板块,这就导致默认的vsftpd板块会调使用系统认证,导致触发pam_tally2策略时会被锁定,影响业务采集用 。通过测试发现虚拟帐号会处理被锁定的问题—- 这个好了解,虚拟帐户调使用不涉及系统板块的调使用,所以不会被锁,即便映射的主帐号被锁,也照样可以用。

2、相对路径和绝对路径

默认用系统帐号时,ftp登陆时看到的是全路径,如zabbix帐号通过ftp登陆后pwd查看到家目录是/home/zabbix。这就是绝对路径‘;当用虚拟帐号时,默认指定local_root,比方也是/home/zabbix,虚拟帐号名为ftptest,当用这个帐号登陆后,pwd查看到为/ (实际是/home/zabbix),这就是相对路径。

3、需求

系统最终想都改造成虚拟帐号,但于涉及的帐号太多,一次性搞定显然不现实,需要一个过渡阶段,过度过程中,需要满足如下需求:

  1. a: 系统帐号和虚拟帐号都可以登陆;
  2. b: 系统帐号登陆后,显示的是绝对路径;
  3. c: 虚拟帐号登陆后,即有绝对路径的也有相对路径的。

二、系统帐号和业务帐号共存

实现这个功能的关键是vsftpd pam里的配置,直接拿本地原始配置和虚拟使用户配置叠加显然不行。这里的关键是control_flag,control_flag可以使用required也可以使用sufficient,用required需要所有内容都满足才行,当我们前两条配置虚拟使用户登录验证通过后(虚拟配置在上,系统认证在下配置时),继续向下面的配置条目进行验证,验证能否是本地使用户,发现不是,结果报错。

用Sufficient时,假如标记为 sufficient 的板块成功并且先前没有 Required 或者 sufficient 板块失败,则忽略堆栈中的所有其他板块并返回成功。

实现两者同时登陆的/etc/pam.d/vsftpd文件配置如下:

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser

account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/ftpuser

session optional pam_keyinit.so force revoke

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth required pam_shells.so

auth include password-auth

account include password-auth

session required pam_loginuid.so

session include password-auth

三、相对路径和绝对路径

对于虚拟使用户来说,登陆后能否为绝对路径的关系参数是virtual_use_local_privs ,当设置为YES时,和系统帐号权限一致,登陆后查看到的是相似于/home/使用户名 这样的路径(与local_root参数设置的一致),当设置为NO时,看到的/ 相对路径。

两个测试使用户的配置示例如下:

linux-ou3x:~ # cat /etc/vsftpd/vsftpd_user_conf/test

guest_enable=YES

local_root=/home/snsserver

anon_world_readable_only=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

guest_username=snsserver

anon_umask=022

virtual_use_local_privs=YES

linux-ou3x:~ # cat /etc/vsftpd/vsftpd_user_conf/test2

guest_enable=YES

local_root=/home/snsserver2

anon_world_readable_only=NO

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

guest_username=snsserver2

anon_umask=022

#virtual_use_local_privs=YES

vsftpd.conf的配置如下:

linux-ou3x:~ # grep -v '^#' /etc/vsftpd.conf

dirmessage_enable=YES

ftpd_banner=”Authorized users only. All activity may be monitored and reported!”

anonymous_enable=NO

anon_world_readable_only=YES

syslog_enable=YES

connect_from_port_20=YES

pam_service_name=vsftpd

listen=YES

ssl_enable=NO

pasv_min_port=30000

pasv_max_port=30010

write_enable=YES

use_localtime=YES

local_enable=YES

local_umask=022

ascii_upload_enable=YES

ascii_download_enable=YES

user_config_dir=/etc/vsftpd/vsftpd_user_conf

四、实现效果

最终效果如下:

linux下vsftpd系统虚拟帐户用

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » linux下vsftpd系统虚拟帐户用

发表回复