ftp服务器

FTP是Internet中应用非常广泛的服务之一,是TCP/IP的一种具体应用,它工作在OSI的第七层,是一种面向连接的协议。
FTP在对外提供服务时需要维护两个连接:一个是控制连接,监听TCP21号端口,用来传输控制命令;另一个是数据
连接,在主动传输方式下监听TCP20号端口,用来传输数据。
FTP有两种工作模式:主动模式(PORT)和被动模式(PASV),而几乎所有的FTP客户端软件都支持这两种模式。
Linux下的FTP软件在很多种,最常见的有wu-ftpd、proftpd和vsftpd等,本文主要讲解vsftpd的管理与配置。


***********
一、VSFTPD的安装与启动
#rpm -qa |grepvsftpd 
     //查询系统是否已经安装了vsftpd软件包
vsftpd-2.0.1-6
系统默认情况下vsftpd的FTP服务是关闭的,此时需要手工打开:
#service vsftpd {start|stop|restart}

*************
二、配置FTP服务器
vsftpd服务器的用户分为3类:匿名用户、本地用户、虚拟用户。分别应用在不同的场合之中。
下面通过分别配置①匿名账号FTP服务器②本地账号FTP服务器③虚拟账号FTP服务器。来了解它们的应用场合。本文主要来介绍匿名服务器的的有关配置

1.配置匿名账号FTP服务器
示例如下:
在主机(IP为192.168.10.10)上配置只允许匿名用户登录的FTP服务器,使匿名用户具有如下权限:
①允许上传、下载文件(创建匿名用户使用的目录为/var/ftp/anonftp)
②将上传文件的所有者改为tom
③允许创建子目录,改变文件名称或删除文件
④匿名用户最大传输速率设置为20kbit/s
⑤禁止192.168.1.0/24网段上除192.168.1.1的主机访问该FTP

配置过程如下
1.编辑vsftpd的主配置文件/etc/vsftpd/vsftpd.conf文件,对文件中相关的指令进行修改、添加,内容如下:

anonymous_enable=YES

#允许匿名用户(ftp或anonymous)登录

#local_enable=YES

#这里我们不使用本地用户登录,所以把它注释掉

write_enable=YES

#允许本地用户的写权限,因为本地用户的登录已经被注释了,所以这是YES或NO都不会起作用

anon_umask=077

#匿名用户新增文件的umask值。默认值为077

anon_upload_enable=YES

#允许匿名用户上传文件

anon_mkdir_write_enable=YES

#允许匿名用户创建目录

anon_other_write_enable=YES(需自己添加)

#允许匿名用户改名、删除文件

anon_world_readable_only=NO(需自己添加)

#若此值为YES表示仅当所有用户对该文件都拥有读权限时,才允许匿名用户下载该文件;此值为NO,则允许匿名用户下载不具有全部读权限的文件

max_per_ip=2

#设置每个用户同一时段并发下载线程数为2,同时只能下载两个文件

max_clients=100

#设置同时连接FTP服务器的并发用户数为100

dirmessage_enable=YES

#是否启用目录提示信息功能,YES启用NO不启用,默认为YES

xferlog_enable=YES

#是否启用一个日志文件,用于详细记录上传和下载,该日志文件由xferlog_file选项指定

xferlog_file=/var/log/vsftpd.log

#设定记录传输日志的文件名。/var/log/vsftpd.log为默认值

xferlog_std_format=YES

#日志文件是否使用xferlog标准格式,使用xferlog标准格式可以重新使用已经存在的传输统计生成器。但默认的日志格式更有可读性。

#log_ftp_protocol=NO

当此选项激活后,所有的FTP请示和响应都被记录到日志中,这个选项在助于调试,但值得注意的是当提供此选项时,xferlog_std_format不能被激活。默认为NO

connect_from_port_20=YES

#控制连接以PORT模式进行数据传输时使用20端口(ftp-data)

chown_uploads=YES

#允许匿名用户修改上传文件所有权

chown_username=tom

#将匿名用户上传文件的所有者改为tom

#ascii_upload_enable=YES

#ascii_download_enable=YES

#以上两个表明是否允许使用ASCII格式来上传和下载文件,默认值是YES但该指令是注释掉的,所以默认是没有启用的

listen=YES

tcp_wrapppers=YES

#采用tcp_wrappers来实现对主机的访问控制

2.编辑/etc/hosts.allow文件

在该文件添加如下 内容(注意顺序)

vsftpd:192.168.1.1

vsftpd:192.168.1.:DENY

 

#每行3个字段,用冒号分开,分别为,服务名:主机列表:ALLOW/DENY,不写的话默认为ALLOW,另外需要说明的/etc/hosts.deny文件实际上是不用的,也就是说,这两个文件只要用一个就可以对主机的访问控制,一般都用/etc/hosts.allow文件

3.创建用户tom和上传目录,并修改上传目录属性

#useradd tom

#passwd tom

#mkdir –p /var/ftp/anonftp

#chown ftp.ftp /var/ftp/anonftp //将上传目录/var/ftp/anonftp的所有才和组改为ftp

4.很重要,又简单,又容易忘的一步:重启服务

#service vsftpd restart

5.测试vsftpd服务

无论是Linux环境还是Windows环境都有3种访问FTP服务器的方法:一是通过浏览器,二是通过专门的FTP客户端软件,三是通过命令行的方式。关于它的测试很简单,只需对照要求验证即可在此就不再说明了。



一。配置本地账号FTP服务器

   默认情况下vsftpd服务器允许本地用户登录,并直接进入该用户的主目录,但此时用户可以访问FTP服务器的整个目录结构,这对系统的安全来说是一个很大的威胁,同时本地用户数量有时很大,其性质也不相同,所以为了安全起见,应进一步完善本地账号FTP服务器的功能。下面来介绍常用的两种访问控制:

1.用户访问控制(顾名思义是对用户访问的限制)

要求如下:(在配置好本地账号的FTP服务器基础上实现)、

①在主机IP为192.168.1.10上配置vsftpd服务器

②只允许本地用户tom、jack和root登录

③更改登录端口号为5555,把每个本地用户的最大传输速率设为1Mbit/s

配置过程如下:

1.编辑/etc/vsftpd/ftpusers文件

首先要知道这个文件是干什么的,这个文件被称为ftp用户的黑名单文件,即在该文件中的本地用户都是不能登录ftp服务器的,所以应确认tom、jack和root这3个用户名不出现在该文件中。

2.编辑/etc/vsftpd/vsftpd.conf

local_max_rate=1000000

#设置本地用户的最大传输速率为1Mbit/s

listen_port=5555

#更改FTP登录端口号为5555

userlist_enable=YES

#启用用户列表文件

userlist_deny=NO(需要自己添加)

#当为NO时,则只允许该文件中的用户登录FTP服务器;为YES,则不允许该文件中的用户登录 FTP服务器

userlist_file=/etc/vsftpd/user_list(需要自己添加)

#指定用户列表文件名称和路径

3.编辑/etc/vsftpd/user_list文件

由于在/etc/vsftpd/vsftpd.conf中userlist_deny=NO所以只允许在user_list中的用户登录FTP服务器。

4.重启服务

#service vsftpd restart

注1:如果在ftpusers和user_list中同时出现某个用户名,当userlist_deny=NO时,是不会允许这个用户登录的,即只要在ftpusers出现就是禁止的。当userlist_deny=YES时,只要在user_list文件中的用户都是被拒绝的,而其它的用户如果不在该文件中,并且也不在ftpusrs中,都是被允许的。

抛开上段的注解,如果想弄清晰,其实很简单,当你想禁止某些用户时,可以只用ftpusers,即在此文件中的用户都是被拒绝的。当你想只允许某些用户时,首先保证这些用户在ftpusers中没有出现,然后设置userlist_deny=NO,并在user_list中添加上你允许的用户名即可。(这时你就会知道当userlist_deny=YES时,user_list文件的作用就和ftpusers文件的作用是一样的了。)

注2:以上的配置是针对用户访问进行了控制,但它仍然是不安全的,为什么呢,因为我们只对用户的访问进行了控制,而只要用户能登录上了FTP,这个用户便可以从自己的主目录切换到其它任何目录中,所以我们的配置虽然对用户的访问进行了控制,但在这点上也产生了一定的安全隐患。那么我们该如何解决这个问题呢,下面继续来介绍“目录访问控制”,而“目录访问控制”正是为了解决这个问题。


二。目录访问控制

vsftpd提供了chroot指令,可以将用户访问的范围限制在各自的主目录中。下面通过实例说明。

要求如下 :(在配置好本地账号的FTP服务器基础上实现)

除本地用户tom外,所有的本地用户在登录后都被限制在各自的主目录中,不能切换到其他目录。

1.编辑/etc/vsftpd/vsftpd.conf文件,添加一条指令:

chroot_local_user=YES

#先对所有的用户执行chroot,即把所有的本地用户限制在各自的主目录中

chroot_list_enable=YES

#因为要求tom用户可以访问任何目录,所以还要激活用户列表文件vsftpd.chroot_list

chroot_list_file=/etc/vsftpd.chroot_list

#指定用户列表文件的路径

2.创建/etc/vsftpd.chroot_list文件,在该文件中添加上用户名tom。

3.重启服务

#service vsftpdrestart

4.进行测试

这时会发现除tom用户外,其他的所有用户登录的主目录都被限制在了自己的主目录中,这时我们也就消除了上面所讲的安全隐患。



三。配置虚拟账号FTP服务器

vsftpd服务器提供了对虚拟用户的支持,它采用PAM认证机制实现了虚拟用户的功能。

很多人对虚拟账号FTP的定义有些模糊,其实我们可以把虚拟账号FTP看作是一种特殊的匿名FTP,这个特殊的匿名FTP,特殊在哪里呢,它拥有登录FTP的用户名和密码,但是它所使用的用户名又不是本地用户(即它的用户名只能用来登录FTP,而不能用来登录系统),并且所有的虚拟用户名,在登录FTP时,都是在映射为一个真实的账号之后才登录到FTP上的。(需要说明的是这个真实的号是可以登录系统的,即它和本地用户在这一点上性质是一样的。)

要想真正了解虚拟账号FTP,就要自己多练,下面通过实例来介绍一下虚拟账号FTP的配置。

要求:创建5个虚拟用户用于登录FTP服务器,其用户名为user1、user2、user3、user4、user5。为简单起见口令分别为:1、2、3、4、5。

配置过程如下:

创建虚拟用户数据库文件。

首先创建一个存放虚拟用户的用户名及口令的文本文件/etc/1.txt(这个文本文件的命名是任意的),其内容如下:

user1

1

user2

2

user3

3

#奇数行为虚拟用户名,偶数行为相应的口令

 

然后,执行如下命令生成虚心用户的数据库文件,并改变数据库文件的权限:

#db_load –T –t hash –f /etc/1.txt/etc/vsftpd.db

#chmod 600/etc/vsftpd/vsftpd.db

创建PAM认证文件。创建虚拟用户使用的PAM认证文件/etc/pam.d/vsftpd.virtual,内容如下:

auth required/lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd

account required/lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd

#共两条规则:第一条的功能是设置利用pam_userdb.so模块来进行身份认证。第二条是检查账号是否被允许登录系统,账号是否过期,是否有时间段的限制。这两条规则都是采用的数据库/etc/vsftpd/vsftpd.db。(只是每一条规则的最后的vsftpd省略了.db后缀)

创建虚拟用户所对应的真实账号及其所登录的目录,并设置权限:

#useradd –d /var/virftp vftp//这里的目录与账号的命名都是任意的,但最好有有意义

#chmod 744 /var/virftp

编辑/etc/vsftpd/vsftpd.conf文件

anon_upload_enable=YES

#允许虚拟用户上传文件

guest_enable=YES

#激活虚拟用户的登录功能

guest_username=vftp

#指定虚拟用户所对应的真实用户,这个真实的用户名就是在第项中添加的用户名。

pam_service_name=vsftpd.virtual

#设置PAM认证时所采用的文件,它的值是和第中创建PAM认证文件的名字是相同的。

保存配置,重启服务ok:

#service vsftpd restart

 

(关于虚拟用户:虚拟用户是在匿名用户的基础上增加了用户名和口令的登录,多了一层安全措施,所有的虚拟用户登录到FTP服务器后,都是被限制在各自的主目录之中的,即虚拟用户都是被执行了chroot的。在配置虚拟用户时,所有创建的文件的名字都是任意的,但一定要保证对应关系,并且最好要有一定的意义)

*******

配置虚拟用户时各个文件名的对应关系(以上述的配置为例) 

1.用户生成虚拟用户数据库文件的文本文件是任意的,如上述中的1.txt

 

2.虚拟用户数据库文件/etc/vsftpd/vsftpd.db与在PAM认证文件内容中指定的数据库对应即:/etc/vsftpd/vsftpd.db

auth required/lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd

account required/lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd

3.真实账号要与在/etc/vsftpd/vsftpd.conf中指定的真实用户名相同,即:

#useradd –d /var/virftpvftp

guest_username=vftp

4.PAM认证文件/etc/pam.d/vsftpd.virtual与配置文件中的pam_service_name=vsftpd.virtual

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值