当前位置: > Linux服务器 > ftp >

CentOS下VSFTPD配置指南

时间:2014-10-25 14:15来源:linux.it.net.cn 作者:it
1、通过YUM安装必需的vsftpd, pam, pam-devel;
2、通过编译安装必需的pam_mysql(下面附件里);
3、修改默认vsftpd配置文件 (/etc/vsftpd/vsftpd.conf)以及添加ftp用户的权限配置文件(/etc/vsftpd/vconf/);
4、添加虚拟系统用户,及其ftp用户登录认证数据库;
5、修改vsftpd默认的pam配置文件 (/etc/pam.d/vsftpd);
6、添加ftp端口到防火墙,重启vsftpd服务,测试ftp虚拟用户登录。

1)
[simonsun@magic ~]$ sudo yum install vsftpd pam pam-devel
目前的版本为
vsftpd - 2.0.5-12.el5, pam - 0.99.6.2-3.27.el5, pam-devel - 0.99.6.2-3.27.el5。

2)
[simonsun@magic ~]$ wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[simonsun@magic ~]$ tar zxvf pam_mysql-0.7RC1.tar.gz
[simonsun@magic ~]$ ls pam_mysql-0.7RC1
acinclude.m4  config.guess  configure     CREDITS     ltmain.sh    missing        pam_mysql.c        pkg.m4
aclocal.m4    config.h.in   configure.in  INSTALL     Makefile.am  mkinstalldirs  pam_mysql.spec     README
ChangeLog     config.sub    COPYING       install-sh  Makefile.in  NEWS           pam_mysql.spec.in  stamp-h.in
[simonsun@magic ~]$ vim pam_mysql-0.7RC1/configure
#修改configure中的一个bug,将下面的一段修改,加上#include <md5global.h>,原来没有此引用。
=================================
#include <md5global.h>
#include <md5.h>

int
main ()
{

md5_calc(0, 0, 0);

  ;
  return 0;
}
=================================
[simonsun@magic ~]$ cd pam_mysql-0.7RC1
[simonsun@magic pam_mysql-0.7RC1]$ ./configure 
[simonsun@magic pam_mysql-0.7RC1]$ make
[simonsun@magic pam_mysql-0.7RC1]$ sudo make install 
[simonsun@magic pam_mysql-0.7RC1]$ sudo cp /usr/lib/security/pam_mysql.* /lib/security/

3)
[simonsun@magic ~]$ sudo vim /etc/vsftpd/vsftpd.conf
======================================
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
ftpd_banner=Welcome to Magic Linux FTP service.

#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails

chroot_local_user=YES
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

#ls_recurse_enable=YES
listen=YES
listen_port=21
#listen_ipv6=YES

#下面是添加的:
guest_enable=YES
guest_username=vvsftpd        #虚拟系统用户,在步骤4)中添加该用户到系统用户中。
user_config_dir=/etc/vsftpd/vconf/    #登录ftp的虚拟用户的权限配置文件。
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
======================================
[simonsun@magic ~]$ sudo mkdir /etc/vsftpd/vconf/
[simonsun@magic ~]$ sudo vim /etc/vsftpd/vconf/myftp
======================================
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
======================================

4)
[simonsun@magic ~]$ sudo /usr/sbin/useradd -d /home/vvsftpd -s /sbin/nologin vvsftpd
[simonsun@magic ~]$ mysql -u root -p
#执行如下语句,为虚拟系统用户vvsftpd创建虚拟用户(如myftp)登录ftp时的认证数据库vsftpd
======================================
create database vsftpd;
use vsftpd;
create table user(name char(20) binary,passwd char(20) binary);
insert into user values ('myftp',ENCRYPT('ptfym'));
grant select on vsftpd.user to vvsftpd@localhost identified by 'PaSsWoRd';
flush privileges;
======================================

5)
[simonsun@magic ~]$ sudo vim /etc/pam.d/vsftpd
修改成如下
======================================
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers nerr=succeed
#auth       required    pam_shells.so
auth required /lib/security/pam_mysql.so user=vvsftpd passwd=PaSsWoRd host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=1
account required /lib/security/pam_mysql.so user=vvsftpd passwd=PaSsWoRd host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=1
#auth       include     system-auth
#account    include     system-auth
session    include      system-auth
session    required     pam_loginuid.so

======================================

6)
[simonsun@magic ~]$ sudo /sbin/iptables -I INPUT -p tcp --dport 20 -j ACCEPT
[simonsun@magic ~]$ sudo /sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT 
[simonsun@magic ~]$ sudo /etc/rc.d/init.d/iptables save 
[simonsun@magic ~]$ sudo /etc/rc.d/init.d/iptables restart
清除防火墙规则:                                           [确定]
把 chains 设置为 ACCEPT 策略:filter nat                   [确定]
正在卸载 Iiptables 模块:                                  [确定]
应用 iptables 防火墙规则:                                 [确定]
载入额外 iptables 模块:ip_conntrack_netbios_ns            [确定]
[simonsun@magic ~]$ sudo /etc/rc.d/init.d/vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
[simonsun@magic ~]$ ftp shellfisher.3322.org
Connected to shellfisher.3322.org.
220 Welcome to Magic Linux FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (shellfisher.3322.org:simonsun): myftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (221,215,250,110,86,88)
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir testftp
257 "/testftp" created
ftp> ls      
227 Entering Passive Mode (221,215,250,110,43,155)
150 Here comes the directory listing.
drwx------    2 507      509          4096 Mar 24 08:32 testftp
226 Directory send OK.
ftp> quit
221 Goodbye.

======================================

参考链接:
http://blog.chinaunix.net/u/27493/showart_418571.html
http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users (责任编辑:IT)
------分隔线----------------------------