免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1081 | 回复: 0
打印 上一主题 下一主题

linux下的vsftp服务 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-14 23:02 |只看该作者 |倒序浏览
linux下的vsftp服务
  这里以vsftpd.-2.0.4.bz为范例,请留意你的系统是否装有开发环境,vsftpd的网站是
http://vsftpd.beasts.org
.
  ftp是特意提供上传和下载的一项服务,一般会开21为默认端口,其中有message和date二条通信通道,一个信息传递,另一个就是传输数据,其中在dos系统登陆ftp的软件直接是ftp
ftp.server.org
win下面的很多了,unix下面的有ftp和gftp.
  首先把下载来的vsftpd拷贝到"/usr/src"目录里,

  •   #pwd

  •   /usr/src

  •   #ls

  •   vsftpd-2.0.4.tar.gz

  •   #tar zxvf vsftpd-2.0.4.tar.gz

  •   #cd vsftpd-2.0.4

  •   #make;make install

  •   #useradd -d /var/ftp ftp

  •   #cp vsftpd.conf /etc/

  •   #cp RedHat/vsftpd.pam /etc/pam.d/ftp
    第五句是表示解压缩文件,注意的是第七句.往往其它软件解压后的第一件事是./config,但这个没有,可以直接make进行编译,安装好后,运行man INSTALL,那里会一步一步的教你,我说的都是些大概,第八句是测试本机是否存在了ftp这个用户,当然也可以用finger先行查看,这里方便了^_^,安装好后的vsftpd的服务器是匿名服务器,也就是说不允许有密码有帐号的人访问,匿名的文件夹默认指定为"/var/ftp"所以上面的并不完整,我们还需要手工建立一下,"#mkdir /var/ftp"由于建立的是匿名服务器,安全一定要有所保证.
    #chown root.root /var/ftp
    #chmod og-w /var/ftp
      这两句话的意思就是把属主分给root用户,其它用户
       第九句是把当前目录下的vsftpd.conf移到/etc/下,否则系统找不到配置文件,第十句是把当前目录下的RedHat子目录下的vsftpd.pam拷贝到/etc/下并更名为ftp,这一点需要注意,

  • #which vsftpd

  • /usr/local/sbin/vsftpd

  • #/usr/local/sbin/vsftpd &  #后台启动ftp服务

  • #echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local #开机自动启动!
    使用which 命令查看vsftpd所处的目录,"/usr/local/sbin/vsftpd"因为vsftpd是一个系统服务,所以它也将会在/etc/xinetd.d/也会有vsftpd这个文件,我们让vsftpd是一个独立的进程,需要把/etc/xinetd.d下的vsftpd关闭,chkconfig vsftpd off可用chkconfig vsftpd --list查看是否成功关闭了,接下来就是查看当前系统端口中是否已经别的服务占用了21端口.
    #netstat -tnlp | grep 21
    #/etc/rc.local  #如果没有的话就运行这条
    下面就开始配置这个服务器了vi /etc/vsftpd,这里是以本地用户为主.
    其中有几个比较常用的选项.这里加以说明;
    anonymous_enable=yes 允许匿名用户访问
    local_enable=yes 允许本地用户,默认是注解了
    write_enable=yes 允许客户写命令,
    local_umask=022 本地用户新建文件的值
    anon_upload_enable=yes 允许匿名用户上传
    anon_mkdir_enable=yes允许匿名用户建文件夹,不要选此项
    dirmessage_enable=yes 允许使用文件夹的说明选项
    ftpd_banner=welcome to my frist ftp server 欢迎辞
    ls_recurse_enable=yes 允许使用ls -R,不使用
    listen=yes 监听模式,独立运行的关键
    保存退出后#killall -9 vsftpd
    #/usr/local/sbin/vsftpd & 或者是
    killall -i vsftpd 抑或是killall -HUP vsftpd
    之后重新登陆测试;
    ftp localhost
    会看到成功的提示符吧..这样你就可以用系统用户进行登陆,登陆后的主目录是帐号的主目录,可以用put上传,get下载.具体的在进入后可用help查看帮助,那匿名用户能否传和下载文件呢?
    #ftp localhost
    Name (localhost:root):ftp
    #password:回车
    #put /etc/services services227 Entering Passive Mode (127,0,0,1,236,198)
    553 Could not create file.  
    你会看到不能创建文件,我们在/etc/vsftpd.conf已经设置了,怎么还是不可以呢??检查一下匿名用户的目录;
    get hosts  正常.说明上传有错.配置文件是没错的,因为get命令可以下载文件,只有匿名用户的主目录有错了,
    [root@server root]# ls -ld /var/ftp/
    drwxr-xr-x    2 root     root         4096  5月 23 20:03 /var/ftp/
    只有读和执行的权限,没有写的权限.问题就是这儿了,那我们动手把它改成可写不就行了吗??你觉的可行吗?那你就试试;我这里讲的是在/var/ftp里再另行创建一个文件夹作为匿名用户可写的地方,
    [root@server root]#
    [root@server root]# mkdir /var/ftp/incomeing
    [root@server root]# ls /var/ftp/incomeing/
    [root@server root]# ls -ld /var/ftp/incomeing/
    drwxr-xr-x    2 root     root         4096  5ÔÂ 23 21:29 /var/ftp/incomeing/
    [root@server root]# chogrp ftp /var/ftp/incomeing/
    [root@server root]# chmod go+w /var/ftp/incomeing/
       再次登陆一下就会有创建文件的权限了,你问我没有创建文件夹的权限?看你的配置文件有设置允许没??进入后我们的文件别人都可以进行查看,下载,修改,可不安全啊..
      这样的都会遇到别人的覆盖和修改,我们把它修改为只让他看不让他破坏!
       我们把incoming文件夹ftp组的"r"拿去,只让他们只上传,不允许查看,这样它们依靠那天才的思维也不能查看的到吧!哈,到了这里有人不信了,不会吧,这么天才,那好用匿名用户登陆,自己传一个"/etc/services"然后你再用get下载看能否行的通???不行吧!
      在此我们用匿名用户登陆,用pwd进行查看的时候会发现我们所处的环境是"/",我们指定的是"/var/ftp/"怎么变成了"/",这个环境就是"chroot"在次指明了vsftp是非常安全的,那我们用非匿名用户登陆还会有此功能吗?答案是否定的,我们如果对一些特别的用户进行指定chroot,让他们只看到"/"而不知道他们所处真实系统的位置,再次配置/etc/vsftpd.conf.

  • chroot_list_enable=yes  
    chroot_list_file=/etc/vsftpd.chroot.list
    第一项是启用.默认是注解的,如果你在此写个no,也是没用的,第二项是仅依第一项的yes而存的,其中要看明白chroot_list_file=/etc/vsftpd.chroot.list,其中把指定的文件位置就是默认支持chroot的系统用户清单,切记的是一行一个用户,这样里面的帐号进入后就进入他们的主目录,也就是ftp里的"/"但是系统帐号可以自由的查看上传和修改了,因为是他们的主目录了,
      下面开始对user进行控制,如果哪些用户比较不适合访问这个ftp服务器,怎么禁用它呢??,我们只能在/etc/ftpusers里进行配置了,和/etc/sftpd.chroot_list的一样哦, 都是一行一个用户名,存在这里面的用户默认是禁止他们登陆的,我们也可以修改"/etc/pam.d/ftp"把它改成允许的,其它这个文件是由我们刚才复制的pam控制的,先看一下pam.d

  • #more /etc/pam.d/ftp

  • #%PAM-1.0
    auth       required     /lib/security/pam_listfile.so item=user sense=deny file=
    /etc/ftpusers onerr=succeed
    auth       required     /lib/security/pam_pwdb.so shadow nullok
    auth       required     /lib/security/pam_shells.so
    account    required     /lib/security/pam_pwdb.so
    session    required     /lib/security/pam_pwdb.so
    看到的是pam是一个接口型的文件,首先我们登陆ftp服务的时候会自动检查是否存在于/pam_listfile,这个pam_listfile就是/etc/ftpusers,类型是user,怎么处理呢?sense=deny禁止,把它改为allow就变成允许了,

  • 用一个登陆成的帐号加进/etc/ftpusers里,再次登陆,

  • 你会看到的是失败,
    再讲一个vsftp的精华点就是虚拟帐号,这样就能防止一些危险用户猜测系统帐号密码对系统造成破坏,当然也可以用"useradd -s /etc/nologin username",让别人知道我们系统的帐号总不会是好事,还是从根本上杜绝!
    这里以图文解说;
    [root@server root]# useradd vuser #新建一个虚拟登陆指定的号!
    [root@server root]# vi users.txt  #虚拟号范本一行用户名下一行密码
    [root@server root]# db_load -T -t hash -f users.txt /etc/vsftpd.login.db #把users.txt的内容加为虚拟用户的帐号和密码
    [root@server root]# chmod 600 /etc/vsftpd.login.db #为了安全修改里面的内容
    [root@server root]# vi /etc/pam.d/ftp  #修改里面的内容,使之与下面的相同
    [root@server root]# more /etc/pam.d/ftp
    #%PAM-1.0
    #auth       required    /lib/security/pam_listfile.so item=user sense=allow file
    =/etc/ftpusers onerr=succeed
    #auth       required    /lib/security/pam_pwdb.so shadow nullok
    #auth       required    /lib/security/pam_shells.so
    #account    required    /lib/security/pam_pwdb.so
    #session    required    /lib/security/pam_pwdb.so
    auth        required    pam_userdb.so db=/etc/vsftpd.login
    account     required    pam_userdb.so db=/etc/vsftpd.login
    再次修改/etc/vsftpd.conf,使其内容与anonymous有关的全部禁用,还有刚才的chroot也被列为禁用,如果想用的话保证虚拟号能常的前提下再另行测试,并在最后加入二句话:
    guest_enable=YES
    guest_username=vuser  接下来就是重启vsftpd
    [root@server root]# killall -HUP vsftpd  #!
    [root@server root]# ftp localhost  #测试
    Connected to server.redhat.org.cn.
    220 Welcome to linfeng's ftp server.
    530 Please login with USER and PASS.
    530 Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    Name (localhost:root): tom   #虚拟号
    331 Please specify the password.
    Password:   #虚拟号tom的密码
    230 Login successful.  #成功
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (127,0,0,1,136,56)
    150 Here comes the directory listing.
    226 Transfer done (but failed to open directory).   #怎么会禁止了呢?想一下上面的,,呵呵,这就是因为vuser用户的权限啊,只需"chmod o+r /home/vuser"那可浏览,但不可上传,因为没有"w"位

          完
    再说几个小细节...
    如果使用了虚拟帐号会遇到本地帐号无法使用的问题,还有的是不要禁用anon_upload_enable=yes这个选项,否则会出现虚拟帐号无法上载文件的现象,再者就是想让这个服务器作为文件服务还是下载服务时一定要把握准权限问题,否则会出现不必要的麻烦.


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/18861/showart_128216.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP