FTP 服务的访问控制

FTP服务的访问控制

1. FTP服务的自身访问控制(对象访问控制)

  • ftpusers 黑名单
  • userlist 默认黑名单(可以成为白名单)

需求1:不允许stu1用户访问ftp服务
echo stu1 >> /etc/vsftpd/ftpusers

需求2:只允许stu2用户访问ftp服务
1)修改配置文件,将user_list变成白名单
userlist_deny=NO
2)将stu2用户加入这个文件user_list
echo stu2 >> /et/vsftpd/user_list

总结:

  1. 在ftpusers文件中的用户不能访问ftp服务器
  2. 用户在user_list文件中,如果userlist_deny=NO(白名单),只在该文件中的用户可以访问
  3. 如果user_list 文件是白名单,用户既在ftpusers又在user_list,那么ftpusers拒绝优先。

用户名,密码 ? 黑名单?白名单?


2. FTP服务的网络访问控制

  • 支持tcp_wrappers

    /etc/hosts.allow 优先

    /ect/hosts.deny

    /etc/hosts.deny
    vsftpd:all    全部拒绝
    vsftpd:all EXCEPT 192.168.0.2     拒绝所有除了192.168.0.2
    vsftpd:192.168.0.254 拒绝单个IP地址,相当于hosts.allow文件增加vsftpdd:192.168.0.254:deny
    vsftpd:192.168.0.0/255.255.255.0 拒绝某个网段
    vsftpd:192.168.0.0/255.255.255.0 EXCEPT 192.168.0.254 拒绝某个网段,除了某个IP地址
    注意:此处子网掩码不支持192.168.0.0/24写法

如何判断一个服务是否支持tcp_wrappers?

1)./configure --enable-libwrap 表示支持tcp_wrappersf访问控制(配置时加上)

/usr/local/bin

2)rpm 安装

[root@server vsftpd]# ldd /usr/sbin/vsftpd|grep libwrap*
  libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fcc222de000)

[root@server vsftpd]# ldd /usr/sbin/sshd|grep libwrap*
  libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fba5dd90000)
  • 需求:拒绝10.1.1.0/24和192.168.91.0/24网段的所有人访问,除了10.1.1.3服务器

    vim /etc/hosts.deny
    vsftpd:10.1.1.0/255.255.255.0,192.168.91.0/255.255.255.0 EXCEPT 10.1.1.3
    

网络访问控制除了tcp_wrappers还可以托管给xinetd服务区管理。

vim /etc/vsftpd/vsftpd.conf
listen=YES                  // 独立模式下监听,如果托管给xinetd,需改为NO
怎么托管给xinetd?

3.搭建虚拟用户验证的FTP服务(本机验证未成功)

  1. 建立虚拟用户账户数据库

    vsftpd服务使用Berkeley DB 格式的数据库文件来存放虚拟用户账户,使用db_load工具生产数据库文件。(若未安装,安装包在安装光盘1中,软件名为db4-utils)

    [root@server vsftpd]# vim ./vusers.list      // 新建一个虚拟用户账号密码列表文件
    zhangsan
    123
    lisi
    123
    wangwu 
    456
    [root@server vsftpd]# db_load -T -t hash -f vusers.list vusers.db
    [root@server vsftpd]# ls
    banner_file  ftpusers   vsftpd.conf             vusers.db
    chroot_list  user_list  vsftpd_conf_migrate.sh  vusers.list
    [root@server vsftpd]# file vusers.db
    vusers.db: Berkeley DB (Hash, version 9, native byte-order)
    注意:db_load命令
    -T 允许非Berkeley的程序使用该数据库
    -t 指定算法(hash:哈希,散列)
    -f 指定源文件
    生成的数据库文件必须为“.db”格式
    [root@server vsftpd]# chmod 600 vusers.* //修改有关用户名密码文件的权限,增强安全性
    [root@server vsftpd]# ll vusers.*
    -rw------- 1 root root 12288 Apr 22 20:37 vusers.db
    -rw------- 1 root root    33 Apr 22 20:37 vusers.list
    
  2. 添加虚拟映射账号,为FTP根目录修改权限

    [root@server vsftpd]# useradd -d /var/ftproot/ -s /sbin/nologin virtual
    [root@server vsftpd]# ll -d /var/ftproot/
    drwx------ 4 virtual virtual 4096 Apr 22 20:47 /var/ftproot/
    [root@server vsftpd]# chmod 755 /var/ftproot/
    [root@server vsftpd]# ll -d /var/ftproot/
    drwxr-xr-x 4 virtual virtual 4096 Apr 22 20:47 /var/ftproot/
    
  3. 增加PAM认证

    [root@server vsftpd]# vim /etc/pam.d/vsftpd.vu   //手动创建从pam认证文件
    auth required    pam_userdb.so db=/etc/vsftpd/vusers
    account required pam_userdb.so db=/etc/vsftpd/vusers
    
  4. 修改配置文件,重启服务

    anon_umask=022
    guest_enable=YES
    guest_username=virtual
    
  5. 客户端测试

扩展:FTP的虚拟主机

  • 基于IP的虚拟主机
  • 基于端口的虚拟主机

eth0:10.1.1.2 只允许本地用户访问

eth1:10.1.1.3 只允许匿名用户访问,并且各自限制

[root@server vsftpd]# rpm -ql vsftpd
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS/README
[root@server vsftpd]# cd /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_HOSTS/
[root@server VIRTUAL_HOSTS]# ls
README
[root@server VIRTUAL_HOSTS]# less README    // 查看操作步骤

猜你喜欢

转载自www.cnblogs.com/liuwei-xd/p/11022021.html