Fedora服务器之FTP配置.doc_第1页
Fedora服务器之FTP配置.doc_第2页
Fedora服务器之FTP配置.doc_第3页
Fedora服务器之FTP配置.doc_第4页
Fedora服务器之FTP配置.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Fedora 服务器之 FTP 配置 zhuan2010-12-05 20:24:45|分类:linux阅读644评论1字号:大中小订阅VSFTPD是一款小巧易用FTP服务器程序,vsftpd 在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户 设置能力及带宽限流等。在安全方面,它从原理上修补了大多数Wu-FTP、ProFTP,乃至BSD-FTP的安装缺陷,使用安全编码技术解决了缓冲溢出 问题,并能有效避免“globbing”类型的拒绝服务攻击。目前正在使用vsftpd的官方网站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。它支持很多其他的 FTP 服务器不支持的特征。比 如:非常高的安全性需求带宽限制良好的可伸缩性创建虚拟用户的可能性IPv6支持中 等偏上的性能分配虚拟 IP 的可能性高速目录一.ftp原理与vsftpd安装二.设置匿名用户也支持下载和上传,创建目录三.基于系统用户支持ftp上传和访问四.搭建支持SSL加密传输的vftpd五.vsftpd.conf配置详解六.建立多个虚拟用户支持ftp不同访问权限七.利用quota对Vsftpd做磁盘配额(一)ftp原理与vsftp安装1.ftp原理FTP Transfer Protocol 件传输协议的缩写,在RFC 959中具体说明。FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。控制通道:控制通道是和FTP服务器进行沟通的通道, 连接FTP,发送FTP指令都是通过控制通道来完成的, PI称为控制连接数据通道:数据通道是和FTP服务器进行文件传输或者列表的通 道。FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式,DTP称为数据连接PORT 模式(主动方式)FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。PASV模式(被动方式)在 建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送 PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是 INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。2.安装 vsftpdrootlocalhost /#rpm -qa |grep vsftpd查询是否安装了vsftpd(提示无)rootlocalhost /#mkdir /mnt/cdrom创建挂载光驱目录文件rootlocalhost /#mount /dev/cdrom /mnt/cdrom/挂载光驱到刚创建目录mount: block device /dev/cdrom is write-protected, mounting read-onlyrootlocalhost /#cd /mnt/cdrom/Server/rootlocalhost Server#rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm安装vsftp RPM包warning: vsftpd-2.0.5-12.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186Preparing. # 100%1:vsftpd # 100%rootlocalhost Server#rpm -qa |grep vsftpd再 查询是否安装了vsftpdvsftpd-2.0.5-12.el5rootlocalhost #rpm -qi vsftpd查询vsftpd详细信息Name : vsftpd Relocations: (not relocatable)Version : 2.0.5 Vendor: Red Hat, Inc.Release : 12.el5 Build Date: 2007年12月13日 星期四 19时35分37秒Install Date: 2009年12月26日 星期六 00时35分03秒 Build Host: Group : System Environment/Daemons Source RPM: vsftpd-2.0.5-12.el5.src.rpmSize : 289673 License: GPLSignature : DSA/SHA1, 2007年12月17日 星期一 23时43分34秒, Key ID 5326810137017186Packager : Red Hat, Inc.URL : /Summary : vsftpd - 非常安全 Ftp 守护进程Description :vsftpd 是一个非常安全 FTP 守护进程。它是完全从零开始编写的。rootlocalhost #rpm -ql vsftpd列出vsftpd中包含文件/etc/logrotate.d/vsftpd.log vsftpd的日志文件/etc/pam.d/vsftpd PAM认证文件/etc/rc.d/init.d/vsftpd 启动脚本/etc/vsftpd vsftpd的配置文件存放的目录/etc/vsftpd/ftpusers 禁止使用vsftpd的用户列表文件/etc/vsftpd/user_list 禁止或允许使用vsftpd的用户列表文件/etc/vsftpd/vsftpd.conf 主配置文件/etc/vsftpd/vsftpd_conf_migrate.sh vsftpd操作的一些变量和设置/usr/sbin/vsftpd vsftpd的主程序其他一些说明文档和手册文件略!/var/ftp 匿名用户主目录/var/ftp/pub 匿名用户的下载目录rootlocalhost /#service vsftpd start启动vsftpd为 vsftpd 启动 vsftpd: 确定rootlocalhost #chkconfig -level 3 vsftpd on打 开3级别随系统自动启动vsftpd(二)设置匿名用户也支持下载和上传与创建目录1.vsftpd的匿名用户默认只支持下载权限rootlocalhost /#ftp 测试ftp用匿名用户登陆到本地服务器Connected to .220 (vsFTPd 2.0.5)530 Please login with USER and PASS.530 Please login with USER and PASS.KERBEROS_V4 rejected as an authentication typeName (:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp 登陆成功(默认vsftp是开启匿名登录)接下来测试匿名用户上传与下载rootlocalhost #touch /var/ftp/pub/test.txt先在匿名用户下载目录创建一个test.txt文件rootlocalhost /#cd rootrootlocalhost #touch test1.txt进入根目录创建一个test1.txt文件,作为上传测试ftp cd pubftp ls227 Entering Passive Mode (127,0,0,12,92,5)150 Here comes the directory listing.-rw-r-r- 1 0 0 6 Dec 28 14:59 test.txt226 Directory send OK.ftp mget test.txt 下载text.txtmget test.txt?227 Entering Passive Mode (127,0,0,12,123,33)150 Opening BINARY mode data connection for test.txt (6 bytes).226 File send OK.6 bytes received in 0.0047 seconds (1.2 Kbytes/s)ftp !ls 测试是否下载到本地anaconda-ks.cfg install.log install.log.syslog test1.txt test.txt 下载成功ftp put test1.txt 上传test1.txtlocal: test1.txt remote: test1.txt200 PORT command successful. Consider using PASV.550 Permission denied. 请求被拒绝,说明没有上传权限ftp delete test.txt550 Permission denied. 请求被拒绝,说明没有删除权限2.让匿名用户支持上传功能,下载,创建目录文件的权限要实现这个功能,必须做三件事情(测试环 境是在关闭selinux情况下)修改/etc/sysconfig/selinux文件:#SELINUX=enforcingSELINUX=disabled重 启生效,如果不想重启,用命令#setenforce 0(1) 修改/etc/vsftpd/vsftpd.conf 去掉注释anon_upload_enable=YES(2)修改/etc /vsftpd/vsftpd.conf 去掉注释anon_mkdir_write_enable=YES以上两个步骤如下:rootlocalhost #vi /etc/vsftpd/vsftpd.conf25 # has an effect if the above global write enable is activated. Also, you will26 # obviously need to create a directory writable by the FTP user.27 anon_upload_enable=YES28 #29 # Uncomment this if you want the anonymous FTP user to be able to create30 # new directories.31 anon_mkdir_write_enable=YES32 #33 # Activate directory messages - messages given to remote users when they34 # go into a certain directory.35 dirmessage_enable=YES(3)文件系统中 FTP匿名用户对某个目录有写权限rootlocalhost #cat /etc/passwd |grep ftpftp:x:14:50:FTP User:/var/ftp:/sbin/nologin/var/ftp ftp用户的家目录 /sbin/nologin 不支持系统登录,只能作为虚拟用户用来登录vsftpd创建一个名为put目录,并定义这个文件的所有者为ftprootlocalhost ftp#mkdir putrootlocalhost ftp#chown ftp put修改文件所有者为ftprootlocalhost ftp# ll总计 8drwxr-xr-x 2 root root 4096 2007-12-13 pubdrwxr-xr-x 2 ftp root 4096 12-29 18:13 putrootlocalhost ftp#service vsftpd restart重启vsftpd服务关闭vsftpd: 确定为vsftpd启动vsftpd: 确定提示:要想让匿名用户 支持删除和更名权限,必须在vsftpd.conf加入以下参数anon_other_write_enable=YES 允许匿名账号具有删除.更名权限rootuhome #ftp 测试结果Connected to ().220 (vsFTPd 2.0.5)Name (:root): anonymous331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp ls227 Entering Passive Mode (127,0,0,1,116,27).150 Here comes the directory listing.drwxrwxrwx 2 0 0 4096 Mar 05 02:28 pubdrwxrwxrwx 2 14 0 4096 Mar 05 01:31 put226 Directory send OK.ftp cd put250 Directory successfully changed.ftp ls227 Entering Passive Mode (127,0,0,1,186,61).150 Here comes the directory listing.226 Directory send OK.ftp !lsanaconda-ks.cfg install.log.syslog test.txt 模板 图片 下载 桌面install.log test1.txt 公共的 视频 文档 音乐ftp put test1.txtlocal: test1.txt remote: test1.txt227 Entering Passive Mode (127,0,0,1,240,27).150 Ok to send data.226 File receive OK.ftp ls227 Entering Passive Mode (127,0,0,1,238,74).150 Here comes the directory listing.-rw- 1 14 50 0 Mar 05 02:30 test1.txt226 Directory send OK.(三)基于系统用户支持ftp上传和访问1. 关闭匿名用户登录ftp支持匿名登录是不安全,所以要禁止匿名ftp登录在/etc/vsftpd/vsftpd.conf修改以下三项anonymous_enable=NO#anon_upload_enable=YES#anon_mkdir_write_enable=YESrootred-hat-5 #servicevsftpdrestart关 闭vsftpd:确定为vsftpd启动 vsftpd:确定rootred-hat-5#ftpConnectedto .220(vsFTPd2.0.5)530PleaseloginwithUSERandPASS.530 PleaseloginwithUSERandPASS.KERBEROS_V4rejectedasan authenticationtypeName(:root):anonymous331Please specifythepassword.-提示登录失败,说明已经禁用匿名登录Password:530 Loginincorrect.Loginfailed.2.创建一个系统用户来登录ftprootred-hat-5 #useradd -s /sbin/nologin uhome建 设一个不能登录系统用户. 只用来登录ftp服务 ,这里如果没设置用户目录。默认是在home下rootred-hat-5#passwd uhomeChangingpassword foruseruhome.NewUNIXpassword:RetypenewUNIXpassword:passwd: allauthenticationtokensupdatedsuccessfully.rootred-hat-5#ftpConnectedto .220(vsFTPd2.0.5)KERBEROS_V4rejectedasan authenticationtypeName(:root):uhome331Please specifythepassword.-提示登录成功Password:230Login successful.RemotesystemtypeisUNIX.Usingbinarymodeto transferfiles.接下来测试权限ftpputtest.txt上传test.txt文件成功local: test.txtremote:test.txt227EnteringPassiveMode (127,0,0,1,98,115)150Oktosenddata.226FilereceiveOK.ftp mkdirhong创建hong目录文件成功257/home/uhome/hongcreatedftp rmdirhong删除hong目录文件成功250Removedirectoryoperationsuccessful.ftp pwd显示家目录257/home/uhomeftpcd/etc切换/etc成功250 Directorysuccessfullychanged.ftpmgetpasswd下载passwdmget passwd?227EnteringPassiveMode(127,0,0,1,220,77)150Opening BINARYmodedataconnectionforpasswd(1429bytes).226Filesend OK.1429bytesreceivedin5.9e-05seconds(2.4e+04Kbytes/s)ftp !ls显示下载passwd成功anaconda-ks.cfginstall.loginstall.log.syslog passwdtest.txt3.加强vsftp安全设置从以上可以看出ftp家目录存在安全漏洞,所以要修改以下设置:(1) 限制系统用户锁定在家目录#Vi /etc/vsftpd/vsftpd.conf去掉前面#号chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list 限制更多系统用户然后把所有用户加入/etc/vsftpd/chroot_list即可rootred-hat-5#ls/etc/vsftpd/chroot_list默认是不 存在,需要我们手动建立rootred-hat-5#ls /etc/vsftpd/ftpusersuser_listvsftpd.conf vsftpd_conf_migrate.shrootred-hat-5#touch/etc/vsftpd/chroot_listrootred-hat-5#cut-d:-f1 /etc/passwd/etc/vsftpd/chroot_list把本地用户都加入到 chroot_listcut命令是切去某一列,-d是每列的分隔符,-f 是切取第几列,然后重定向到chroot文件rootred-hat-5 #ll /etc/vsftpd/总计 24-rw-r-r-1rootroot19712-2519:57chroot_list-rw- 1rootroot1252007-12-13ftpusersftpusers指的是阻止这个文件中的用户登陆-rw- 1rootroot3612007-12-13user_list-rw-1rootroot4396 12-2519:19vsftpd.conf-rwxr-r-1rootroot3382007-12-13 vsftpd_conf_migrate.sh(2)限制重要系统用户不能登录ftp权限rootred-hat-5 #cat /etc/vsftpd/ftpusers默认会加入 一些比较重要系统用户#Usersthatarenotallowedtologinviaftprootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesnobodyrootred-hat-5 #echouhome /etc/vsftpd/ftpusers把之前建的uhome账号加进去测试rootred-hat-5#ftpConnectedto .220(vsFTPd2.0.5)KERBEROS_V4rejectedasan authenticationtypeName(:root):uhome331Please specifythepassword.-提示登录失败,说明生效了Password:530Login incorrect.Loginfailed.(3)利用ftp用户策略允许登录ftp的系统用户系统添加一个用户也默认有ftp 的登陆权限,是不安全,要一个个设置,有点繁琐。利用ftp用户策略解决这个问题,即user_list文件设置,只有user_list中存在的用户才 能登录系统修改配置文件:#vi /etc/vsftpd/vsftpd.conf在userlist_enable=YES文件后面添加userlist_deny=NOuserlist_file=/etc/vsftpd/user_listrootred-hat-5 #servicevsftpdrestart关 闭vsftpd: 确定为vsftpd启动 vsftpd: 确定rootred-hat-5#ftpConnectedto .220(vsFTPd2.0.5)KERBEROS_V4rejectedasan authenticationtypeName(:root):uhome530Permission denied.-提示登录失败Loginfailed.rootred-hat-5 #echouhome /etc/vsftpd/user_list把viong账号加入到 user_listrootred-hat-5 #ftpConnected to.220(vsFTPd2.0.5)KERBEROS_V4rejectedasan authenticationtypeName(:root):uhome331Please specifythepassword.-提示登录成功Password:230Login successful.RemotesystemtypeisUNIX.Usingbinarymodeto transferfiles.(4)设置登录ftp目标ip地址为了让ftp更安全,我们设置ftp目标ip地址访问C:UsersAdministratorifconfig 查看本地ip.以太网适配器 VMware Network Adapter VMnet1:6连接特定的DNS后缀.:IPv4地址. .:子网掩码.: 默认网关.:只允许这个ip地址访问ftp ssh,可以写条iptable做限制.如下:rootred-hat-5#iptables-AINPUT-ptcp-s-dport22-j ACCEPT允许访问本地22端口rootred-hat-5#iptables-AINPUT-ptcp-s -dport21-jACCEPT允许访问本地21端口rootred-hat-5 #iptables-AINPUT-ptcp-s -dport65341:65351-jACCEPT允许访问本 地PASV端口rootred-hat-5#iptables-PINPUTDROP禁止任何输入的数据包rootred-hat-5#serviceiptablessave保存iptables设 置将当前规则保存到/etc/sysconfig/iptables:确定rootred-hat-5 #serviceiptablesstatus 检查iptables的设置表格:filterChainINPUT(policyDROP)num targetprotoptsourcedestination1 RH-Firewall-1-INPUTall-/0/02 ACCEPTtcp-/0tcp dpt:223ACCEPTtcp-/0 tcpdpt:214ACCEPTtcp-/0 tcpdpts:65341:65351(四)搭建支持SSL加密传输的vftpdftp传输数据是明文,弄个抓包软件就可以通过数据包来分析到账号和密码,为了搭建一个安全性 比较高ftp,可以结合SSL来解决问题SSL(Secure Socket Layer)工作于传输层和应用程序之间.作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以 把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证.SSL取得大规模成功后,IETF将SSL作了标准化, 并将其称为TLS(Transport Layer Security).Ftp结合SSL,将实现传输数据的加密,保证数据不被别人窃取.下面 我们使用linux自带的抓包工具tcpdump抓包分析,来截取ftp登录用户口令rootred-hat-5vsftpd#tcpdump-ieth0-A|moretcpdump: verboseoutputsuppressed,use-vor-vvforfullprotocoldecodelistening oneth0,link-typeEN10MB(Ethernet),capturesize96bytes.20:40:26.208724 IP.5451629.ftp:S289306029:289306029(0) win8192.u.p. .V.20:40:26.210838IP29.ftp .54516:S1292926425:1292926425(0)ack289306030win 5840E.0.H.M.u.p.S.20:40:26.212600 IP.5451629.ftp:.ack1win64240E.(m.u.M.P.20:40:26.229597 IP29.ftp.54516:P42:48(6)ack1 win5840E.2.M.u.P.22020:40:26.251901 IP.5451629.ftp:P1:16(15)ack48 win64193E.7m.u.M.P.#.USERuhome20:40:26.251989 IP29.ftp.54516:.ack16win5840E.(.3.M. .u.P.20:40:26.252116IP29.ftp .54516:P48:82(34)ack16win5840E.J.4.M. .u.P.8.331Pleasespecifythepassword.20:40:26.255680 IP.5451629.ftp:P16:31(15)ack82 win64159E.7m.u.M.+P.3.PASS123456E.Nm.R.:.!. EJFDEBFEEBFACACACACACACACACACAAA.20:40:31.301262IP 29.ftp.54516:P82:105(23)ack31win 5840E.?.6.M.+.u.P.H.230Login successful.从我们抓的数据包,可以看到账号密码,所以明文传输的数据安全性太可怕了让vsftpd支持SSL,必须让 OPENSSL0.9.6版本,还有就是本身vsftpd版本是否支持查询vsftpd软件是否支持SSLrootlocalhost vsftpd#ldd/usr/sbin/vsftpd |greplibssllibssl.so.6=/lib/libssl.so.6 (0xf7f27000)说明此版本支持如没有输出libssl.so.6 = /lib/libssl.so.6 (0xf7f27000)类似文本,说明此vsftpd版本不支持SSLrootred-hat-5#opensslreq-x509-nodes-days365 -newkeyrsa:1024-keyout/etc/vsftpd/vsftpd.pem-out /etc/vsftpd/vsftpd.pem生成vsftpd.pem证书Generatinga1024bit RSAprivatekey.+.+writing newprivatekeytovsftpd.pem-Youareabouttobeasked toenterinformationthatwillbeincorporatedintoyourcertificate request.Whatyouareabouttoenteriswhatiscalleda DistinguishedNameoraDN.Therearequiteafewfieldsbutyoucan leavesomeblankForsomefieldstherewillbeadefaultvalue,If youenter.,thefieldwillbeleftblank.-CountryName (2lettercode)GB:cnStateorProvinceName(fullname) Berkshire:shanghaiLocalityName(eg,city)Newbury:shanghaiOrganization Name(eg,company)MyCompanyLtd:lenovo根据提示填写一些信息Organizational UnitName(eg,section):lenovoCommonName(eg,yournameoryour servershostname):uhomeEmailAddress:rootlocalhost #ll/etc/vsftpd/=查看是否生成vsftpd.pem文件-rw-r-r-1rootroot 19712-2519:57chroot_list-rw-1rootroot1252007-12-13 ftpusers-rw-1rootroot3612007-12-13user_list-rw- 1rootroot439612-2519:19vsftpd.conf-rwxr-r-1rootroot338 2007-12-13vsftpd_conf_migrate.sh-rw-r-r-1rootroot216801-08 01:53vsftpd.pem生成vsftpd.pem成功rootred-hat-5#vi/etc/vsftpd/vsftpd.conf编辑主配置文 件,添加以下参数ssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NOrsa_cert_file=/etc/vsftpd/vsftpd.pem下 面是ssl参数一些定义,根据自己需求去修改ssl_enable=yes/no /是否启用SSL,默认为noallow_anon_ssl=yes/no /是否允许匿名用户使用SSL,默认为norsa_cert_file=/path/to/file/rsa 证书的位置dsa_cert_file=/path/to/file /dsa证书的位置force_local_logins_ssl=yes/no /非匿名用户登陆时是否加密,默认为yesforce_local_data_ssl=yes/no /非匿名用户传输数据时是否加密,默认为yesforce_anon_logins_ssl=yes/no /匿名用户登录时是否加密,默认为noforce_anon_data_ssl=yes/no /匿名用户数据传输时是否加密,默认为nossl_sslv2=yes/no/是否激活sslv2加密,默认nossl_sslv3=yes/no /是否激活sslv3加密,默认nossl_tlsv1=yes/no/是否激活tlsv1 加密,默认yesssl_ciphers=加密方法/默认是DES-CBC3-SHArootred-hat-5 #servicevsftpdrestart关 闭vsftpd:确定为vsftpd启动 vsftpd:确定通过LeapFTP连接FTP打开 LeapFTP按F4跳出站点管理器.填写ftp目标地址并选择连接类型接受并保存证书连接成功传输数据成功(五)vsftpd.conf配置详解1.根据 /etc/vsftpd/vsftpd.conf默认配置给出设定功能 #Exampleconfigfile/etc/vsftpd/vsftpd.conf#Thedefa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论