一、安装ftp服务shell
检查ftp服务是否已安装数据库
rpm -qa |grep vsftpd
安装ftp服务安全
yum install vsftpdsession
二、建立用户登陆ide
安装数据库测试
yum install db4-utils
建立虚拟用户,并转换为本地数据库文件ui
/etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
保护数据库unix
chmod 600 /etc/vsftpd/logins.db
修改配置,用本地数据库进行验证,在/etc/vsftpd/vsftpd.conf配置rest
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
三、安全及限速配置
取消匿名登陆功能
anonymous_enable=NO
设定使用者不得更改目录,新增一个文件/etc/vsftpd/chroot_list,文件内容为用户名
chroot_list_enable=YES
chroot_list_file=/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
四、维护
增删用户密码
vi /etc/vsftpd/logins.txt
db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/logins.db
限速大小修改
/etc/vsftpd/userconf
vi user1
五、可能遇到错误
最后测试时出现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服务。
从新测试,登录成功了。
六、限制IP访问网段
只容许网段访问:在/etc/hosts.deny 配置:
vsftpd: ALL EXCEPT 1.1.1.1
限制某个网段访问在/etc/hosts.deny配置:
vsftpd:1.1.1.1
七、上传资源类型限制:
deny_file={.mp3,.mov,.private}