设为首页 收藏本站
查看: 1363|回复: 0

[经验分享] linux下的vsftp服务

[复制链接]
累计签到:10 天
连续签到:1 天
发表于 2015-11-6 13:43:56 | 显示全部楼层 |阅读模式
  这里以vsftpd.-2.0.4.bz为范例,请留意你的系统是否装有开发环境,vsftpd的网站是http://vsftpd.beasts.org.
  ftp<file tranfer protocol>是特意提供上传和下载的一项服务,一般会开21为默认端口,其中有message和date二条通信通道,一个信息传递,另一个就是传输数据,其中在dos系统登陆ftp的软件直接是ftp ftp.server.org win下面的很多了,unix下面的有ftp和gftp.
  首先把下载来的vsftpd拷贝到&quot;/usr/src&quot;目录里,


  •   #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<保证你现在的位置在/usr/scr/vsftpd-2.0.4中>,那里会一步一步的教你,我说的都是些大概,第八句是测试本机是否存在了ftp这个用户,当然也可以用finger先行查看,这里方便了^_^,安装好后的vsftpd的服务器是匿名服务器,也就是说不允许有密码有帐号的人访问,匿名的文件夹默认指定为&quot;/var/ftp&quot;所以上面的并不完整,我们还需要手工建立一下,&quot;#mkdir /var/ftp&quot;由于建立的是匿名服务器,安全一定要有所保证.


#chown root.root /var/ftp


#chmod og-w /var/ftp


  这两句话的意思就是把属主分给root用户,其它用户<不能创建文件>


   第九句是把当前目录下</usr/src>的vsftpd.conf移到/etc/下,否则系统找不到配置文件,第十句是把当前目录下的RedHat子目录下的vsftpd.pam拷贝到/etc/下并更名为ftp,这一点需要注意,




  • #which vsftpd

  • /usr/local/sbin/vsftpd

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

  • #echo &quot;/usr/local/sbin/vsftpd &&quot; >> /etc/rc.local #开机自动启动!

使用which 命令查看vsftpd所处的目录,&quot;/usr/local/sbin/vsftpd&quot;因为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<or anonymous>

  • #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命令可以下载文件,只有匿名用户的主目录有错了,

[iyunv@server root]# ls -ld /var/ftp/
drwxr-xr-x    2 root     root         4096  5月 23 20:03 /var/ftp/
只有读和执行的权限,没有写的权限.问题就是这儿了,那我们动手把它改成可写不就行了吗??你觉的可行吗?那你就试试;我这里讲的是在/var/ftp里再另行创建一个文件夹作为匿名用户可写的地方,


[iyunv@server root]#
[iyunv@server root]# mkdir /var/ftp/incomeing
[iyunv@server root]# ls /var/ftp/incomeing/
[iyunv@server root]# ls -ld /var/ftp/incomeing/
drwxr-xr-x    2 root     root         4096  5&Ocirc;&Acirc; 23 21:29 /var/ftp/incomeing/
[iyunv@server root]# chogrp ftp /var/ftp/incomeing/
[iyunv@server root]# chmod go+w /var/ftp/incomeing/


   再次登陆一下就会有创建文件的权限了,你问我没有创建文件夹的权限?看你的配置文件有设置允许没??进入后我们的文件别人都可以进行查看,下载,修改,可不安全啊..
  这样的都会遇到别人的覆盖和修改,我们把它修改为只让他看不让他破坏!


   我们把incoming文件夹ftp组的&quot;r&quot;拿去,只让他们只上传,不允许查看,这样它们依靠那天才的思维也不能查看的到吧!哈,到了这里有人不信了,不会吧,这么天才,那好用匿名用户登陆,自己传一个&quot;/etc/services&quot;然后你再用get下载看能否行的通???不行吧!

  在此我们用匿名用户登陆,用pwd进行查看的时候会发现我们所处的环境是&quot;/&quot;,我们指定的是&quot;/var/ftp/&quot;怎么变成了&quot;/&quot;,这个环境就是&quot;chroot&quot;在次指明了vsftp是非常安全的,那我们用非匿名用户登陆还会有此功能吗?答案是否定的,我们如果对一些特别的用户进行指定chroot,让他们只看到&quot;/&quot;而不知道他们所处真实系统的位置,再次配置/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里的&quot;/&quot;但是系统帐号可以自由的查看上传和修改了,因为是他们的主目录了,

  下面开始对user进行控制,如果哪些用户比较不适合访问这个ftp服务器,怎么禁用它呢??,我们只能在/etc/ftpusers里进行配置了,和/etc/sftpd.chroot_list的一样哦, 都是一行一个用户名,存在这里面的用户默认是禁止他们登陆的,我们也可以修改&quot;/etc/pam.d/ftp&quot;把它改成允许的,其它这个文件是由我们刚才复制的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的精华点就是虚拟帐号,这样就能防止一些危险用户猜测系统帐号密码对系统造成破坏,当然也可以用&quot;useradd -s /etc/nologin username&quot;,让别人知道我们系统的帐号总不会是好事,还是从根本上杜绝!


这里以图文解说;
  [iyunv@server root]# useradd vuser #新建一个虚拟登陆指定的号!
[iyunv@server root]# vi users.txt  #虚拟号范本一行用户名下一行密码
[iyunv@server root]# db_load -T -t hash -f users.txt /etc/vsftpd.login.db #把users.txt的内容加为虚拟用户的帐号和密码
[iyunv@server root]# chmod 600 /etc/vsftpd.login.db #为了安全修改里面的内容
[iyunv@server root]# vi /etc/pam.d/ftp  #修改里面的内容,使之与下面的相同
[iyunv@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
  [iyunv@server root]# killall -HUP vsftpd  #!
[iyunv@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用户的权限啊,只需&quot;chmod o+r /home/vuser&quot;那可浏览,但不可上传,因为没有&quot;w&quot;位




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-135953-1-1.html 上篇帖子: windows xp连接不上虚拟机中的fedora 8 vsftp服务器 下篇帖子: Centos6.5下搭建vsftp服务器和sftp服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表