Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2295970
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2007-09-14 18:27:58

在RHEL4系统中构建vsftpd服务器
 
2007-09-11 kenthy#qingdaonews.com
 
################################################################
系统环境:RHEL4 [ 2.6.9-5.EL ]
软件版本:
    vsftpd-2.0.1-5
    db4-utils-4.2.52-7.1
  [注:软件包均使用RHEL4光盘自带的rpm包[安装过程略]。若需要配置虚拟FTP用户,则需要安装db4软件包(生成数据库时用到db_load工具)。]
系统环境:
    eth0:  192.168.10.1/24
    eth0:0  192.168.10.100/24
################################################################
一、vsftpd服务器配置
  1、服务器基本配置(匿名用户、本地用户)
    # cd /etc/vsftpd
    # cp vsftpd.conf vsftpd.conf.bak        //备份系统默认的vsftpd.conf配置文件
    # grep -v ^# vsftpd.conf.bak > vsftpd.conf       //去除配置文件中的注释行
    # vi vsftpd.conf        //修改配置文件,内容及解释如下
anonymous_enable=YES      //允许匿名用户登陆
local_enable=YES        //允许本地用户登陆
write_enable=YES        //若需开放任何形式的可写权限,均需启用此项
local_umask=0022        //本地用户创建文件掩码,使用0开头表示八进制
anon_upload_enable=YES        //允许匿名用户上传
anon_mkdir_write_enable=YES        //允许匿名用户创建目录
dirmessage_enable=YES        //进入目录时显示.message文件内容
xferlog_enable=YES        //启用xferlog日志记录,默认使用标准的xferlog日志格式记录到/var/log/xferlog文件中
xferlog_std_format=YES        //若不设置此项,将使用vsftp自己的日志格式记录到/var/log/vsftpd.log
# dual_log_enable=YES        //若启用此项,在xferlog和vsftpd.log两个文件中都会记录日志
connect_from_port_20=YES        //允许从20端口(FTP数据端口)建立连接
chroot_local=YES        //限制本地用户只能在宿主目录
pam_service_name=vsftpd        //指定FTP用户的pam认证文件
userlist_enable=YES        //允许使用/etc/vsftpd.user_list文件控制用户是否允许访问
userlist_deny=NO        //此项配置为NO时将只允许在/etc/vsftpd.user_list文件中指定的用户登陆,缺省值为YES
listen=YES        //设置vsftpd服务使用独立运行的方式(非xinetd)
tcp_wrappers=YES      //允许使用tcp_wrappers进行客户端控制
max_clients=100        //最多允许100个客户端连接
max_per_ip=5        //同一个IP地址最多允许5个客户端连接
anon_max_rate=50000        //匿名用户最大传输速率为50KB/s
local_max_rate=200000        //本地用户最大传输速率为200KB/s
    # chown -R ftp /var/ftp/pub        //使匿名用户在默认的pub目录有可写权限,以便上传文件等
    # chkconfig --level 35 vsftpd on
    # service vsftpd restart
    # useradd -s /sbin/nologin kenthy        //创建一个测试FTP的本地用户,shell建议设为/sbin/nologin,可以禁止登陆终端
    # passwd kenthy
  2、FTP用户安全控制
    # vi /etc/vsftpd.ftpusers        //此文件中指定的用户,将被禁止登陆vsftp服务器,每行指定一个用户名
      root
      bin
      deamon
      ……
    # vi /etc/vsftpd.user_list        //此文件中的用户是否允许登陆,将由vsftpd.conf主配置文件中的userlist_deny选项决定
      kenthy        //若主配置文件中指定userlist_enable=YES、userlist_deny=NO,则只有此文件中指定的用户可以登陆FTP
      ftp        //如本处添加了kenthy、ftp、anonymous用户
      anonymous        //则只有匿名用户及本地用户kenthy允许登陆到该FTP服务器
  3、FTP客户端访问控制
    如果在/etc/vsftpd/vsftpd.conf配置文件中,指定了tcp_wrappers=YES选项,则可以使用以下文件对客户端进行限制。
    # vi /etc/hosts.allow
vsftpd: 127.0.0.1,192.168.10.0/24,172.17.17.*        //指定允许访问的客户端IP地址
    # vi /etc/hosts.deny
vsftpd: ALL        //除了在hosts.allow文件中指定的地址以外,其它所有客户端都被禁止访问该FTP服务器

二、虚拟用户配置
  1、创建虚拟用户数据库文件
    # cd /etc/vsftpd
    # vi vusers.txt      //编辑用户数据库原始文件,奇数行为用户名,偶数行对应为前一行用户的密码
tom
123456
jerry
ilovemouse
    # db_load -T -t hash -f vusers.txt /etc/vsftpd/vusers.db        //使用db_load工具创建用户数据库
    # chmod 600 vusers.*        //为用户数据库文件设置严格的访问权限
  2、创建本地映射用户
    # useradd -d /var/ftp/vuserdir  -s /sbin/nologin vuser
    # touch /var/ftp/vuserdir/todown.txt
    # chown vuser:vuser /var/ftp/vuser/todown.txt
  3、建立新的pam认证文件
    # vi /etc/pam.d/vsftpd.vu1        //使用以下内容,将只允许开放虚拟用户和匿名用户登陆
auth    required      /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
account required      /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
    # vi /etc/pam.d/vsftpd.vu2        //使用以下内容,将允许同时开放匿名用户、本地用户、虚拟用户
auth    sufficient      /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
account sufficient      /lib/security/pam_userdb.so db=/etc/vsftpd/vusers
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
  4、修改主配置文件
    # vi /etc/vsftpd/vsftpd.conf        //添加或修改以下行的内容
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.vu2        //此处根据实际需要选用Step3中的vsftpd.vu1或vsftpd.vu2文件
  5、建立虚拟用户权限配置目录(此项可选)
    # vi /etc/vsftpd/vsftpd.conf        //在主配置文件中添加以下一行,启用虚拟用户的配置文件目录
user_config_dir=/etc/vsftpd/vuser_conf
    # vi /etc/vsftpd/vuser_conf/tom        //为虚拟用户tom创建同名配置文件,开放文件上传权限,限制传输速率200KB/s,禁止下载
anon_upload_enable=YES
anon_max_rate=200000
download_enable=NO
    # vi /etc/vsftpd/vuser_conf/jerry        //为虚拟用户jerry创建同名配置文件,开放上传及所有写权限,传输速率限制为500KB/s
anon_world_readable_only=NO      //此项如为YES,则所有人都有读取权限的文件才允许下载(不包括如所有者为ftp,权限为700的文件)
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_max_rate=500000
  6、重启vsftpd服务并测试
    # service vsftpd restart

三、虚拟主机配置
    1、添加一个虚拟IP地址
      # ifconfig eth0 192.168.10.1/24
      # ifconfig eth0:0 192.168.10.100/24        //如果服务器有两块物理网卡,可以直接使用物理网卡
    2、创建虚拟FTP服务器的根目录
      # useradd -d /var/ftp2 -s /sbin/nologin ftp2        //创建对应于虚拟FTP服务器的用户ftp2及其根目录
      # chmod -R 755 /var/ftp2
      # chown -R root:root /var/ftp2
      # mkdir -m 755 /var/ftp2/pub
      # chown ftp2:root /var/ftp2/pub
    3、准备虚拟FTP服务器的配置文件
      # cd /etc/vsftpd/
      # cp vsftpd.conf.bak vsftpd2.conf
      # vi /etc/vsftpd/vsftpd.conf        //修改原来的FTP配置文件,添加以下设置
listen_address=192.168.10.1        //指定原始FTP服务器在192.168.10.1监听服务
      # vi /etc/vsftpd/vsftpd2.conf
listen_address=192.168.10.100        //指定虚拟FTP服务器在192.168.10.100监听服务
ftp_username=ftp2
local_root=/var/ftp2
      由于在两个IP地址分别监听的FTP服务使用了不用的配置文件,原则上在FTP目录、用户控制、传输速率、以及虚拟用户设置上都可以不一样。以上设置仅在默认配置的基础上,将虚拟FTP服务器的匿名登陆、本地登陆后的根目录做了更改。
    4、重启并测试虚拟FTP服务器
      # service vsftpd restart        //将会自动检测到两个配置文件,启动两个vsftpd进程,根据各自配置文件提供不同的服务
      # ftp 192.168.10.1        //测试原始FTP服务器
      # ftp 192.168.10.100        //测试虚拟FTP服务器,根据在配置文件中的区别设置比较两个服务器的差别
阅读(1554) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-03-11 20:32:01

好东西,谢谢啊