1、安装ftp服务
检查ftp服务是否已安装
rpm -qa |grep vsftpd
安装ftp服务
yum install vsftpd
2、创建用户登录
安装数据库
yum install db4-utils
创建虚拟用户,并转换为本地数据库文件
/etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
保护数据库
chmod 600 /etc/vsftpd/logins.db
修改配置,用本地数据库进行验证,在/etc/vsftpd/vsftpd.conf配置
pam_service_name=vsftpd
修改/etc/pam.d/vsftpd配置,把原有的内容全部删掉或者注释掉,再写上:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/logins
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/logins
创建虚拟用户及目录
useradd -d /cache1/Test_Log virtual
若提示useradd: unable to open password file,修改权限保护,修改办法如下:
[root@203 etc]# lsattr /etc/passwd
----i-------- /etc/passwd
[root@203 etc]# lsattr /etc/shadow
----i-------- /etc/shadow
[root@203 etc]# lsattr /etc/gshadow
----i-------- /etc/gshadow
[root@203 etc]# lsattr /etc/group
----i-------- /etc/group
[root@203 etc]# chattr -i /etc/passwd
[root@203 etc]# chattr -i /etc/shadow
[root@203 etc]# chattr -i /etc/gshadow
[root@203 etc]# chattr -i /etc/group
把虚拟账号映射到virtual用户,在/etc/vsftpd/vsftpd.conf配置
guest_enable=yes
guest_username=virtual
3、安全及限速配置
取消匿名登录功能
anonymous_enable=NO
设定使用者不得更改目录
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
新增一个文件/etc/vsftpd/chroot_list,文件内容为用户名
限速
在/etc/vsftpd/vsftpd.conf配置增加一行
user_config_dir=/etc/vsftpd/userconf
创建用户配置目录
mkdir /etc/vsftpd/userconf
在/etc/vsftpd/userconf下新增一个名为用户登录名的文件,加入如下配置,意味着该用户最高速度为500Kb/s(VSFTP对于速度的限制范围大概在80%到120%之间,也就是限制最高速度为100Kb/s,但实际的速度可能在80Kb/s到120Kb/s之间。如果频宽不足,数值会低于此限制)
local_max_rate=500000
重启服务
service vsftpd restart
4、维护
增删用户密码
vi /etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
限速大小修改
/etc/vsftpd/userconf
vi user1
5、可能遇到错误
最后测试时出现530 login incrrect 提示,无法登陆。
查看日志 tail -n 20 /var/log/secure 有如下信息
Oct 21 14:19:40 www vsftpd: PAM unable to dlopen(/lib/security/pam_userdb.so)
Oct 21 14:19:40 www vsftpd: PAM [error: /lib/security/pam_userdb.so: wrong ELF class: ELFCLASS32]
Oct 21 14:19:40 www vsftpd: PAM adding faulty module: /lib/security/pam_userdb.so
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Oct 21 14:19:40 www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=kanecruise rhost=60.55.8.102
Oct 21 14:19:40 www vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user kanecruise
很明显是 /lib/security/pam_userdb.so这个载入失败。
检查本地机器
pam.i386 0.99.6.2-6.el5_5.2 installed
pam.x86_64 0.99.6.2-6.el5_5.2 installed
两种都已经安装,到底是载入的哪个,哪个载入失败呢?
机器是64位的,猜想应该是要载入pam.x86_64
cat /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
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 system-auth
account include system-auth
session include system-auth
session required pam_loginuid.so
就是这里 /lib/security/pam_userdb.so 文件载入失败,这个文件存在问题。
[root@www kanecruise]# ls /lib
lib/ lib64/
根目录存在此两个问题,尝试把lib改为 lib64并确认 /lib/security/pam_userdb.so 此文件存在。
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
保存重启vsftpd服务。
重新测试,登陆成功了。
6、限制IP访问网段
只允许网段访问:在/etc/hosts.deny 配置:
vsftpd: ALL EXCEPT 183.250.161.14
限制某个网段访问在/etc/hosts.deny配置:
vsftpd:183.250.161.14
7、上传资源类型限制:
deny_file={*.mp3,*.mov,.private}