版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章配置vsftpd服务器目前在UNIX和Linux下常用的免费FTP服务器软件主要是Wu-FTP和ProFTP两种。QuickEnterpriseLinuxAS4正式版采用了性能优良、高安全性、功能强大、配置简单的ProFTPD作FTP服务器。而在Free版采用了小巧、安全、性能优良的vsftpd作FTP服务器。本章介绍了使用Linux系统建立vsftpd服务器的安装和简单测试过程。大纲7.1vsftpd概述7.1.1vsftpd的安装和目录结构7.1.2使用Webmin配置vsftpd7.2配置文件的选项1、主机配置2、实体用户登录配置3、系统安全配置4、匿名者登录配置7.2.2vsftpd配置文件示例实例8.1vsftpd概述vsftpd的名字代表"verysecureFTPdaemon"。vsftpd服务器开始设计开发的时候,高安全性就是考虑的首要问题之一。随着版本的不断升级,vsftpd在性能和稳定性上也取得了极大的进展。如RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站点都采用vsftpd作为它们的FTP服务器。可以到/了解它的最新情况。vsftpd可以运行在Linux,BSD,Solaris,HP-UX以及IRIX操作系统上。它支持很多其他的FTP服务器不支持的特征。因此,vsftpd比其他FTP服务器更加优越。vsftpd是在chroot模式下工作的,chroot模式就是要为vsftpd单独指定一个新的目录,vsftpd也就不能访问那个目录之外的程序和文件了——这也称为“被锁上的”。一个可能被潜在的攻击者破坏的FTP服务器将被从系统的其他部分独立开来,从而避免了更大的损失。8.1.1vsftpd的安装和目录结构1.vsftpd-1.2.0.tar.gz的安装在AS4的Free版系统安装时,如果选择了“全部安装”,则vsftpd已经被装上了。如果没有安装的话,在光盘或网上找到源代码,然后手工安装。(1)准备条件vsftpd默认配置中需要“nobody”用户。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。[root@]#useraddnobodyuseradd:usernobodyexistsvsftpd默认配置中需要“/usr/share/empty”目录。在系统中此目录,如果目录已经存在,mkdir命令有相应提示。[root@]#mkdir/usr/share/empty/mkdir:cannotcreatedirectory'/usr/share/empty':Fileexistsvsftpd提供匿名FTP服务时,需要“ftp”用户和一个有效的匿名目录。[root@]#mkdir/var/ftp/[root@]#useradd-d/var/ftpftp接下来的操作对于ftp用户是否已经存在都是有用的。[root@]#chownroot.root/var/ftp[root@]#chmodog-w/var/ftp(2)编译vsftpd从官方站点下载到/root目录,执行以下命令:[root@]#tarzxvfvsftpd-1.2.0.tar.gz[root@]#cdvsftpd-1.2.0[root@vsftpd-1.2.0]#make(3)安装编译好的vsftpd执行“makeinstall”将编译好的二进制文件、手册等复制到相应目录。在RHL9上,可能需要手动执行以下复制:[root@vsftpd-1.2.0]#cpvsftpd/usr/local/sbin/vsftpd[root@vsftpd-1.2.0]#cpvsftpd.conf.5/usr/local/share/man/man5[root@vsftpd-1.2.0]#cpvsftpd.8/usr/local/share/man/man8此外,“makeinstall”没有复制简单的配置文件,建议执行以下命令:[root@vsftpd-1.2.0]#cpvsftpd.conf/etc⑷为本地用户设置PAM如果允许本地用户登录vsftpd,执行以下操作:[root@vsftpd-1.2.0]#cpRedHat/vsftpd.pam2.vsftpd的文件结构vsftpd的文件结构是很简洁的,主要包括:/usr/sbin/vsftpdvsftpd的主程序/启动脚本/etc/vsftpd/vsftpd.conf主配置文件/认证文件/etc/vsftpd.ftpusers禁止使用vsftpd的用户列表文件/etc/vsftpd.user_list禁止或允许使用vsftpd的用户列表文件/var/ftp匿名用户主目录/var/ftp/pub匿名用户的下载目录此外,还有一些说明文档和手册文件。vsftpd的日志文件位于/etc/logrotate.d/vsftpd.log。8.1.2使用Webmin配置vsftpd由于Webmin没有提供vsftpd相应的模块,在Webmin的服务器页面里找不到vsftpd的图标。如果要用Webmin对vsftpd进行管理,可以到网上下载第三方Webmin的管理模块:将文件下载到本地服务器或其它可连接的主机。使用超级用户登录Webmin。在Webmin主界面中选择【Webmin配置】,在出现的界面中选择【Webmin模块】。选择“从上载文件”,通过浏览选择文件。按下【从文件安装模块】按钮。安装自动完成。然后,在Webmin的【服务器】窗体中就可看到vsftpd服务器的图标,如图7.1所示。然后,使用Webmin【其它】窗体中的“UploadandDownload”功能,将本书实验光盘(可到电子工业出版社网站下载)提供的Webmin的vsftpd的汉化模块(位于vsftpd目录的名为zhCN的文本文件)拷贝到服务器的/usr/libexec/webmin/vsftpd/lang/目录下,然后刷新webmin,就可以显示中文了。图8.1Webmin中增加了vsftpd配置模块图8.2Webmin的vsftpd模块配置画面然后,点选Webmin上方【服务器】,再点选【vsftpd配置】,进入vsftpd配置。Webmin的vsftpd模块配置画面如图8.2所示。图8.3一般配置
【一般配置】一般配置里主要是对文件权限、空闲连接超时、数据连接超时、欢迎信息文本和FTP用户名的设置。如图8.3所示。图中所示的【文件权限】,实际设置的是权限掩码,默认值是022。新建目录的默认权限是777,新建文件的默认值是666,当权限掩码为022时,新建的目录权限会变成777-022=755,而在新建文件时其权限会变成666-022=644。可以使用掩码来限制文件存取的权限。图8.4匿名FTP配置【匿名FTP】可决定是否激活匿名用户、是否允许匿名用户上传和建立子目录。设置完毕后,点击【保存设置】按钮,保存修改结果。如图8.4所示。图8.5本地用户选项【本地用户】选项可决定是否激活本地用户、本地用户是否允许写等等。设置完毕后,点击【保存设置】按钮,保存修改结果。如图8.5所示。所谓“本地用户chroot”是指是否锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。图8.6日志信息设置【日志信息】是指使用什么样的日志格式,如果对【Xfer日志格式】选“是”,则在日志中同时保存FTP服务器的状态。因此,通常对【Xfer日志格式】选“是”,然后,在【Xfer日志文件】中指定日志文件的所在位置,默认是“/var/log/vsftpd.log”。最后选【保存设置】保存修改结果。如图8.6所示。图8.7杂项设置【杂项】:这是一些其它的设置,主要有【ListenAddress】(侦听端口)、【HideFiles】(隐藏文件)、【Anonmaxrateinbyte/sec】(匿名用户速率)和【Localmaxrateinbyte/sec】(本地用户速率),一般不需要修改。“匿名用户速率”和“本地用户速率”如果设为0,则表示无限制。如图8.7所示。图8.8编辑配置文件【编辑配置文件】:在这个选项里可以直接修改配置文件vsfptd.conf。如图8.8所示。在Webmin中已经可以完成vsftpd基本的设置,但是很多在vsftpd新版本中提供的功能Webmin配置界面并没有支持,还是需要通过修改配置文件完成。修改配置文件也可在vsftpd模块配置中的【编辑配置文件】中进入修改。在Webmin中已经可以完成vsftpd基本的设置,但是很多在vsftpd新版本中提供的功能Webmin配置界面并没有支持,还是需要通过修改配置文件完成。修改配置文件也可在vsftpd模块配置中的【编辑配置文件】中进入修改。8.1.3启动vsftpd服务1.添加用户首先在/etc目录中创建一个文件://如果要增加一个用户xiaowang用户,在所建立的文件中,把xiaowang添上去就可以了。然后修改/文件,找到如下的两行://chroot_list_enable=YES把前面的//号去掉,也就是:chroot_list_enable=YES如果没有这样的两行,可以自己添加上去。设置好后,重新启动vsftpd服务器。2.启动FTP服务vsftpd可以单独(Standalone)方式运行,如同httpd、named这类的服务器的运行方式,这是AS4中默认的方式;也可以采用xinetd方式运行。具体的运行方式由参数listen决定。xinetd方式是比较早期的方式。在配置匿名ftp服务器时,为什么在ftpaccess文件中加入了upload/var/ftp/incoming/*yesftpguestuser0666其作用是什么?2使用Webmin配置vsftpd如果要增加一个用户xiaowang用户,在所建立的文件中,把xiaowang添上去就可以了。deny_email_enable=YES|NO226DirectorysendOK.org]#useradd-d/var/ftpftp(4)检查/etc/inetd.在/文件中加入xiaotong和xiaowang。设置完毕后,点击【保存设置】按钮,保存修改结果。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。指明vsftpd使用用PAM验证服务时的PAM配置文件名。超过这个数目将会拒绝连接。RemotesystemtypeisUNIX.(1)Xinetd方式如果仍然希望使用Xinetd启动vsftpd的运行方式,首先要将配置文件中的listen参数值改为NO。然后,生成一个/文件,内容如下:servicevsftpd{disable=nosocket_type=streamwait=nouser=rootserver=/usr/sbin/vsftpdport=21log_on_success+=PIDHOSTDURATIONlog_on_failure+=HOST}修改之后,应执行下列命令重新启动xinetd,从而启动或停止vsftpd。/(2)独立工作模式vsftp也可以工作在独立工作模式下。这样,需要再次打开"/etc/vsftpd.conf"做如下改动://Shallthevsftpdaemonruninstandaloneoperation?YES/NOlisten=YES在这项设置之后,还可以直接执行vsftpd来启动FTP服务,关闭时使用“kill”命令。[root@]#/usr/sbin/vsftpd&如果程序运行路径的设置是正确的,下面的命令就可以启动服务器了[root@]#vsftpd&对于后一种方式,可以这样看路径设置是否正确[root@]#echo$PATH也可以使用脚本/来启动、关闭以及重启vsftpd。命令如下:/etc/rc.d/init.d/vsftpdstart|stop|restart在独立工作模式,必须保证vsftpdaemon没有被inetd或xinetd启动。由于vsftpd的单独模式已经拥有足够的能力,所以实际应用中都是以单独模式来运行的,不使用Xinetd方式。3.操作测试[root@]#ftpphobosConnectedtophobos220"Welcometoneo5k'sFTPservice."Name(phobos:neo5k):testuser331Pleasespecifythepassword.Password:230LoginsuccessfulRemotesystemtypeisUNIX.Usingbinarymodetotransferfiles.ftp>ls-l229EnteringExtendedPassiveMode150Herecomesthedirectorylistingdrwxr-xr-x11500100400May0716:22docsdrwxr-xr-x9500100464Feb0123:05hldsdrwxr-xr-x395001004168May1009:15projects226DirectorysendOK.ftp>现在,一个所谓的非常安全的ftp服务器就建好了。虽然vsftpdaemon的安装和配置都很简单,但它提供了很多特性和很高的安全性。vsftpd服务器还提供了大量的可供设置的选项。如果想要更进一步研究vsftpd,可访问项目的主页。说明:本实训此题最好用文本命令方式做,但也允许使用Webmin来管理vsftpd。以“#”字符开始的行是注释行。anon_mkdir_write_enable=YES|NOvsftpd的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而vsftpd的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。/etc/vsftpd.如果仍然希望使用Xinetd启动vsftpd的运行方式,首先要将配置文件中的listen参数值改为NO。YES启用,NO不启用,默认值为YES。[root@mylinux.YES,允许数据传输时使用PASV模式。一个可能被潜在的攻击者破坏的FTP服务器将被从系统的其他部分独立开来,从而避免了更大的损失。在主配置文件中加入:gz,复制到/root目录中。file_open_mode=gz,复制到/root目录中。mysql>quit配置匿名登录的根目录。vsftpdguest/home/vsftpdguestvsftpd的配置文件位于/etc目录下的vsftpd.conf、vsftpd.ftpuser、vsftpd.user_list,其中主要的是"/etc/vsftpd.conf",配置时修改/etc/vsftpd.conf就可以了。/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还可以给特定用户设置个人配置文件。配置文件里共分主机配置、实体用户登录配置、匿名登录配置、系统安全配置约46个配置。1.连接选项本部分主要是一些与建立FTP链接相关的选项。(1)监听地址与控制端口listen_address=ipaddress此参数在vsftpd使用单独(standalone)模式下有效。此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供FTP服务。对于只有一个IP地址的主机,不需要使用此参数。对于多址主机,不设置此参数,则监听所有IP地址。默认值为无。listen_port=port_value指定FTP服务器监听的端口号(控制端口),默认值为21。此选项在standalone模式下生效。(2)FTP模式与数据端口FTP有PORTFTP和PASVFTP两种模式。它们的区别在于数据传输端口(ftp-data)的使用方式。PORTFTP是一般的FTP,由FTP服务器指定数据传输使用的端口,默认值为20。PASVFTP由FTP客户端决定数据传输的端口。PASVFTP模式考虑了在防火墙的环境下,客户端向服务器发出数据传输请求中包含了数据传输端口,由客户端与服务器协商决定两者之间的数据传输端口更为方便。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过该链接传输操作指令。port_enable=YES|NO如果要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。connetc_from_port_20=YES|NO控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的文件中此参数设为YES。ftp_data_port=portnumber设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORTFTP模式。port_promiscuous=YES|NO默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。pasv_enable=YES|NOYES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。pasv_min_port=portnumberpasv_max_port=portnumber在PASV模式下,设定建立数据传输所可使用port范围的下界和上界,0表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。pasv_promiscuous=YES|NO此选项默认值为NO。当它激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。因此打开此选项时要特别小心。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。pasv_address=此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incomingconnectdsocket)中获取。(3)ASCII模式默认情况下,vsftpd禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式,vsftpd表面上接受asc命令,但在实际传输文件时,还是使用二进制方式。下面选项控制vsftpd是否使用ASCII传输模式。ascii_upload_enable=YES|NO控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。ascii_download_enable=YES|NO控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。2.性能与负载控制(1)超时选项idle_session_timeout=空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位是秒,默认值为300。data_connection_timeout=空闲的数据连接的超时时间。默认值为300秒。accept_timeout=numericalvalue接受建立联机的超时设定,单位是秒。默认值为60秒。connect_timeout=numericalvalue响应PORT方式的数据联机的超时设定,单位是秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。(2)负载控制max_clients=numericalvalue此参数在vsftpd使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。max_per_ip=numericalvalue此参数在vsftpd使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。anon_max_rate=value设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。local_max_rate=value设定用户的最大数据传输速度value,以Bytes/s为单位。默认无。此选项对所有的用户都生效。此外,也可以在用户个人配置文件中使用此选项,以指定特定用户可获得的最大数据传输速率。步骤如下:①在中指定用户个人配置文件所在的目录,如:user_config_dir=/etc/vsftpd/userconf②生成/etc/vsftpd/userconf目录。③用户个人配置文件是在该目录下,与特定用户同名的文件,如:/etc/vsftpd/userconf/xiaowang④在用户的个人配置文件中设置local_max_rate参数,如:local_max_rate=80000以上步骤设定FTP用户xiaowang的最大数据传输速度为80KBytes/s。vsftpd对于速度控制的变化范围大概在80%到120%之间。比如限制最高速度为100KBytes/s,但实际的速度可能在80KBytes/s到120KBytes/s之间。当然,若是线路带宽不足时,速率自然会低于此限制。3.用户选项vsftpd的用户分为三类:匿名用户、本地用户(localuser)以及虚拟用户(guest)。(1)匿名用户anonymous_enable=YES|NO控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。ftp_username=匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。no_anon_password=YES|NO控制匿名用户登录时是否需要密码,YES不需要,NO需要。默认值为NO。deny_email_enable=YES|NO此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数banned_email_file=/etc/vsftpd.banned_emails指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。anon_root=设定匿名用户的根目录,即匿名用户登录后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。anon_world_readable_only=YES|NO控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。anon_upload_enable=YES|NO控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:首先是write_enable参数为YES;其次是在文件系统上,FTP匿名用户对某个目录有写权限。anon_mkdir_write_enable=YES|NO控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。anon_other_write_enable=YES|NO控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。chown_uploads=YES|NO是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。chown_username=whoever指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。(2)本地用户在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。vsftpd中称此类用户为本地用户(localusers),等同于其他FTP服务器中的real用户。local_enable=YES|NO控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES。local_root=定义所有本地用户的根目录。当本地用户登录时,将被更换到此目录下。默认值为无。userlist_file=/etc/vsftpd.anon_world_readable_only=YES|NOvsftpd的文件结构是很简洁的,主要包括:(13)指令deny_email_enable和banned_email_file或者,chroot_local_user=YES默认情况下此参数是关闭的(NO)。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。YES使用,NO不使用。ascii_download_enable=YES//是否使用ascii码方式上传和下载文件如果仍然希望使用Xinetd启动vsftpd的运行方式,首先要将配置文件中的listen参数值改为NO。mkdir-p/var/ftp2/pubxferlog_enable=YES//记录ftp传输过程在中当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥有写权限。生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件:conf文件的先后,依次启用vsftpd进程,每个vsftpd进程对应一个./usr/local/share/man/man8user_config_dir=定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与格式相同。例如定义user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那可以在user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi登录时,vsftpd则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。(3)虚拟用户guest_enable=YES|NO若是启动这项功能,所有的非匿名登录者都视为guest。默认值为关闭。guest_username=定义vsftpd的guest用户在系统中的用户名。默认值为ftp。4.安全措施(1)用户登录控制pam_service_name=vsftpd指出vsftpd进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。/etc/vsftpd.ftpusersvsftpd禁止列在此文件中的用户登录FTP服务器。这个机制是在/中默认设置的。userlist_enable=YES|NO此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd查到该用户名在列表,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。userlist_file=/etc/vsftpd.user_list指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。userlist_deny=YES|NO决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。tcp_wrappers=YES|NO在vsftpd中使用TCP_Wrappers远程访问控制机制,默认值为YES。(2)目录访问控制chroot_list_enable=YES|NO锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。chroot_list_file=/etc/vsftpd/chroot_list指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。chroot_local_users=YES|NO将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。passwd_chroot_enable当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。(3)文件操作控制hide_ids=YES|NO是否隐藏文件的所有者和组信息。YES,当用户使用"ls-al"之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。默认值为NO。ls_recurse_enable=YES|NOYES,允许使用"ls-R"指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用"ls-R"会消耗大量系统资源。默认值为NO。write_enable=YES|NO控制是否允许使用任何可以修改文件系统的FTP的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。secure_chroot_dir=这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。(4)新增文件权限设定anon_umask=匿名用户新增文件的umask数值。默认值为077。file_open_mode=上传档案的权限,与chmod所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。local_umask=本地用户新增档案时的umask数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。5.提示信息ftpd_banner=loginbannerstring此参数定义了loginbannerstring(登录欢迎语字符串)。用户可以自行修改。预设值为无。当ftpd_banner设置后,将取代系统原来的欢迎词。banner_file=/directory/vsftpd_banner_file此项指定一个文本文件,当用户登录时,会显示该文件的内容,通常为欢迎词或是说明。默认值为无。与ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字符串格式。banner_file选项将取代ftpd_banner选项。dirmessage_enable=YES|MO控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档,若是有,则会出现此文档的内容,通常这个档案会放置欢迎话语,或是对该目录的说明。message_file=此选项仅在dirmessage_enable选项激活时生效。默认值为.message。6.日志设置xferlog_enable=YES|NO控制是否启用一个日志文件,用于详细记录上传和下载。该日志文件由xferlog_file选项指定。默认值为NO,但在简单配置文件中激活此选项。xferlog_file=这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。xferlog_std_format=YES|NO控制日志文件是否使用xferlog的标准格式,如同wu-ftpd一样。使用xferlog格式,可以重新使用已经存在的传输统计生成器。然而,默认的日志格式更为可读性。默认值为NO,但自带的配置文件中激活了此选项。log_ftp_protocol=YES|NO当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。7.其他设置setproctitle_enable=YES|NOYES,vsftpd将在系统进程列表中显示每个会话(session)的状态。也就是说,进程报告将显示每个vsftpd会话在做什么(挂起、下载等),如用ps-ef|grepftp。出于安全的目的,可以考虑将此选项关闭。NO,进程报告只显示一个vsftpd进程在运行。默认值为NO。text_userdb_names=YES|No当用户登录后使用ls-al之类指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该档案拥有者的名称。若是希望出现拥有者的名称,则将此功能开启。默认值为NO。user_localtime=YES|NO默认为NO。YES,vsftpd显示目录列表时使用本地时区的时间。默认是显示GMT时间。同样,由ftp命令“MDTM”返回的时间值也受此选项影响。check_shell=YES|NO此选项仅对不使用PAM方式的vsftpd生效。当此选项关闭后,当本地用户登录时,vsftpd不会检查/etc/shells文件以寻找一个有效的用户shell。默认为YES。nopriv_user=指定一个用户,当vsftpd不想要什么权限时,使用此用户身份。这用户最好是一个专用的用户,而不是用户nobody。在大多数的机器上,nobody用户被用于大量重要的事情。默认值为nobody。pam_service_name=指明vsftpd使用用PAM验证服务时的PAM配置文件名。默认值为ftp。8.2.2vsftpd配置文件示例在vsftpd软件包中所自带的文件配置比较简单,可以根据实际情况对其进行一些设置,使vsftpd更加可用。下面是一个配置文件的例子。文件中配置了允许匿名FTP,允许上传,chroot用户目录,上传文件属主改为root。anonymous_enable=YES//允许匿名ftp,如否则选择NOlocal_enable=YES//允许本地用户登录write_enable=YESlocal_umask=022//默认的umask码anon_upload_enable=YES//允许匿名上传文件anon_mkdir_write_enable=YES//允许匿名用户有创建目录的权利dirmessage_enable=YES//显示目录说明文件,默认是YES但需要手工创建.message文件xferlog_enable=YES//记录ftp传输过程connect_from_port_20=YES//确信端口传输来自20(ftp-data)chown_uploads=YES//文件的属主可上传文件chown_username=root//改变上传文件的属主,把上传的文件都改成root属主xferlog_file=/var/log/vsftpd.log//传输日志的路径和名字默认是/xferlog_std_format=YES//使用标准的ftpxferlog格式pam_service_name=vsftpdchroot_local_user=YES相关的还有如下参数:idle_session_timeout=600//设置默认的断开不活跃session的时间data_connection_timeout=120//设置数据传输超时时间nopriv_user=ftpsecure//运行vsftpd需要的非特权系统用户默认是nobodyasync_abor_enable=YES//是否允许运行特殊的ftp命令asyncaborascii_upload_enable=YESascii_download_enable=YES//是否使用ascii码方式上传和下载文件ftpd_banner=WelcometochenlfFTPservice.//定制欢迎信息deny_email_enable=YESbanned_email_file=/etc/vsftpd.banned_emails//是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名chroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list//是否将系统用户限止在自己的home目录下,如果选择了yes那么中列出的是不chroot的用户的列表max_clients=Number//如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限制。message_file//设置访问一个目录时获得的目录信息文件的文件名,默认是.message。详细的帮助说明请参考manvsftpd.conf。8.3vsftpd应用本节介绍vsftpd的具体应用方法。8.3.1允许匿名用户上传文件在文件中修改或增加以下选项:write_enable=YESanon_world_readable_only=NOanon_upload_enable=YESanon_mkdir_write_enable=YES然后创建供匿名用户上传文件的目录,并设定权限:#mkdir/var/ftp/incoming#chmodo+w/var/ftp/incoming由于匿名用户(ftp)上传文件,需要对incoming目录进行操作,而incoming为root所有,匿名用户(ftp)对于incoming来说是其他用户,所以要加入其他用户(o)的写权限。8.3.2限制用户在自家目录可以设置chroot,让本地用户登录后只能访问自家目录,无法访问其他目录。相关的选项有三个:chroot_local_user、chroot_list_enable、chroot_list_file。限制用户在自家目录有两种做法:(1)限制所有的本地用户在自家目录chroot_local_user=YES这种做法,可能会带来一些安全性上的冲突。参见前面的chroot_local_user选项描述。(2)限制部分本地用户在自家目录chroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list在/文件中加入要限制的本地用户名。注意一个用户名一行。8.3.3配置高安全级别的匿名FTP服务器在vsftpd自带的简单配置文件中,有些选项已经默认采用了安全性的设置,这里就不再写出了。//只允许匿名访问,不允许本地用户访问anonymous_enable=YESlocal_enable=NO//使用ftpd_banner取代vsftpd默认的欢迎词,免得泄漏相关信息ftpd_banner=WelcometothisFTPServer//只让匿名用户浏览可阅读的文件,不可以浏览整个系统anon_world_readable_only=YES//隐藏文件的所有者和组信息,匿名用户看到的文件的所有者和组全变为ftphide_ids=YES//取消写权限write_enable=NOanon_upload_enable=NOanon_mkdir_write_enable=NOanon_other_write_enable=NO//使用单独模式,并指定监听的IP地址listen_address=ipaddress//对连接进行控制,还有超时时间,根据具体情况。connect_from_port_20=YESpasv_min_port=50000pasv_max_port=60000//控制并发数,限定每个IP地址的并发数,用户自已决定。max_clients=numericalvaluemax_per_ip=numericalvalue//限定下载速度,具体由用户自己定,例如80KB/s。anon_max_rate=80000//启用详细的日志记录格式xferlog_enable=YES8.3.4基于IP地址的虚拟FTP服务器假定服务器有两个IP地址,和。vsftpdFTP服务器。如何在一台服务器上使用多个IP地址,请参考相关章节。(1)创建虚拟FTP服务器的根目录。mkdir-p/var/ftp2/pub确保/var/ftp2和/var/ftp2/pub目录的拥有者和组均为root,掩码为755。(2)增加虚拟FTP服务器的匿名用户帐号。原先的FTP服务器使用系统用户ftp作为其匿名用户帐号。要增加一个ftp2用于虚拟FTP服务器。useradd-d/var/ftp2-Mftp2(3)创建虚拟FTP服务器的配置文件。复制原来的作为虚拟FTP服务器的配置文件,并修改相关参数。cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd2.conf新添或修改以下参数:listen=YESlisten_address=ftp_username=ftp2注:由于vsftpd默认是监听所有的IP地址,当设定基于IP的虚拟FTP服务器时,为防止原来的FTP服务器与虚拟FTP服务器发生监听上的冲突,原FTP服务器需要指定监听的IP地址。在这里,原来的配置文件中就要设置listen_address=。(4)启动虚拟FTP服务器/脚本在启动时,扫描/etc/vsftpd/目录下所有的*.conf文件,按照*.conf文件的先后,依次启用vsftpd进程,每个vsftpd进程对应一个.conf文件。即,使用“ls/etc/vsftpd/”命令列表的次序与“ps-aux|grepvsftpd”中的顺序一样。使用“ps-aux|grepvsftpd”命令也可显示出vsftpd所使用的配置文件,从中也可以看哪个vsftpd进程对应哪个FTP服务器。如果没有列出配置文件,那就是默认的vsftpd.conf,那么该进程也就是原来的FTP服务器进程。由于第3步中虚拟FTP服务器的配置文件被命名为文件,所以可以用/脚本同时启动或关闭原FTP服务器和新加的虚拟FTP服务器。以下命令单独启动虚拟FTP服务器:/usr/sbin/vsftpd/etc/vsftpd/vsftpd2.conf&单独关闭虚拟FTP服务器,用“ps-aux|grepvsftpd”查出进程号,再用kill指令杀死虚拟FTP的进程。8.4虚拟用户的配置vsftpd的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而vsftpd的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。8.4.1.vsftpd的虚拟用户vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。vsftpd验证虚拟用户则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,vsftpd需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。配置虚拟用户分为几部分:guest用户的创建、用户/口令的保存、PAM认证配置、文件设置等。具体的配置方法,参考下面小节。注:在后面的例子中,假定存在虚拟用户xiaotong和xiaowang。8.4.2.用户创建和目录设置在系统中添加vsftpdguest用户,作为虚拟用户在系统中的代表。useraddvsftpdguest当虚拟用户登录后,所在的位置为vsftpdguest的自家目录/home/vsftpdguest。如果要让虚拟用户登录到/var/ftp等其他目录,修改vsftpdguest的自家目录即可。8.4.3.配置文件的设置(1)基本设置。在配置文件中,加入以下参数:guest_enable=YESguest_username=vsftpdguest(2)虚拟用户的权限配置。添加了virtual_use_local_privs参数,当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限,这也就是之前版本对虚拟用户权限的处理方法。这两者种做法相比,后者更加严格一些,特别是在有写访问的情形下。默认情况下此参数是关闭的(NO)。下面先介绍virtual_use_local_privs=NO时,即之前版本对虚拟用户权限的配置方法:①控制虚拟用户浏览目录如果让用户不能浏览目录,但仍可以对文件操作,那么需要执行以下两个步骤:一是在配置文件中设置anon_world_readable_only=YES;二是虚拟用户目录的权限改为只能由vsftpdguest操作:[root@vsftpd]#chownvsftpdguest.vsftpdguest/home/vsftpdguest[root@vsftpd]#chmod700/home/vsftpdguest②允许虚拟用户上传文件write_enable=YESanon_upload_enable=YES③允许虚拟用户修改文件名和删除文件anon_other_write_enable=YES由于以上选项的设置同样会对匿名用户生效。如果不想匿名用户趁机拥有同样的权限,最好是禁止匿名用户登录。在中当virtual_use_local_privs=YES时,只需write_enable=YES,虚拟用户就可以就拥有写权限。(3)虚拟用户的其他配置①限定虚拟用户在自家目录。chroot_local_user=NOchroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list在/文件中加入xiaotong和xiaowang。或者,chroot_local_user=YES②虚拟用户的个人配置。如果想让个别的虚拟用户拥有自己特别的配置,同样可以建立虚拟用户的个人配置文件。在主配置文件中加入:user_config_dir=/etc/vsftpd/vsftpd_user_conf生成/etc/vsftpd/vsftpd_user_conf目录,在该目录下建立与特定虚拟用户同名的文件:[root@vsftpd]#mkdirvsftpd_user_conf[root@vsftpd]#cdvsftpd_user_conf[root@vsftpd_user_conf]#touchxiaowang然后在xiaowang文件中就可以加入专对xiaowang生效的选项设置了。注:如果在个人配置文件中加入chroot_local_user=YES是无效的。(4)虚拟用户个人目录设置可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即guest_username用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以xiaowang为例,在第上步的基础上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:local_root=/home/xiaowang新建xiaowang目录,并将权限设为vsftpdguest:[root@home]#mkdirxiaowang[root@home]#chownvsftpdguest.vsftpdguest./xiaowang8.4.4.使用MySQL保存虚拟用户本节介绍如何将虚拟用户的用户名和口令保存在MySQL的数据库中。这主要分成两个部分,一是将用户和口令保存在数据库,二是设置相应的PAM认证。为了方便论述,假定:数据库vsftpdvu,表users,字段name和passwd用于保存虚拟用户的用户名和口令;为了安全,只授权vsftpdguest读vsftpdvu数据库的users表。(1)虚拟用户的用户名/口令的保存。这部分在MySQL数据库中完成。首先,创建数据库vsftpdvu以及表users,并插入虚拟用户xiaotong、xiaowang。执行以下命令:[root@vsftpd]#mysql-pmysql>createdatabasevsftpdvu;mysql>usevsftpdvu;mysql>createtableusers(namechar(16)binary,passwdchar(16)binary);mysql>insertintousers(name,passwd)values('xiaotong',password('qqmywife'));mysql>insertintousers(name,passwd)values('xiaowang',password('ttmywife'));mysql>quit然后,授权vsftpdguest只能读vsftpdvu数据库的users表。执行以下命令:[root@vsftpd]#mysql-urootmysql-pmysql>grantselectonvsftpdvu.userstovsftpdguest@localhostidentifiedby'i52serial0';mysql>quit如果要验证刚才的操作是否成功可以执行下面命令:[root@vsftpd]#mysql-uvsftpdguest-pi52serial0vsftpdvumysql>select*fromusers;如果成功,将会列出xiaotong、xiaowang和加密后的密码。(2)设置PAM认证。这里要用到一个利用mysql进行pam验证的开源项目(/projects/pam-mysql/)。首先从网站下载它的程序包pam_myql-0.5.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在机器上,如果没有请从安装光盘中安装该包。然后,执行以下命令:[root@]#tarxvzfpam_mysql-0.5.tar.gz[root@]#cdpam_mysql[root@pam_mysql]#make[root@pam_mysql]#makeinstallmakeinstall这一步可能会出现错误,那只好手动将该目录下生成的复制到/lib/security目录下。接下来,要设置vsftpd的PAM验证文件。打开/文件,加入以下内容:authrequiredpam_mysql.ouser=vsftpdguestpasswd=i52serial0host=localhostdb=vsftpdvutable=usersusercolumn=namepasswdcolumn=passwdcrypt=2accountrequiredpam_mysql.ouser=vsftpdguestpasswd=i52serial0host=localhostdb=vsftpdvutable=usersusercolumn=namepasswdcolumn=passwdcrypt=2上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数,crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。8.5配置vsftpd服务器实训8.5.1实训简介1.实训目的通过安装和配置vsftpd,掌握在Linux下架设FTP服务器和配置FTP虚拟站点的方法。2.实训内容(1)安装vsftpd。(2)配置禁止使用FTPServer的用户。(3)配置匿名FTP。(4)配置匿名登录后的根目录到Apache的网页目录。(5)查看和控制服务器状态。(6)设置虚拟主机的IP地址。(7)设置虚拟FTP服务器。3.实训环境(1)一台已经安装好VmwareLinux虚拟机系统的Windows计算机,256兆以上内存。两个子网A和B。子网A的网络地址为/24,子网B的网络地址为/24。DHCP服务器位于子网A。(2)Vmware软件,5.0版本或者更高。(3)Linux系统光盘或光盘映象。4.实训学时:2学时。8.5.2实训步骤1.安装vsFTPServer使用RPM方式安装和vsftpd-1.1.3-8.i386.rpm:2.配置vsFTPServer的启动方式(1)安装后的FTPserver一般无须配置即可使用,只要把文件复制到默认的FTP目录/var/ftp即可,该目录有一个默认子目录pub,pub通常是放置下载文件的目录。(2)vsFTP默认是以Standalone(单独服务器)的方式启动,因此可用servicevsftpdstart或/来启动服务器。(3)如果管理员希望vsFTP以xinetd方式启动,则应先将vsFTP的xinetd配置文件/复制到/etc/xinetd.d目录:然后编辑/将disable=yes改为disable=no(4)检查/etc/inetd.conf(如果使用inetd或xinetd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 妇产科诊疗流程优化汇报
- 护理人员的法律意识与权益
- 医疗新技术应用成果展示
- 人工智能辅助手术系统
- 护理工作流程优化与质量提升
- 2026年蚌埠经济技术职业学院高职单招职业适应性测试备考题库带答案解析
- 2026年永州师范高等专科学校单招综合素质笔试模拟试题附答案详解
- 2026年黑龙江护理高等专科学校高职单招职业适应性测试模拟试题有答案解析
- 2026年赣西科技职业学院高职单招职业适应性测试模拟试题有答案解析
- 2026年广西工业职业技术学院高职单招职业适应性测试备考题库有答案解析
- 2025年合肥市档案馆公开招聘政府购买服务岗位人员2名备考考试试题及答案解析
- 成人泌尿造口护理团体标准解读2026
- 物料供应商遴选制度
- 多趾畸形护理查房
- 伊利并购澳优的财务绩效分析
- 胸腺瘤伴重症肌无力课件
- 安徽省合肥市蜀山区2024-2025学年上学期八年级数学期末试卷
- 电商售后客服主管述职报告
- 十五五安全生产规划思路
- 上海证券有限责任公司校招职位笔试历年参考题库附带答案详解
- 剪刀车专项施工方案
评论
0/150
提交评论