ftp 虚拟账号(pam)
ftp 采用明文的数据传输方式,如果使用本地账户登录ftp服务器,若该用户的用户名和密码被别人抓包抓到,其他人就可以使用该账号登录ftp服务器,产生不安全的情况。
可以使用虚拟账号,在ftp服务器上将该虚拟账号映射为本地账号,这样即使账号在网络上被截获,也只是在系统上不存在的账号,无法登录系统。
1.新建挂载点,挂载光盘
[[email protected] ~]# mkdir /mnt/cdrom
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom
2.安装vsftpd
[[email protected] ~]# rpm -ivh /mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm
3.产生文本文件,用于存放虚拟账号和密码
[[email protected] ~]# vim /etc/vsftpd/vuser.txt
test1 ##虚拟账号test1
123 ##虚拟账号test1的密码
test2 ##虚拟账号test2
456 ##虚拟账号test2的密码
4.安装db_load 工具,使刚刚产生的账号和密码文件变为数据库文件,该工具位于软件包db4_util中。
[[email protected] Server]# rpm -ivh /mnt/cdrom/Server/db4-utils-4.3.29-10.el5.i386.rpm
5。使用db_load --help使用帮助。将uni账号文件变为数据库文件
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
6.当用户登录ftp服务器时,默认到/etc/passwd下进行账户验证,在/etc/vsftpd/vsftpd.conf中有一条语句:pam_service_name=vsftpd ,说明可是使用pam进行验证,验证文件叫vsftpd。
该文件为接口文件,告诉pam,验证时要调用哪些模块,以及模块的参数。
打开接口文件vsftpd
[[email protected] vsftpd]# vim /etc/pam.d/vsftpd
该文件需要使用模块/lib/security/pam_userdb.so
查看该模块的手册:
[[email protected] txts]# man /usr/share/doc/pam-0.99.6.2/txts/README.pam_userdb
可以看到pam_userdb模块是用来验证存放在数据库中的用户名和密码的。
db=/path/database ##用来说明数据库文件的位置
7.再次打开/etc/pam.d/vsftpd文件
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
虚拟账号验证成功后,需要将虚拟账号和本地账号进行映射
8.新建本地账户user1
[[email protected] txts]# useradd user1
[[email protected] txts]# passwd user1
9.查看vsftpd.conf手册
查找guest关键字,guest_enable :所有的非匿名用户登录后将作为guest用户,guest用户映射成为guest_username定义的用户名。
10.在vsftpd.conf中添加如下语句:
guest_enable=YES
guest_username=user1
11.重启ftp服务
[[email protected] txts]# service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
12.测试:
13.给user1 的家目录添加r权限
[[email protected] home]# ll -d user1/
drwx------ 3 user1 user1 4096 09-16 16:58 user1/
[[email protected] home]# chmod o+r user1/
14.再次访问
15.设置用户的最大速率
anon_max_rate=100 匿名用户的最大速率为100B/s
local_max_rate=10000 本地用户的最大速率为10M/s
max_clients=2 客户端的最大数量为2
max_per_ip=1 每个ip可以开启的连接数量
16.磁盘配额:
将test1 和test2 账户上传的总文件大小不能超过15MB
创建新分区
使用partprobe命令使linux内核重新读取分区表:
[[email protected] ~]# partprobe /dev/sda
格式化该分区
[[email protected] ~]# mkfs -t ext3 /dev/sda5
新建挂载点,将该分区永久性挂载到挂载点上
[[email protected] ~]# mkdir /mnt/partion
[[email protected] ~]# vim /etc/fstab
mount -a
执行quotacheck -augvc 后,在/mnt/5文件夹内产生文件:aquota.user,所有用户的配额文件。
编辑user1的配额文件
[[email protected] ~]# edquota -u user1
quotaon /dev/sda5 使配额生效
[[email protected] ~]# quotaon /dev/sda5
在开机脚本文件/etc/rc.d/rc.local中添加命令:quotaon /dev/sda5使开机时配额自动生效
由于user1 的家目录在“/”下,不在/dev/sda5分区上,也就是/mnt/partion上。将user1 的家目录复制到/mnt/partion /home下,修改/etc/passwd 中user1 的家目录位置为/mnt/partion/home/user1.由于虚拟账号test1 和test2 登录到系统中后变为guest账户,所有要修改vsftpd.conf文件,使匿名用户具有上传权限。再修改/mnt/partion/home/user1的权限,使other用户据哟上传权限。
[[email protected] home]# mkdir /mnt/partion/home
[[email protected] home]# mv * /mnt/partion/home/
[[email protected] partion]# chmod -R o+rw home
[[email protected] partion]# vim /etc/passwd
user1:x:501:502::/mnt/partion/home/user1:/bin/bash
[[email protected] partion]# vim /etc/vsftpd/vsftpd.conf
上传文件
文件大小只有15M
再次上传,上传失败
配额生效
转载于:https://blog.51cto.com/jialiang10086/993020