一步一步学会linux之四 :vsftpd的企业案例
2009-04-02 08:43
274 查看
一步一步学会linux之四 :vsftpd的企业案例
为学校架设一个ftp服务器,普通学生通过账号ftp和密码123登陆,他只能下载不能上传;再为要提供资源的学生开设个账号vip密码123,上传资源通过管理员审核合格了再提供给学生下载,服务器要实现 ip限制(如限制外网访问)时间限制(如晚上12点到早上6点不能下载)
第一步:建立两个虚拟账号并生成数据库
注:上述两步在前面的课程都已经讲过如果不明白什么意思的话回去看我的这篇文章
《一步一步学会linux之三 :vsftpd的 应用举例》
第二步:配置pam模块
注释:重点是加入 这两行
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
用于处理虚拟账号的数据库,前面的为了防干扰只好把他们先注释掉
第三步:建立系统用户与虚拟数据库用户关联
注释:上面我们建立了两个系统帐户 ftpuser(其对应虚拟帐户ftp) 和ftpvip(其对应帐户为vip),从修改文件的权限我们很清楚知道我们要使虚拟帐户ftp只有下载功能(读),而
虚拟帐户vip有上传和下载功能(读写)。当然这只是设置了文件夹读写属性我们还要进一步编辑vsftpd.conf的配置文件。
第四步:配置相关的vsftpd.conf文件
接下来就要配置vsftpd.conf文件了,把vsftpd.conf所有注释了然后自己写算了如下:
Vsftpd的文件是配置好了但是我们还要继续增加需要用户的配置
然后在/ftpconfig/ftp的文件里加入如下内容
同理
[root@service root]# vi /ftpconfig/vip
注释:这里大家经常看到anon_匿名用户的前缀,其实虚拟用户在某种程度上更接近于匿名用户,包括上传,下载,修改文件名,删除文件等配置所使用的指令与匿名用户的指令是相同的。
好了这个vsftpd服务器的骨架已经出来了 下面我们来进一步的优化。
由于我的ftp是自己编译的所以启动时默认是standalone 模式因此用
/usr/local/sbin/vsftpd & 启动 注意用这个启动先要吧xinetd模式关了否则可能会出现错误
现在我们启动了vsftpd 然后看看测试截图。
图一 用ftp虚拟帐户登陆
我现在换个 flashfxp ftp工具 用ftp虚拟帐户登陆 并试图上传视频文件liaoluyu2.wmv视频文件
图二 上传文件失败
下面是下载test.mp3文件 大家观察下载速度是25.6kb/s左右
图三 下载文件(成功下载)
现在我们来观察虚拟帐户vip的测试:
上传的速度 大概是64.0kb/s
图四 可以上传 速度为64.0kb/s
下载速度大概是64.0kb/s
图五 下载速度64.0kb/s
第五步:进一步配置vsftpd 之优化启动命令
vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,在standalone模式下,每次修改配置文件必须重新启动vsftpd服务才能生效,而且每次用到的命令启动服务比较麻烦,我们做一个脚本来启动和停止服务。
建立一个新文件/etc/rc.d/init.d/vsftpd,把以下内容复制到文件中:
注释:没什么好说的重点是看清楚目录了自己修改下
保存文件,再给该文件加上执行权限:
# chmod 755 /etc/rc.d/init.d/vsftpd
这样我们就可以通过下面的方法来管理服务了:
# service vsftpd {start|stop|restart|condrestart|status}
六、进一步优化配置vsftpd之用户时间限制
前面我们提过,vsftpd 服务是支持在linux下的两种服务模式:独立(standalone)模式和守护进程(xinetd)模式。在standalone模式下,vsftpd进程启动后会一直占用系统资源,当有连接请求时,它会迅速反应;在xinetd模式下,ftp服务是由守护进程统一管理,当出现ftp连接请求时,守护进程才将ftp服务启动,这种方式最大的优点是没有连接的时候ftp服务不会占用系统资源,处于睡眠状态,但因为要花费时间去唤醒该服务,所以响应时间较长。
现在我们尝试用守护进程来控制vsftpd。
我们需要在守护进程配置目录/etc/xinetd.d/里建立vsftpd 的守护进程文件。我们在安装时已经将该文件考到/etc/xinetd.d/目录下了。我们稍稍修改其内容:
#vi /etc/xinetd.d/vsftpd
接下来把配置文件(vsftpd.conf)中的listen=yes或listen_ipv6=yes去掉,停掉vsftpd服务,重启xinetd服务:
# sesrvice vsftpd stop
# service xinetd restart
重新启动守护进程后,vsftpd 服务就会让守护进程来管理了。在守护进程管理过程中,我们再修改主配置文件的话,就不需要重新启动服务了。
现在我们开始实现ip 和时间限制了
1. ip限制
在配置文件/etc/xinetd.d/vsftpd的{}中加入
only_from=主机表
如:only_from=192.168.1.0
表示只允许192.168.1.0网段内的主机访问
no_access=主机表
例如:no_access=192.168.1.0
表示禁止192.168.1.0网段内的主机访问
主机表 的内容可以查如下表:
1. 时间限制
同样在在配置文件/etc/xinetd.d/vsftpd的{}中加入
access_time = hour:min-hour:min
例如:access_time = 18:00-23:59
表示只有在下午6 点到午夜0 点之前才能访问此FTP 服务器;
又如:access_time = 8:30-11:30 13:00-18:00
表示只有在上午8 点半到11 点半和下午1 点到下午6 点才能访问此FTP 服务器。
注意修改完后一定要重启下 xinetd服务
[root@service root]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
其实 通过xinetd 还有很多要学的 东西 这里只是简单地满足vsftpd服务器的需求,现在我们开始测试下ip 和时间限制。
时间限制:我当前时间是北京时间16点正, ftp 允许时间00:00-6:00测试如图
[root@service root]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
图七 在不允许的时间段内练级限制了
把时间改下access_times =12:00-18:00再测试
图八 在允许的时间段内连接成功
注释:不同版本的时间限制命令估计是不同的,网上流传的是access_time 结果我测试了n久都失败,后来网上查了下结果发现有人用access_times于是我转成这个就成功了。还有一个地方要注意的就是access_times =12:00-18:00这个命令中access_times与=号之间记得留空格否则就会出现ftp: connect: Connection refused 的错误提示!!所以出现了这个提示大概就是/etc/xinetd.d/vsftpd文档内书写格式有误了。
为了测试方便我只允许192.168.0.1这台主机访问ftp服务器
图九 用192.168.0.1访问ftp服务器(允许)
图十 用服务器自己(即192.168.0.2)访问就被拒绝
到此 一个简单的vsftpd 案例就讲完了如果有错的地方希望大家帮忙指正,问题讨论请邮
Weihua0722@163.com
为学校架设一个ftp服务器,普通学生通过账号ftp和密码123登陆,他只能下载不能上传;再为要提供资源的学生开设个账号vip密码123,上传资源通过管理员审核合格了再提供给学生下载,服务器要实现 ip限制(如限制外网访问)时间限制(如晚上12点到早上6点不能下载)
第一步:建立两个虚拟账号并生成数据库
[root@service root]# vi users.txt ftp 123 vip 123 |
[root@service root]# db_load -T -t hash -f users.txt /etc/vsftpd_login.db [root@service root]# chmod 600 /etc/vsftpd_login.db |
注:上述两步在前面的课程都已经讲过如果不明白什么意思的话回去看我的这篇文章
《一步一步学会linux之三 :vsftpd的 应用举例》
第二步:配置pam模块
[root@service root]# vi /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_unix.so shadow nullok #auth required /lib/security/pam_shells.so #account required /lib/security/pam_unix.so #session required /lib/security/pam_unix.so auth required pam_userdb.so db=/etc/vsftpd_login account required pam_userdb.so db=/etc/vsftpd_login |
注释:重点是加入 这两行
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
用于处理虚拟账号的数据库,前面的为了防干扰只好把他们先注释掉
第三步:建立系统用户与虚拟数据库用户关联
//建立帐户并把指定的文件夹给该帐户 [root@service root]# useradd -d /var/ftp/share ftpuser //建立文件夹 [root@service root]# mkdir /var/ftp/share //把文件夹的所有者和域的身份都赋给了ftpuser这个帐户 [root@service root]# chown ftpuser.ftpuser /var/ftp/share //设置文件夹所有者读写属性 [root@service root]# chmod o=r /var/ftp/share [root@service root]# useradd -d /var/ftp/vip ftpvip [root@service root]# mkdir /var/ftp/vip [root@service root]# chown ftpvip.ftpvip /var/ftp/vip [root@service root]# chmod o=rw /var/ftp/vip |
虚拟帐户vip有上传和下载功能(读写)。当然这只是设置了文件夹读写属性我们还要进一步编辑vsftpd.conf的配置文件。
第四步:配置相关的vsftpd.conf文件
接下来就要配置vsftpd.conf文件了,把vsftpd.conf所有注释了然后自己写算了如下:
#打开独立运行模式 listen=YES #不允许匿名用户登陆 anonymous_enable=NO #不允许匿名用户创建目录 这个最好不要打开否则会带来不可预测的后果 anon_mkdir_write_enable=NO //不开放用户的改名、删除文件等权限; anon_other_write_enable=NO #允许本地用户登陆 < 193a1 span style="font-family:'宋体';">如果这个不打开的话 uid 500以下的人都被访问拒绝 local_enable=YES #不允许匿名上传 anon_upload_enable=NO #限制用户在当前目录 chroot_local_user=YES #设置执行虚拟用户配置文件的目录 user_config_dir=/ftpconfig |
Vsftpd的文件是配置好了但是我们还要继续增加需要用户的配置
[root@service root]# mkdir /ftpconfig [root@service root]# vi /ftpconfig/ftp |
然后在/ftpconfig/ftp的文件里加入如下内容
#开启虚拟帐户功能 guest_enable=yes #虚拟帐户ftp为对应系统帐户ftpuser guest_username=ftpuser #配置虚拟帐户全局可读,允许其下载数据 anon_world_readable_only=yes #限定传输速度30k每秒 anon_max_rate=30000 |
同理
[root@service root]# vi /ftpconfig/vip
guest_enable=yes guest_username=ftpvip #关闭匿名用户只读功能 anon_world_readable_only=no #允许客户端写命令 write_enable=yes #开启匿名用户上传功能 anon_upload_enable=yes anon_max_rate=60000 |
注释:这里大家经常看到anon_匿名用户的前缀,其实虚拟用户在某种程度上更接近于匿名用户,包括上传,下载,修改文件名,删除文件等配置所使用的指令与匿名用户的指令是相同的。
好了这个vsftpd服务器的骨架已经出来了 下面我们来进一步的优化。
由于我的ftp是自己编译的所以启动时默认是standalone 模式因此用
/usr/local/sbin/vsftpd & 启动 注意用这个启动先要吧xinetd模式关了否则可能会出现错误
现在我们启动了vsftpd 然后看看测试截图。
图一 用ftp虚拟帐户登陆
我现在换个 flashfxp ftp工具 用ftp虚拟帐户登陆 并试图上传视频文件liaoluyu2.wmv视频文件
图二 上传文件失败
下面是下载test.mp3文件 大家观察下载速度是25.6kb/s左右
图三 下载文件(成功下载)
现在我们来观察虚拟帐户vip的测试:
上传的速度 大概是64.0kb/s
图四 可以上传 速度为64.0kb/s
下载速度大概是64.0kb/s
图五 下载速度64.0kb/s
第五步:进一步配置vsftpd 之优化启动命令
vsftpd有两种工作模式,standalone模式和xinetd守护进程模式,在standalone模式下,每次修改配置文件必须重新启动vsftpd服务才能生效,而且每次用到的命令启动服务比较麻烦,我们做一个脚本来启动和停止服务。
建立一个新文件/etc/rc.d/init.d/vsftpd,把以下内容复制到文件中:
#!/bin/bash # # vsftpd This shell script takes care of starting and stopping # standalone vsftpd. # # chkconfig: - 60 50 # description: Vsftpd is a ftp daemon, which is the program / # that answers incoming ftp service requests. # processname: vsftpd # config: /etc/vsftpd/vsftpd.conf # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/local/sbin/vsftpd ] || exit 0 RETVAL=0 prog="vsftpd" start() { # Start daemons. if [ -d /etc ] ; then for i in `ls /etc/vsftpd.conf`; do site=`basename $i .conf` echo -n $"Starting $prog for $site: " /usr/local/sbin/vsftpd $i & RETVAL=$? [ $RETVAL -eq 0 ] && { touch /var/lock/subsys/$prog success $"$prog $site" } echo done else RETVAL=1 fi return $RETVAL } stop() { # Stop daemons. echo -n $"Shutting down $prog: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload) stop start RETVAL=$? ;; condrestart) if [ -f /var/lock/subsys/$prog ]; then stop start RETVAL=$? fi ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL |
注释:没什么好说的重点是看清楚目录了自己修改下
保存文件,再给该文件加上执行权限:
# chmod 755 /etc/rc.d/init.d/vsftpd
这样我们就可以通过下面的方法来管理服务了:
# service vsftpd {start|stop|restart|condrestart|status}
六、进一步优化配置vsftpd之用户时间限制
前面我们提过,vsftpd 服务是支持在linux下的两种服务模式:独立(standalone)模式和守护进程(xinetd)模式。在standalone模式下,vsftpd进程启动后会一直占用系统资源,当有连接请求时,它会迅速反应;在xinetd模式下,ftp服务是由守护进程统一管理,当出现ftp连接请求时,守护进程才将ftp服务启动,这种方式最大的优点是没有连接的时候ftp服务不会占用系统资源,处于睡眠状态,但因为要花费时间去唤醒该服务,所以响应时间较长。
现在我们尝试用守护进程来控制vsftpd。
我们需要在守护进程配置目录/etc/xinetd.d/里建立vsftpd 的守护进程文件。我们在安装时已经将该文件考到/etc/xinetd.d/目录下了。我们稍稍修改其内容:
#vi /etc/xinetd.d/vsftpd
service ftp { disable = no socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd server_args = /etc/ vsftpd.conf nice = 10 } |
# sesrvice vsftpd stop
# service xinetd restart
重新启动守护进程后,vsftpd 服务就会让守护进程来管理了。在守护进程管理过程中,我们再修改主配置文件的话,就不需要重新启动服务了。
现在我们开始实现ip 和时间限制了
1. ip限制
在配置文件/etc/xinetd.d/vsftpd的{}中加入
only_from=主机表
如:only_from=192.168.1.0
表示只允许192.168.1.0网段内的主机访问
no_access=主机表
例如:no_access=192.168.1.0
表示禁止192.168.1.0网段内的主机访问
主机表 的内容可以查如下表:
1. 时间限制
同样在在配置文件/etc/xinetd.d/vsftpd的{}中加入
access_time = hour:min-hour:min
例如:access_time = 18:00-23:59
表示只有在下午6 点到午夜0 点之前才能访问此FTP 服务器;
又如:access_time = 8:30-11:30 13:00-18:00
表示只有在上午8 点半到11 点半和下午1 点到下午6 点才能访问此FTP 服务器。
注意修改完后一定要重启下 xinetd服务
[root@service root]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
其实 通过xinetd 还有很多要学的 东西 这里只是简单地满足vsftpd服务器的需求,现在我们开始测试下ip 和时间限制。
时间限制:我当前时间是北京时间16点正, ftp 允许时间00:00-6:00测试如图
service ftp { socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd server_args =/etc/vsftpd.conf log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = no access_times = 00:00-6:00 } |
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
图七 在不允许的时间段内练级限制了
把时间改下access_times =12:00-18:00再测试
图八 在允许的时间段内连接成功
注释:不同版本的时间限制命令估计是不同的,网上流传的是access_time 结果我测试了n久都失败,后来网上查了下结果发现有人用access_times于是我转成这个就成功了。还有一个地方要注意的就是access_times =12:00-18:00这个命令中access_times与=号之间记得留空格否则就会出现ftp: connect: Connection refused 的错误提示!!所以出现了这个提示大概就是/etc/xinetd.d/vsftpd文档内书写格式有误了。
为了测试方便我只允许192.168.0.1这台主机访问ftp服务器
service ftp { socket_type = stream wait = no user = root server = /usr/local/sbin/vsftpd server_args = /etc/vsftpd.conf log_on_success += DURATION USERID log_on_failure += USERID nice = 10 disable = no access_times =20:00-23:59 only_from =192.168.0.1 } |
图九 用192.168.0.1访问ftp服务器(允许)
图十 用服务器自己(即192.168.0.2)访问就被拒绝
到此 一个简单的vsftpd 案例就讲完了如果有错的地方希望大家帮忙指正,问题讨论请邮
Weihua0722@163.com
相关文章推荐
- 一步一步学会linux之一: 安装vsftpd服务器
- 一步一步学会linux之二: 简单配置vsftpd服务器(附vsftpd.conf的参数说明)
- 2-6-RHEL6.5搭建vsftpd服务器案例分析与总结(Red Hat Enterprise Linux Server6.3)@树袋飘零
- 【Linux】教你一步一步在CentOS Linux release 7.1上安装vsftpd FTP服务器
- 【Linux】教你一步一步在CentOS Linux release 7.1上卸载vsftpd FTP服务器
- 企业案例:Linux下 禁用USB存储功能,允许ADB 调试
- Linux之redhat-----Samba 企业应用案例
- linux系统文件属性及企业精典故障案例
- vsftpd在企业网中的实施案例(CentOS) 推荐
- 一步一步学会linux之www服务器篇
- Vsftpd 服务器企业案例(一)
- vsftpd在企业网中的实施案例
- 如果自己搭建linux 企业生产环境可以有什么可以自己参考的案例吗
- Linux下群集服务之lvs-DR模型在企业网络中的应用案例
- Linux -- Samba之企业文件服务器搭建案例
- Red hat Enterprise企业版 Linux (RHEL) 6.3介绍及下载
- 案例分享(二)——江苏某金融行业IT企业案例分享
- 如何一步一步删除(linux & UNIX)环境下 oracle 11g 集群节点