linux 架设vsftp服务器全过程 要求加精
zy66289214
|
1#
zy66289214 发表于 2007-07-24 02:24
linux 架设vsftp服务器全过程 要求加精
1.首先我们还是查看是否安装了 rpm qa|grep vsftpd
如果没安装请在这里下载ftp://vsftpd.beasts.org/users/cevans/ 2.我们去这里下载最新版本2.01,并把它下ftp://vsftpd.beasts.org/users/cevans/ 3.然后我们需要把它解开[root@zy jishu]# tar zxvf vsftpd-2.01 ,jishu是我建立的用户 目录是/home/jishu 大家看清是在/home/jishu 目录下进行解压的 呵呵,顺便说一下 tar zcvf 就是压缩 大家可以自己试着把一个文件压缩成tar的格式 4.[root@zy jishu]#cd vsftpd -2.0.1 解开后我们进入相应的目录 [root@zy jishu]#./configure 版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。---- 如果检查过程中,发现有错误,configure将给予提示,并停止检查。你可以跟据提示对系统进行配置。再重新执行该程序。检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机的性能的不同,所耗费的时间也不同: 5.在这里我补充一点linux安装和卸载软件的方法 Linux软件的安装和卸载一直是困惑许多初学者的难题。由于Linux与Windows在系统目录结构,系统配置方式等诸多方面的重大差异,使这两者的软件安装卸载的方式也截然不同。在Windows中使用的是控制面板中的"添加/删除程序";与其相类似,在Linux下有一个功能强大的软件 安装卸载工具,名为RPM。其全名为"Red Hat Package Manager"。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。 软件的安装 Linux下软件的安装主要有两种不同的形式。第一种安装文件名为filename.tar.gz。另一种安装文件名为filename.i386.rpm。以第一种方式发行的软件多为以源码形式发送的。第二种方式则是直接以二进制形式发行的。i386即表示该软件是按Inter 386指令集编译生成的。 对于第一种,安装方法如下: 首先,将安装文件拷贝至你的目录中。例如,如果你是以root身份登录上的,就将软件拷贝至/root中。 #cp filename.tar.gz /root 由于该文件是被压缩并打包的,所以,应对其解压缩。命令为: #tar xvzf filename.tar.gz 执行该命令后,安装文件按路径,解压缩在当前目录下。用ls命令可以看到解压缩后的文件。通常在解压缩后产生的文件中,有名 为"INSTALL"的文件。该文件为纯文本文件,详细讲述了该软件包的安装方法。 对于多数需要编译的软件,其安装的方法大体相同。执行解压缩后产生的一个名为configure的可执行脚本程序。它是用于检查系统是否有编译时所需的库,以及库的版本是否满足编译的需要等安装所需要的系统信息。为随后的编译工作做准备。命令为: #./configure 如果检查过程中,发现有错误,configure将给予提示,并停止检查。你可以跟据提示对系统进行配置。再重新执行该程序。检查通过后,将生成用于编译的MakeFile文件。此时,可以开始进行编译了。编译的过程视软件的规模和计算机的性能的不同,所耗费的时间也不同。命令为: #make #make install 安装完毕,应清除编译过程中产生的临时文件和配置过程中产生的文件。键入如下命令: #make clean 至此,软件的安装结束。 对于第二种,其安装方法要简单的多。 同第一种方式一样,将安装文件拷贝至你的目录中。然后使用rpm来安装该文件。命令如下: #rpm -i filename.i386.rpm rpm将自动将安装文件解包,并将软件安装到缺省的目录下。并将软件的安装信息注册到rpm的数据库中。参数i的作用是使rpm进入安装模式。 另外,还有一些Linux平台下的商业软件。在其安装文件中,有Setup安装程序,其安装方法同Windows平台下的一样。如:Corel WordPerfect。 软件的卸载 软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令: #rpm -qa 即可查询到当前系统中安装的所有的软件包。参数q的作用是使rpm进入查询命令模式。参数a是查询模式的子参数,意为全部(ALL)。查询到的信息较多,可使用less人屏显示。 确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入命令: #rpm -e 即可卸载软件。参数e的作用是使rpm进入卸载模式。对名为的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载 #rpm -e -nodeps 忽略依赖关系的卸载可能会导致系统中其它的一此软件无法使用。你可以使用 #rpm -e -test 使rpm进行一次卸载预演,而不是真正卸载。这样可以使你检查一下软件是否存在有依赖关系。卸载过程中是否有错误。 6.[root@zy vsftpd -2.0.1]#make ,使其生成二进制数据 7.[root@zy vsftpd -2.0.1]#make INSTALL安装的命令,安装生成的二进制数据 相当于运行windows下的exe文件 7.[root@zy vsftpd -2.0.1]#which vsftpd 查看vsftpd装到那里了 8.现在服务器已经装好了,现在我们要去修改配置文件了 [root@zy vsftpd -2.0.1]#more install 我们可以看看安装帮助 看看应该如何配置,一般安装都要注意看看如何配置文档 我们首先要把主配置文件copy到/etc目录下 [root@zy vsftpd -2.0.1]#cp vsftpd.conf /etc [root@zy etc]#cp RedHat/vsftpd.pam /etc/pam.d/ftp ,这个cp是为了ftp认证用的,即用户登录的时候是需要通过pm.d 这个认证的 呵呵,大家多研究下 more INSTALL 里面好多内容都是教我们如何架设一个成功的vsftpd的服务器的 [root@zy etc#vi vsftpd.conf 我们需要在最后加入一句listen=YES ,这样做的原因是让服务器独立的运行,让服务器自己监听,wq 保存并退出 [root@zy vsftpd -2.0.1]#mkdir /var/ftp 创建匿名登录用户目录 [root@zy vsftpd -2.0.1]#chown root.root /var/ftp 将目录所有者改为root,组也改为root [root@zy vsftpd -2.0.1]#chmod og-w /var/ftp 权限设定为其他用户和root组的人不能写入,只能读和进入 [root@zy vsftpd -2.0.1]#finger ftp 确认一下匿名用户 [root@zy vsftpd -2.0.1]#/usr/local/sbin/vsftpd & 为了让服务器启动的时候,我们来控制,我们加一个& 符号,这样服务器启动的时候就在后台运行了。could not bind listening IPv4 socket? 只要在/etc/xinetd.d/vsftpd文件中,把disable=no改成YES就行! 还有就是在/etc/vsftpd.conf文件添加listen=yes这样就改成了STANDALONE独立模式! 因为xinetd已经启动了vsftpd,而vsftpd设置成了stardalone模式,所以,先停止xinetd服务, service xinetd stop ,然后 /usr/local/sbin/vsftpd &启动ftp服务 [root@zy vsftpd -2.0.1]#netstat -tnl 我们检查下看有没有开一个端口为21的地址,如果有ok,如果没查看下是那个进程在使用21端口,用kill -9 进程pid 删除该进程 [root@zy vsftpd -2.0.1]#ftp localhost 我们测试下链接下自己,、它会让你输入用户名和密码,我们尝试用anonymous 密码为空,发现现在已经登录成功了 , [root@zy vsftpd -2.0.1]#vi /etc/rc.local 为了让ftp服务器开机自动启动,我们需要把它写入/etc/rc.local目录下 我们在该文件最后写入 /usr/local/sbin/vsftpd & wq 保存退出 9.前面已经把vsftpd服务器,http://www.linuxdiyf.com/bbs/viewthread.php?tid=53105架设起来了,我们最好从新启动下服务器,看看是否开机会自动启vsftp 10.前面装好的服务器会默认在[root@zy root]#ls /usr/local/sbin/ 下创建vsftpd守护进程,同时也在 [root@zy root]#ls /etc/xinetd.d/vsftpd 也放了一个vsftpd的启动脚本 所以服务器可以用两种方式启动,但我们希望它独立运行,所以我们要关闭这个启动,[root@zy root]#chkconfig --list vsftpd [root@zy root]#chkconfig vsftpd off [root@zy root]#chkconfig --list vsftpd [root@zy root]#netstat -tnl 查看21端口是否被占用着,如果被占用就要杀死该进程 [root@zy root]#ps -aux |grep ftp [root@zy root]#kill -9 进程pid号 [root@zy root]#/etc/rc.local 执行rc.local下的sbin命令 [root@zy root]#netstat -tnl 再次查看端口 3.[root@zy root]#vi /etc/vsftpd.conf 修改服务器的配置文件 我们首先来解释下vsftpd.conf配置下的几个常见命令 anonymous_enable=YES 允许匿名用户登录 注释掉即去掉# local_enable=YES 允许本地用户登录 去掉# write_enable=YES 允许本地用户写入 去掉# local_umask=022 本地用户新文件的umask值 去掉# abon_upload_enable=YES 允许匿名用户上传文件 去掉# anon_mkdir_write_enable=YES 允许匿名用户创建目录 不要管它 dirmessage_enable=YES 允许使用目录信息 去掉# ftpd_banner=welcome to zy ftp server 登录欢迎词 去掉# ls_recurse_enable=YES 允许客户端使用ls-r 命令 不管 listen=YES 监听模式 在结尾加入此句 wq保存退出 [root@zy root]#killall -9 vsftpd 现在我们的服务器是独立运行的我们需要把它杀死掉 [root@zy root]# /usr/local/sbin/vsftpd & 从新启动vsftpd [root@zy root]#useradd redhat 创建一个用户 [root@zy root]#passwd redhat 为它设上密码 [root@zy root]#ftp 192.168.1.144 登录自己的ftp服务器 输入用户名redhat 密码 ftp>pwd 查看当前的目录/home/redhat ftp>help 查看所有可使用的命令 ftp>put /etc/services ftpservices 将/etc/services 上传到ftp服务器上 ftp>ls 查看ftp服务器的目录 ftp>quit 退出ftp服务器 然后我们仿照上面用匿名用户上传文章试一下,结果我们会发现不成功的关键原因就是匿名用户的目录是/var/ftp ,而这个目录不属于匿名用户 [root@zy root]#cd /var/ftp/ [root@zy ftp]#mkdir /var/ftp/shangchuan 创建一个新的目录 [root@zy ftp]#chmod g+w shangchuan/ 让组可写 [root@zy root]#chgrp ftp shangchuan/ 把目录交给组ftp 这样我们就可以用匿名用户创建目录了 ftp>cd shangchuan 进入上传目录 然后就可以上传文章了 然后我们来体验下vsftp的另一个安全性,锁定用户目录 首先我们用redhat用户登录ftp ftp>pwd 当前的目录/home/redhat ftp>cd /etc 将会显示更改成功目录 ok 退出ftp quit 然后修改[root@zy root]#vi /etc/vsftpd.conf 将chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list 将这两行注释掉 [root@zy root]#vi /etc/vsftpd.chroot_list redhat 将这个用户名写入进去,wq 然后我们再次登录ftp服务器 这次用redhat用户登录 ftp>pwd 这次将显示的是 / 目录其实是用户已经被锁定目录了 ftp>cd /etc 将会显示更改目录失败的提示了 11.如果我们要控制用户访问ftp服务器 [root@zy root]#vi /etc/ftpuesrs redhat zy wq 保存退出 这样默认情况下这两个用户 redhat和zy就不能访问ftp服务器,etc/ftpuesrs 是一个ftp服务器的黑名单 刚刚我们用redhat登录成功,现在我们把redhat加进ftpusers中 [root@zy root]# echo "redhat" >> /etc/ftpusers 再次登录就会发现登录失败。 [root@zy root]#vi /etc/passwd 对于系统的敏感用户,即passwd目录下 uid 500 以下的人 这些一般是被系统保留的人,我们应该通通把他们加入 /etc/ftpusers 中,这样做很麻烦 但我们可以反过来只允许指定人访问ftp服务器,而其他人被拒绝 [root@zy root]#cp RedHat/vsftpd.pam /etc/pam.d/ftp 这个第三课有说明大家看一下 [root@zy root]#more /etc/pam.d/ftp 这些用户本质上能登录是被pam.d文件控制了 我们只需要对pam.d/ftp 文件进行更改就可以了 [root@zy root]#vi /etc/pam.d/ftp 将里面默认拒绝的命令sense = deny 换成 sense=allow 这样就只有redhat 和 zy 用户可以登录ftp服务器了 12.为了安全期间,我们不想ftp用户是系统用户,所以我们就要建立一个虚拟的ftp用户,要保证系统确实没有的用户,如tom 首先我们编辑一个users.txt ,[root@zy root]#vi users.txt 里面输入用户 tom 密码 123 《用户和密码不要输进去,第一行是用户tom,第二行是密码123》 [root@zy root]#id tom 确认一下 tom用户不存在 [root@zy root]#db_load -T -t hash -f users.txt /etc/vsftpd_login.db 解释一下 -T 就是将简单txt文件写入db 数据库的命令 -t 是指写入的类型为hash ,-f就是文件名 ,/etc/vsftpd_login.db 这是指文件写入到的位置 [root@zy root]#chmod 600 /etc/vsftpd_login.db 将这个文件的权限改为600 [root@zy root]#vi /etc/pam.d/ftp 修改pam.d的服务文件 首先我们要把以前的注释掉 ,在所有的前面加# 注释掉 然后我们添上两句话 auth required pam_userdb.so db=/etc/vsftpd_login.db account required pam_userdb.so db=/etc/vsftpd_login.db auth 是认证,其中required 是一种控制方式 我们使用pam_user.db.so这个模块 并且加载一个db=/etc/vsftpd_login.db account 是指类型为 [root@zy root]# useradd vuser 建立一个虚拟帐户用来映射的,这个用户是不用设密码的 [root@zy root]#vi /etc/vsftpd.conf 编辑服务器的配置 我们要禁用掉所有的anon开头的命令,禁止匿名用户登录 然后 我们要加入两条命令 guest_enable=YES guest_username=vuser wq保存退出 然后我们实验下用redhat登录下结果反应是登录失败de ftp>user 我们用虚拟user登录 (username)tom 密码输入 123 进去了 ok 我们可以下个文件看看ftp》get .bashrc 下载成功 ls但是我们却不能看到 quit退出 [root@zy root]#cp install.log /home/vuser/ 复制install.log [root@zy root]#chmod o+r /home/vuser/ 改变目录为其他人可读 从新用tom登录我们就可以看到install.log了 特别注意,每次对/etc/vsftpd.conf文件做一次修改都要从新启动一次服务器用这个命令可以代替[root@zy root]#killall -HUP vsftpd |