FTP的搭建和维护

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}

你可能感兴趣的:(FTP的搭建和维护)