cetntos下FTP服务器搭建与维护入门

一、安装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

(default follows)

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}

相关文章
相关标签/搜索