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
总结:
- 在ftpusers文件中的用户不能访问ftp服务器
- 用户在user_list文件中,如果userlist_deny=NO(白名单),只在该文件中的用户可以访问。
- 如果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服务(本机验证未成功)
-
建立虚拟用户账户数据库
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
-
添加虚拟映射账号,为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/
-
增加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
-
修改配置文件,重启服务
anon_umask=022 guest_enable=YES guest_username=virtual
-
客户端测试
略
扩展: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 // 查看操作步骤