-- ftp samba dns http postfix FTP 成本低,跨平台,跨公网 file transfer protocol 网络上能做文件传输的: http nfs samba nfs:linux to linux 内网 samba: linux to windows 内网 ftp:可以上传,下载 http:一般来说只下载,主要用于web应用 文件传输协议 windows下的服务端serv-U 客户端 cuteftp leapftp flashftp 浏览器(IE,firefox) 一个很老的文件传输协议,明码传输,不安全 网络加密(tunnel+ipsec,vpn+ipsec,ssl/tls) ftp+ssl=ftps http+ssl=https 还有一个协议不要搞混乱了 tftp Trivial File Transfer Protocol 简单文件传输协议 [root@dns ~]# rpm -qi vsftpd-2.0.5-16.el5 Summary : vsftpd - Very Secure Ftp Daemon Description : vsftpd is a Very Secure FTP daemon. It was written completely from scratch. vsftp very secure ftp 另一种开源的ftp软件proftp,wuftp proftp + Berkeley DB (把ftp账号存放在数据库,而不是使用系统用户) 基本的网络连接模式: 端口分类: 注册端口:1-1024 随机端口:1024-65535 客户端以随机端口 连接 服务端监听端口 服务端监听端口 回给 客户端随机端口 tcp连接 (三次握手,数据传输,四次挥手。包含了11种连接状态) 客户端 服务端 5900 ---》syn <----syn,ack ---->ack+1 使用的端口号: 数据传输端口 20 命令传输端口 21 主动:默认情况下,ftp服务是开放了21端口,用来接受控制命令,服务器用20端口去发送数据(连接客户端大于1024的随机端口) 被动:ftp服务也是开放21端口,用来接受命令控制,进行数据传输时,客户端会告知服务端打开一个大于1024的端口,然后客户端去主动连接服务 主动: server client 20 21 n m <------------- --------------> ----------------------------------------> <--------------------------------------- 被动: server client 随机端口 21 n m <--------------- ----------------> <-------------------------------------------- ---------------------------------------------> 主动模式:建立数据链路时由sever端去主动连接客户端的大于1024的随机端口 被动模式:建立数据链路时由client端去主动连服务端的随机端口 如果没有防火墙,则两种模式一样用,只是底层传包方式不一样而已 有防火墙,那么防火墙的写法是不一样的 主动好还是被动好? 先假设一种场景:客户端用户安装个人防火墙,但又不懂防火墙的配置,所以防火墙默认配置。 个人防火墙的默认一般只会拒绝进来的包,而不会拒绝你出去的包和你出去再回来的包。 所以上面的主动模式是有可能被拒绝掉的 一般的使用方法是:使用被动模式,并固定服务端的随机端口范围,在服务端写防火墙来控制 主动和被动如何配置? 服务器可以配置支持主动或被动,也可以配置都支持 客户端可以配置使用主动模式还是被动模式来连接服务器 主动ftp对ftp服务器的管理有利,但对客户端的管理不利。因为是服务端主动与客户端去建立连接,可能会被客户端的防火墙把源来自服务器的包给阻塞掉 被动ftp对ftp客户端的管理有利,但对服务端的管理不利。因为客户端主动与服务端去连,可能会被服务端的防火墙给阻塞掉 折衷的方法就是使用被动模式,并指定一个连接过来的端口范围,可以针对这个范围的端口进行一个防火墙的设置。 --(到iptables课程会介绍) 包过滤防火墙 一般对src IP, dst IP ,src port ,dst port 等相关的参数来进行控制 [root@li ~]# yum install vsftpd lftp ftp -y 服务运行也有两种模式 stand alone super daemon [root@li ~]# vim /etc/vsftpd/vsftpd.conf --主配置文件 man vsftpd.conf --查看配置帮助 /etc/init.d/vsftpd start chkconfig vsftpd on [root@li ~]# netstat -ntl |grep :21 --现在是只能看到监听21端口 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 验证主动模式: [root@li ~]# ftp 10.1.1.45 --自己做客户端,连接自己的服务端 Connected to 10.1.1.45. 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 type Name (10.1.1.45:root): ftp --匿名用户ftp 331 Please specify the password. Password: --它的密码任意或者为空 230 Login successful. ftp> ? --使用?号可以查看能使用哪些命令 ftp> help passive --help+命令可以查看命令的帮助 passive toggle passive transfer mode ftp> passive --使用passive命令关闭被动模式 Passive mode off. ftp> ls --建立数据链路 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. drwxr-xr-x 2 0 0 4096 May 13 2009 pub 226 Directory send OK. 在服务器打开第二个终端验证 [root@li ~]# netstat -nt |grep TIME_ --可以看到是服务端的20端口去连客户端的大于1024的随机端口 tcp 0 0 10.1.1.45:20 10.1.1.45:56227 TIME_WAIT 验证被动模式 [root@li ~]# telnet 10.1.1.45 21 Trying 10.1.1.45... Connected to li.cluster.com (10.1.1.45). Escape character is '^]'. 220 (vsFTPd 2.0.5) USER ftp 331 Please specify the password. PASS 230 Login successful. PASV 227 Entering Passive Mode (10,1,1,45,243,212) 第二个终端 [root@li ~]# netstat -ntlup |grep vsftpd tcp 0 0 10.1.1.45:45716 0.0.0.0:* LISTEN 2867/vsftpd =============================================================== 参考man vsftpd.conf 配置文件参数说明: [root@li ~]# cat /etc/vsftpd/vsftpd.conf |grep -v ^# |grep -v ^$ -- ^#代表以#开头的行,也就是注释; ^$代表空行 anonymous_enable=YES --允许匿名用户登录 local_enable=YES --允许本地用户登录 write_enable=YES --允许本地用户登录后可写 local_umask=022 --建立文件或者目录的权限掩码 dirmessage_enable=YES --启用目录的说明或者欢迎信息 xferlog_enable=YES --打开日志功能 (只记录文件的上传和下载信息) connect_from_port_20=YES --默认支持主动模式(两个模式都是开启的,直接使用的话是使用的被动模式) xferlog_std_format=YES --日志使用xferlog而不是vsftpd.log,改为NO的话,则相反 listen=YES --默认运行在stand alone下 pam_service_name=vsftpd --支持pam(可植入模块) userlist_enable=YES --打开用户列表的功能 tcp_wrappers=YES --支持tcp_wrappers ================================================================== 在我们所学的基本服务里,有匿名用户和普通用户区分的服务有下面几种: nfs ftp samba 配置实例: 匿名用户有两个 ftp 密码为任意值或空 anonymous 密码为任意值或空 例一:不允许匿名用户登录 anonymous_enable=NO --改为no /etc/init.d/vsftpd reload 使用匿名用户登录测试,发现登录不了 例二:匿名用户的下载 anonymous_enable=YES --改回yes 默认使用匿名用户登录的服务端的/var/ftp目录下,因为/etc/passwd里的ftp用户的家目录就是/var/ftp,所以其实就是登录到它的家目录 匿名用户默认是可以登录,也可以下载,因为/var/ftp是755权限 能读表示能下载,能写表示能上传 chmod 750 /var/ftp后使用匿名用户登录,ls都看不到文件列表,也下载不了 chmod 754 /var/ftp后使用匿名用户登录,ls都看不到文件列表,也下载不了,因为不能cd到/var/ftp chmod 751 /var/ftp后使用匿名用户登录,ls都看不到文件列表,但是可以下载;因为它能cd到/var/ftp,ls虽然看不到,但get 文件名,是可以下载下来的 还要注意文件的权限对其是否能被下载也有关系,要登录用户对其有r权限,才可以下载 --任何服务的权限控制是要经过两道门的,一个是服务本身的权限控制,一个是操作系统的权限控制,也就是说两个都允许,才有权限;如果有防火墙的话,则还要考虑防火墙的控制 --总结:匿名用户对登录的目录有rx权限,对目录里的文件有r权限就可以下载 例三:匿名用户的上传 默认是不允许匿名用户上传的 ftp> put 1 local: 1 remote: 1 227 Entering Passive Mode (10,1,1,45,135,67) 550 Permission denied. --权限拒绝,因为/var/ftp不允许ftp用户写 chmod 777 /var/ftp Name (10.1.1.45:root): ftp 331 Please specify the password. Password: 500 OOPS: vsftpd: refusing to run with writable anonymous root Login failed. --/var/ftp被改为777后,发现登录不了,所以还得改回去755 --因为ftp服务本身不允许系统权限给匿名写,所以解决方法是在登录目录,再去创建一个用于上传的目录,给一个写权限 chmod 755 /var/ftp chmod 777 /var/ftp/pub --把pub改为可写,用于上传 ftp> cd pub 250 Directory successfully changed. ftp> put 1 local: 1 remote: 1 227 Entering Passive Mode (10,1,1,45,232,229) 550 Permission denied. --但还是权限拒绝 --因为系统权限允许了,但是服务本身的权限还是不允许,所以要去改服务的配置参数 anonymous_enable=YES anon_upload_enable=YES --允许匿名用户上传文件 anon_mkdir_write_enable=YES --允许匿名用户创建目录 --总结:匿名用户只能对登录目录内的子目录里面进行上传,并且对这个子目录要有w权限, --还要有anon_upload_enable=YES和anon_mkdir_write_enable=YES的支持就可以上传了 练习: 使客户端匿名用户登录后可以删除文件和重命名文件,并且可以上传一个同名文件把以前的覆盖(相当是修改) (man vsftpd.conf) anon_other_write_enable=yes --加上此参数,再重启服务; --在rhel6下测试的,加上这个参数后,家目录里的文件不能删,但子目录里的可以 --实际环境:不建议使用此参数,太不安全了,包括上面允许匿名写也是不安全的 例四: 允许匿名下载刚上传的文件 为什么默认不允许下载自己上传的文件? 文件上传之后权限自动改为600, 而默认情况下anon_world_readable_only=YES,规定了匿名用户只能下载world readable的文件(也就是others里有r位的) 对于600权限文件是没有权限下载 -rw------- 1 14 50 845 Jul 19 06:12 fstab 不可以 -rw-r--r-- 1 0 0 1666 Jul 19 06:13 inittab 可以 方法一:让匿名帐号上传的文件权限自动更改为644的权限 man vsftpd.conf anon_umask=022 如果文件的权限是444 ,umask怎么设定? anon_umask=0222 方法二:允许匿名帐号下载不是所有人都可以读的文件 anon_world_readable_only=NO <---默认是yes,只允许下载所有人都可以读的文件 例五:关于普通用户(系统的普通用户)的登录 普通用户默认是允许登录ftp的,并且是登录到自己的家目录,登录密码也就是普通用户登录系统的密码 禁止普通用户登录 方法一: local_enable=NO --建议使用服务的参数去禁止,但是这里会把所有的普通用户给禁止掉,要实现特定的用户的控制 方法二:/etc/passwd 里把普通用户最后一列,改为/bin/false /bin/bash --可以登录系统,也可以登录ftp,也可以收邮件 /sbin/nologin --不可以登录系统,但可以登录ftp,也可以收邮件 /bin/false --又不可以登录系统,又不可以登录ftp,也可以收邮件 题目: 1,通过ftp ftp.redhat.com去猜测redhat的ftp服务器的配置怎么做? local_enable=NO 2,如果你是一个老师,对学员进行测试,要求他们把测试后的文件上传到你的服务器,你应该如何配置? 建议使用匿名用户来做,不要使用普通用户,因为匿名用户默认上传的不能下载(防止有学员直接下载别人上传的然后抄袭) 要先建立一个子目录,给写权限 anon_upload_enable=YES 例六:使用用户列表来控制 --建议使用这种方式 userlist_enable=yes --打开用户列表功能 userlist_deny=YES --这一句可加可不加,默认就是有这一句的 vim /etc/vsftpd/user_list --加上要禁止的用户,一个用户写一行 黑名单 -------------- userlist_enable=yes userlist_deny=no vim /etc/vsftpd/user_list --加上允许的用户,一个用户写一行 白名单 --做白名单要注意:如果允许匿名登录的话,除了anonymous_enable=YES外,还要把ftp和anonymous加入到白名单里 --上面的主要要注意的是: userlist_enable 指定的是用户列表功能是否有效 userlit_deny 指定的是用户列表是允许还是拒绝 --pam默认也把root和一些系统用户(uid小于500的)给禁用了。 vim /etc/vsftpd/ftpusers --如果把/etc/pam.d/vsftpd文件中第二行的sense=deny改为allow,则表示/etc/vsftpd/ftpusers文件里的用户pam是允许登录的 --如果允许root用户登录ftp,则要/etc/vsftpd/user_list和/etc/vsftpd/ftpusers都不要禁用root登录ftp就可以了。但为了安全,不会这样去开放root用户的 例七:关于普通用户的下载和上传 默认是允许下载和上传的 允许上传除了系统目录有写权限外,还有与服务的参数write_enable=YES有关 --有没有可以userlist这样的控制部分用户可以上传,另外的用户不能下载的参数呢? 一般来说,ftp不适合做多个用户都登录到同一个目录里,然后对不同的用户做权限控制 而samba这种文件服务器就适合做 练习:所有的本地用户(非匿名用户)登录后,都统一登录到/ftpdata/目录下 --一种:把所有的用户家目录改成/ftpdata/。但这样做会影响到系统用户登录到自己的家目录 --二种:使用下面的参数,它不影响你系统用户登录到自己的家目录 local_root=/ftpdata 例八:关于chroot(cage笼环境,jail监牢) --为了增强安全性,把用户活动范围锁定到登录的目录里 chroot是一个安全机制,同时它也是有一个命令叫chroot # chroot /mnt/ chroot: failed to run command `/bin/bash': No such file or directory --这样直接chroot一个目录是不行的,只能去chroot一个有bash环境的目录(比如说双系统环境里另一个系统的根,或者是排错时错误系统的根) 默认情况下,普通用户(匿名用户除外)可以登录ftp后,cd切换到/下的任何地方,只要有r权限,就可以get文件,那么显示是不安全的 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list vim /etc/vsftpd/chroot_list --手动创建这个文件,默认不存在,并写上要加入笼环境的用户名,一行写一个 /etc/init.d/vsftpd reload 测试发现,有笼环境的用户ftp登录后,cd .. 还是在它的登录目录,出不去了 练习:如何把所有的普通用户(匿名用户默认就是笼环境)加入到jail环境 chroot_local_user=YES 例九:登录时显示目录信息 1,针对各个目录的消息显示: dirmessage_enable=YES vim /home/a/.message --写上关于登录此目录,或者CD到此目录的说明信息或者欢迎信息 不管什么用户,只要是能够登录或者cd到这个目录,就会显示消息 2,针对全局的消息显示 方法一: ftpd_banner=Welcome to my ftp server !! [root@li test]# ftp 10.1.1.45 Connected to 10.1.1.45. 220 Welcome to my ftp server ,this is for students --在这里就会显示信息 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (10.1.1.45:root): 方法二: 把消息直接写到一个文件里 banner_file=/etc/vsftpd/banner --手动写一个文件,并写上消息 [root@li test]# ftp 10.1.1.45 Connected to 10.1.1.45. 220-@@@@@@@@@@@@@@@@@@ 220-@ @ 220-@ @_@ @ 220-@ @ 220-@@@@@@@@@@@@@@@@@ 220 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (10.1.1.45:root): 总结: 关于这些消息提示的功能(大多数软件都有) 系统登录提示消息: /etc/motd /etc/profile sshd在登录时,输入密码前提示消息: vim /etc/ssh/sshd_config banner /etc/ssh_banner vim /etc/ssh_banner this is 35 server ,don't try to login my system !!!!! /etc/init.d/sshd restart 例十: ftp的日志 xferlog_enable=YES --打开日志记录功能 xferlog_std_format=YES --使用xferlog,而不是vsftpd.log xferlog_file=/var/log/xferlog --打开注释,指定日志文件路径 /etc/init.d/vsftpd reload cat /var/log/xferlog --只记录上传和下载的日志 Tue May 3 06:24:57 2011 1 10.1.1.185 660 /etc/fstab b _ o r a ftp 0 * c Tue May 3 06:30:21 2011 1 10.1.1.185 0 /root b _ o r a ftp 0 * i Tue May 3 06:36:09 2011 1 10.1.1.132 2322 /etc/passwd b _ o r a ftp 0 * c Tue May 3 06:36:12 2011 1 10.1.1.132 660 /etc/fstab b _ o r a ftp 0 * c Tue May 3 06:36:24 2011 1 10.1.1.132 0 /etc/fstab b _ i r a ftp 0 * i Tue May 3 06:40:58 2011 1 10.1.1.86 0 /etc/passwd b _ i r a ftp 0 * i 以下面这条为例: Tue May 3 06:40:58 2011 1 10.1.1.86 0 /etc/passwd b _ i r a ftp 0 * i Tue May 3 06:40:58 2011 current-time访问时间 1 transfer-time传输时间,花费了多久 10.1.1.86 remote-host 远程操作的主机名或IP地址 0 byte-count 传输大小 /etc/passwd filename 操作的文件 b transfer-type a表示ascii传输 b表示binary传输 _ special-action-flag _ no action was taken C the file was compressed (not in use) U the file was uncompressed (not is use) T the file was tar'ed (not is use) i direction 方向 i the incoming transfer o the outgoing transfer r access-mode 访问模式 a (anonymous) the anonymous guest user g (guest) the real but chrooted user r (real) the real user a username 用户名 ftp service-name 服务名 0 authentication-method 验证类型 0 none 1 RFC931 authentication (not in use) * authenticated-user-id * symbol is used if an authenticated user id is not available i completion-status c a complete transfer i an incomplete transfer 例十一: 使用vsftpd自己带的日志 vim /etc/vsftpd/vsftpd.conf dual_log_enable=YES --vsftpd.log和xferlog都会产生 xferlog_std_format=NO --此参数为NO,表示只有vsftpd.log产生 # /etc/init.d/vsftpd reload # ls /var/log/vsftpd.log --重装载服务后,就会产生这个日志文件,原来默认没有的 --这个日志里清楚的记录了登录的成功和失败,上传下载的成功和失败等各种信息 --这两种日志的时间是比北京晚8个小时,也就是说北京时间为下午2点,它记录的是早上6点 --注意:在rhel6下,这个时间是正常的时间,不是格林威治时间了 例十二: 1,关于下载限速 anon_max_rate --匿名用户下载传输率 local_max_rate --本地用户下载传输率 local_max_rate=10000 下载传输率为10k /etc/init.d/vsftpd reload 然后使用一个普通用户登录,去下载一个较大点的文件做测试 关于限制链接数的 max_clients --ftp服务允许的总的连接数 max_per_ip --单个客户端的最大连接数 max_per_ip=2 --指定单个客户端的最大连接数为2 /etc/init.d/vsftpd reload 测试,使用一个客户端去连接ftp服务器,第三次连接就会报下面的错误 [root@li ftp]# ftp 10.1.1.45 Connected to 10.1.1.45. 421 There are too many connections from your internet address. 在测试限速下载时,如果要重复输入一个命令去查看状态的话,可以在前面加watch(默认是每2秒查看一次,但不支持ll这种别名,换成ls -l就可以) # watch ls -lh 例十三:vsftpd托管super daemon [root@li ule]# netstat -ntlup |grep :21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3460/vsftpd [root@li ule]# vim /etc/xinetd.d/vsftp service ftp { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/vsftpd disable = no } /etc/init.d/vsftpd stop /etc/init.d/xinetd restart [root@li ule]# netstat -ntlup |grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 3486/xinetd --由xinetd托管 [root@li ule]# ftp 10.1.1.35 --但是登录失败 Connected to 10.1.1.35. 421 Service not available, remote server has closed connection ftp> [root@li ule]# vim /etc/vsftpd/vsftpd.conf listen=NO --要改为no [root@li ule]# /etc/init.d/xinetd restart ftp 10.1.1.35 --再次访问OK ======================================================================= tcpwrapper 它可以控制一个小的TCP协议连接的访问控制 rpm -qi tcp_wrappers-7.6-57.el6.x86_64 Summary : A security tool which acts as a wrapper for TCP daemons. Description : The tcp_wrappers package provides small daemon programs which can monitor and filter incoming requests for systat, finger, FTP, telnet, rlogin, rsh, exec, tftp, talk and other network services. Install the tcp_wrappers program if you need a security tool for filtering incoming network services requests. This version also supports IPv6. /etc/hosts.allow /etc/hosts.deny man /etc/hosts.allow 或 man /etc/hosts.deny 看程序是否支持tcpwrapper方式 比如说看sshd [root@li test]# which sshd /usr/sbin/sshd [root@li test]# ldd /usr/sbin/sshd |grep wrap libwrap.so.0 => /lib/libwrap.so.0 (0x00d39000) --有此模块就表示支持 # rpm -qf /lib/libwrap.so.0 tcp_wrappers-7.6-40.7.el5 --不是所有的服务都支持,很多软件编译时会有./configure --enable-libwrap来支持tcpwrapper 由两个文件来控制 /etc/hosts.allow /etc/hosts.deny 访问控制机制为先去匹配/etc/hosts.allow,再去匹配/etc/hosts.deny,如果都没有,则都允许 vim /etc/hosts.deny sshd: all --拒绝所有 sshd: all EXCEPT 10.1.1.104 --只允许104ssh上来 sshd: all EXCEPT 10.1.1.104 10.1.1.105 sshd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.104 --拒绝10.1.1.0网段的人ssh访问,除了104外;注意子网掩码不支持/24写法 sshd:all:spawn echo "`date`" %c %d >> /var/log/tcpwrapperdeny.log --拒绝所有人登录,并把拒绝的时间和IP等信息保存到日志文件 sshd:all:spawn wall %c "login denied" --拒绝所有人登录,只要一登录被拒绝,就发送广播信息 sshd:all EXCEPT 10.1.1.35: spawn wall %c "login denied" --man hosts.deny查看帮助 ======================================================================== 例十四:ftp支持tcp_wrapper # ldd /usr/sbin/vsftpd |grep wrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fe2acf7c000) # vim /etc/hosts.deny --参考前面讲的sshd的写法,只要把sshd换成vsftpd就可以,其它写法一样 vsftpd:all 例十五: 被动连接模式,控制服务器数据传输端口的范围 vim /etc/vsftpd/vsftpd.conf 在最后加上 pasv_enable=YES --这一句默认不加也可以 pasv_min_port=3000 pasv_max_port=3005 --最小端口范围和最大端口范围可以自定义 --然后使用ftp 登录后,输入ls使之有数据传输,netstat -nt去验证查看会发现端口一定会在3000到3005范围内 ====================================================================== linux下ftp客户端工具介绍: ftp 不太好用,没有命令记录功能,也没有自动补全功能 lftp,是一个功能强大的客户端工具,它支持的协议有ftp,http,https等 它相对文本模式下的ftp,有历史记录功能,自动补齐功能,通配符,下载目录等功能,非常方便。 [root@li b]# lftp 10.1.1.35 --默认以匿名用户登录(是用anonymous匿名用户而不是ftp这个匿名用户来登录) [root@li b]# lftp -u b 10.1.1.35 --指定以b用户来登录 lftp b@10.1.1.35:~> mget *b --批量下载以b字母结尾的文件 2457 bytes transferred Total 3 files transferred lftp b@10.1.1.35:~> mirror aaa --下载目录aaa ======================================================================= 搭建ftp服务器,允许本地用户登录,但只允许a,b,c三个用户登录,所有的普通用户都默认登录到/ftp目录下;也允许匿名用户登录,登录到/var/ftp; 匿名用户可以下载,不能上传 a,b,c用户都只能上传和下载自己的文件;不同用户之间不能互相删除文件 只使用vsftp形式(/var/log/vsftpd.log)的日志记录,并且实现日志轮转(每月轮转一次,最多保留两个副本) 只使用主动模式的ftp连接方式 三个用户只能在/ftp目录下活动 允许匿名用户和普通用户下载的最大传输率都为100kb/s 允许ftp服务器最大的总连接为300 一个客户端最大只能有3个连接 只能在上午9:30到晚上的8:30访问ftp 允许10.1.1.0/24网段登录,但拒绝10.1.1.35登录,并将拒绝的信息保存到/var/log/ftp_denyip.log 在/var/ftp下保存光盘文件,用另一个机器配置yum,要求可以通过ftp方式的yum安装软件(也就是做一个远程的FTP式的yum源客户端,使用lftp来登录服务端) 用另一台机每天晚上6点使用lftp下载ftp服务器的/ftp里的所有内容到自己的/backup目录下(--提示,只能用a,b,c三个普通用户登录到ftp服务器的/ftp目录,但lftp的a,b,c用户的密码如何写?man lftp) mkdir /ftp chmod 757 /ftp chmod o+t /ftp vim /etc/vsftpd/vsftpd.conf local_enable=yes userlist_enable=yes userlist_deny=no anonymous_enable=YES local_root=/ftp write_enable=yes local_umask=0266 xferlog_std_format=NO pasv_enable=NO --这个参数这样做是对的,但是只使用主动模式的数据连接方式会造成yum用不了(因为yum客户端默认使用被动) connect_from_port_20=YES chroot_local_user=YES anon_max_rate=100000 local_max_rate=100000 max_clients=300 max_per_ip=3 listen=NO tcp_wrappers=YES vim /etc/vsftpd/user_list a b c ftp anonymous # vim /etc/logrotate.d/vsftpd /var/log/vsftpd.log { # ftpd doesn't handle SIGHUP properly nocompress missingok monthly --加上这一句 rotate 2 --加上这一句 } # vim /etc/xinetd.d/ftp service ftp { disable = no socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/vsftpd access_times = 9:30-20:30 } vim /etc/hosts.allow vsftpd: 10.1.1.0/255.255.255.0 EXCEPT 10.1.1.35 :spawn echo "`date`" %c >> /var/log/ftp_denyip.log lftp 10.1.1.35 -u a,123 <