FTP服务器配置和FTP基于MariaDB实现访问控制

FTP服务器简介

FTP服务器是提供文件存储和访问服务的服务器,通过ftp(文件传输协议)实现数据传输,而且FTP是仅基于TCP的服务,不支持UDP。FTP应用是一种C/S架构的应用,客户端和服务器端都需要安装相关的软件才能实现相互之间的数据传输。常见的软件套件有FileZilla,Server-U,VsFTP,Pure-FTPd ,ProFTPD等,其中VsFTP,Pure-FTPd ,ProFTPD是单纯的服务器程序,常见客户端程序有ftp,lftp。本文实验环境中采用的服务器程序是vsftp。


工作模式

FTP的服务基于两个端口:命令端口和数据端口。命令端口用于建立命令连接,命令连接主要用来传输文件管理类命令,一但用户连接上FTP服务器,命令连接就一直在线,直到用户退出。数据端口用于建立数据连接,用于传输数据,数据连接是按需创建的,数据传输完毕,连接就会拆除。FTP的数据传输格式是根据文件类型来选择的,它既支持文本传输也支持二进制传输。一般而言,数据基于什么编码,就基于什么格式来传输,所以不应该人为的限定FTP的传输格式。

FTP的工作模式也非常独特,有两种工作模式,主动模式和被动模式。这两者主要区别在于当需要传输数据时,主动模式是由服务器端向客户端发起连接请求,而后建立数据连接。而被动模式,连接请求是由客户端发起。一般而言都是采用被动模式。

1)主动模式

常客户端从一个非特权端口N(随机端口,N>1024),连接到FTP服务器的命令端口(21号端口),然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器(告诉服务器端用于数据传输的端口)。然后服务器从数据端口(20)连接到客户端指定的数据端口(N+1)。

在主动模式下,由于是服务器端去主动连接客户端的随机端口(N+1),所以往往这个连接请求会被客户端的防火墙过滤掉。若需要支持这种连接,每个各户端都需要对iptables进行规则的改写,对于客户端而言很不方便。然后就有了被动模式。

2)被动模式

在被动模式下,当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口用于命令连接(连接服务器的21号端口),当需要数据传输时,客户端提交PASV命令,服务器端收到命令后,开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端(告诉客户端用于数据连接的端口),然后客户端从本地的N+1端口连接到服务器端的P端口开始数据传输。

服务器端的防火墙需要允许客户端发起的数据连接请求。被动模式的好处在于客户端不需要再去修改iptables的规则即可直接连接FTP服务器。

FTP服务器安装配置

直接使用yum源安装即可(192.168.1.104为FTP服务器ip)

[[email protected] ~]# yum install vsftpd -y
.......

来看一下vsftpd的相关文件:

[[email protected] ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
........

/etc/logrotate.d/vsftpd          #实现日志滚动的服务程序

/etc/pam.d/vsftpd                  #用户认证的配置文件,调用pam模块完成认证

/etc/rc.d/init.d/vsftpd            #服务脚本

/etc/vsftpd/ftpusers              #用户的访问控制

/etc/vsftpd/user_list

/etc/vsftpd/vsftpd.conf         #主配置文件

/usr/sbin/vsftpd                    #主程序

一般而言能够访问FTP服务器的用户有3类:系统用户,匿名用户,虚拟用户

1)系统用户:系统上存在的用户,其默认访问的资源位置为该用户的家目录。

2)匿名用户:不需要账号密码即可登录的用户,这一类用户会被映射成一个系统用户(默认ftp用户),访问的资源位置为ftp用户用户的家目录(默认为/var/ftp)。

3)虚拟用户:这一类用户需要在FTP服务器中创建,也会映射成一个系统用户。

关于匿名用户的配置

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES                          #匿名用户是否启用
......
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
anon_upload_enable=YES                        #是否允许匿名用户上传
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES                     #是否允许匿名用户创建目录

分别开启这3项之后重启服务,进行测试。

[[email protected] ~]# lftp 192.168.1.104
lftp 192.168.1.104:~> put install.log
put: Access failed: 553 Could not create file. (install.log)
lftp 192.168.1.104:/> bye

由于运行vsftpd程序的是ftp用户,而/var/ftp/这个目录ftp用户没有写权限,所以即使在配置文件中设置了允许上传,也无法写入文件。

出于安全的考虑不能直接对/var/ftp目录直接进行权限的修改,在该目录下创建专门用于上传的目录,并授权。

[[email protected] ftp]# mkdir anonData
[[email protected] ftp]# setfacl -R -m u:ftp:rwx anonData/

在另外一台虚拟机上进行测试:

[[email protected] ~]# lftp 192.168.1.104 
lftp 192.168.1.104:~> cd anonData/
lftp 192.168.1.104:/anonData> put install.log
27312 bytes transferred                 
lftp 192.168.1.104:/anonData> pwd
ftp://192.168.1.104/anonData
lftp 192.168.1.104:/anonData> mkdir test
mkdir ok, `test‘ created
lftp 192.168.1.104:/anonData> ls
-rw-------    1 14       50          27312 Jul 09 14:41 install.log
drwx------    2 14       50           4096 Jul 09 14:44 test
lftp 192.168.1.104:/anonData> rm -fr install.log 
lftp 192.168.1.104:/anonData> ls
-rw-------    1 14       50          27312 Jul 09 14:41 install.log
drwx------    2 14       50           4096 Jul 09 14:44 test

上传成功,创建文件也没问题!!!但此时依旧无法删除自己上传的文件。这是需要在配置文件中添加anon_ohter_write_enable=YES,允许匿名用户的其他写权限(包括删除)。重新加载服务。

[[email protected] ~]# lftp 192.168.1.104 
lftp 192.168.1.104:~> cd anonData/
lftp 192.168.1.104:/anonData> ls
-rw-------    1 14       50          27312 Jul 09 14:41 install.log
drwx------    2 14       50           4096 Jul 09 14:44 test
lftp 192.168.1.104:/anonData> rm -fr install.log 
rm ok, `install.log‘ removed
lftp 192.168.1.104:/anonData> ls
drwx------    2 14       50           4096 Jul 09 14:44 test

完成删除!!!

关于系统用户的配置

# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd‘s)
local_umask=022

local_enable=YES      #是否允许系统用户登录

write_enable=YES     #是否允许系统用户写操作(包括删除)

local_umask=022      #本地用户上传文件之后默认的权限

配置完成后,用系统用户登录,进行测试。上传、创建、删除均没有问题。也可以看到上传的文件的权限为644。

由于是系统用户登录,系统用户可以切换到其他的目录(只要有权限),又由于ftp是明文传输,这样非常的不安全。可以通过chroot_local_user=YES,将系统用户禁锢在家目录中。而对于匿名用户不存在这个问题,匿名用户只能浏览映射的系统用户的家目录(/var/ftp/)

lftp [email protected]:~> cd /etc
cd ok, cwd=/etc                  
lftp [email protected]:/etc> ls
drwxr-xr-x    5 0        0            4096 May 29 08:19 ConsoleKit
-rw-r--r--    1 0        0            4439 Oct 17  2013 DIR_COLORS
-rw-r--r--    1 0        0            5139 Oct 17  2013 DIR_COLORS.256color
-rw-r--r--    1 0        0            4113 Oct 17  2013 DIR_COLORS.lightbgcolor
.........

修改配置文件,重新加载服务。

[[email protected] ~]# lftp -u baby 192.168.1.104
Password: 
lftp [email protected]:~> pwd        
ftp://[email protected]
lftp [email protected]:~> cd /etc
cd: Access failed: 550 Failed to change directory. (/etc)
lftp [email protected]:/>

目录已无法切换。启用下面的两个属性chroot_list_enable=YES,chroot_list_file=/etc/vsftpd/chroot_list,就可以动态的在/etc/vsftpd/chroot_list中指定将哪些系统用户登录之后禁锢在其家目录中。

其他配置信息

简单介绍下其他的一些比较常用的配置属性,不做演示。

改变上传文件的属主:

chown_uploads=YES                   #是否改变上传文件的属主

chown_username=whoever        #上传文件的属主

local_root=dirname                     #系统用户的资源访问路径,默认是系统用户的家目录。

anon_root=dirname                    #匿名用户的资源访问路径,默认是/var/ftp

userlist_enable=YES          #是否启用控制用户登录的列表文件,列表文件由userlist_file指定

userlist_file=dirname         #指定列表文件,默认文件为/etc/vsftpd/user_list

userlist_deny=YES|NO       #这个参数控制/etc/vsftpd/user_list这个文件中的用户能否登录

#yes表示黑名单,no表示白名单(没有出现在文件上的用户都不能登录)

vsftpd使用pam完成用户认证,其用到的pam配置文件:

pam_service_name=vsftpd      #指明/etc/pam.d下用哪一个配置文件来完成基于pam对vsftp进行用户认证

日志相关的配置:

xferlog_enable=YES                      #是否打开传输日志

xferlog_std_format=YES                #传输日志是否使用标准格式

xferlog_file=/var/log/xferlog         #传输日志记录位置

idle_session_timeout=600                #会话空闲超时时长时常

data_connection_timeout=120        #数据连接超时时长

ascii_upload_enable=YES                 #是否支持文本格式的上传下载,这两项不建议启用(这两项启用会强制使

ascii_download_enable=YES            #用文本格式上传下载)

连接限制:

max_clients=num                 #最大并发连接数;0表示不限制,默认2000

max_per_ip=num                 #每个IP可同时发起的并发请求数;0表示不限制,默认50

传输速率限制:

anon_max_rate=num           #匿名用户的最大传输速率(所有的匿名用户加起来), 单位是“字节/秒”,

#默认为0,默认不限制;

local_max_rate=num            #系统用户.......

更详细的配置信息请参考man 5 vsftpd.conf!!!

FTP基于MariaDB实现访问控制

基于MariaDB实现访问控制,就是将虚拟用户的用户名、密码存放在mariaDB数据库中。

时间: 2024-10-05 05:58:33

FTP服务器配置和FTP基于MariaDB实现访问控制的相关文章

Linux上FTP部署:基于mariadb管理虚拟用户

FTP原理 FTP 采用 Internet 标准文件传输协议 FTP 的用户界面, 向用户提供了一组用来管理计算机之间文件传输的应用程序.图1 FTP 的基本模型 FTP 是基于客户---服务器(C/S)模型而设计的,在客户端与 FTP 服务器之间建立两个连接. 开发任何基于 FTP 的客户端软件都必须遵循 FTP 的工作原理,FTP 的独特的优势同时也是与其它客户服务器程序最大的不同点就在于它在两台通信的主机之间使用了两条 TCP 连接,一条是数据连接,用于数据传送:另一条是控制连接,用于传送

十、FTP服务器配置和管理

10.1.FTP服务简介 FTP是Internet上使用非常广泛的一种通信协议,用于在不同的主机之间进行文件传输.Linux系统下常用的FTP服务器软件包括有wu-ftpd:vsftpd(Very Secure ftp Daemon):proftpd:pureftpd等.客户端软件有 CLI:ftp:lftp:(wget ,lftpget)下载工具,非交互式 GUI: gftpd :FlashFXP:Cuteftp:Filezilla FTP采用C/S的工作模式,通过TCP协议建立客户端和服务器

Linux --FTP服务器配置

一.FTP服务器WU-FTPDFTP是Internet上最基本.最常用.最受欢迎的信息服务系统之一,它允许用户登录到Internet的远程计算机上,把其中的文件传送到自己的计算机中,或把自己计算机上的文件传送到远程计算机里.在大多数的Linux发行版本中都是使用的wuachive-ftpd,一般简称为WU-FTPD,它作为一个FTP服务器是一个非常有名的FTP软件.WU-FTPD广泛使用于UNIX/Linux服务器,作为默认的FTP服务器,为广大的互联网客户提供FTP服务,且这个软件又是免费的.

Linux FTP 服务器配置简单说明(转)

一.  FTP 说明 linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp). 我们这里也是简单的说明下vsftp的配置. vsftp提供3种远程的登录方式: (1)匿名登录方式 就是不需要用户名,密码.就能登录到服务器电脑里面 (2)本地用户方式 需要帐户名和密码才能登录.而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户. (3)虚拟用户方式 同样需要用

Windows 集成 FTP 服务器配置–WS08R2已验证

环境:Windows Azure 中 Windows 2008 R2 With SP1虚拟机 步骤一:在Azure中创建虚拟机 创建步骤不再详述 步骤二:在Azure虚拟机中绑定静态公网IP和私网IP P.S. 防止重启Cloud Service导致IP发生变化影响其他应用程序调用或用户访问 绑定私网IP    1: Test-AzureStaticVNetIP -VNetName EastAsiaSubnetwork -IPAddress 192.168.0.128    2:    3: $

windows server 2012 配置多用户ftp服务器配置注意点

1.ftp根目录配置"FTP授权规则"为: 2.配置"FTP用户隔离"为: 3.配置"FTP目录浏览"为: 4.ftp虚拟目录"FTP授权规则"配置为:

tcp_wrapper:简单的基于主机的访问控制工具

一.常用的主机访问控制工具 独立(stand alone)守护进程(httpd,vsftpd).瞬时(transient)守护进程(rsync,tftp,telnet), 这两类守护进程都支持基于iptables进行控制.哪一端口运行客户端访问,哪一端口不允许客户端访问,基于主机做防火墙时,都能进行控制. 做主机防火墙时,有些瞬时守护进程,甚至是某些独立独立守护进程,还能够接受另一种方式,tcp_wrapper,来控制. 在众多的基于主机的安全访问控制中,tcp-wrapper是简单而易于配置的

CCNA实验三十七 CBAC(基于上下文的访问控制)

环境: Windows XP .PacketTracert 5.3 目的: 了解CBAC的基本原理而后基本配置,在CCNA阶段接触一些基本的防火墙安全配置的知识 说明: CBAC即基于上下文的访问控制协议,通过检查防火墙的流量来发现管理TCP和UDP的会话状态信息.这些状态信息被用来在防火墙访问列表创建临时通道.通过在流量向上配置ip inspect列表,允许为受允许会话放回流量和附加数据连接,打开这些通路.受允许会话是指来源于受保护的内部网络会话.它不能用来过滤每一种TCP/IP协议,但它对于

httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制 知识储备 虚拟主机有三种实现方案: 基于ip: 为每个虚拟主机准备至少一个独有ip地址: 基于port: 为每个虚拟主机使用至少一个独有的port: 基于FQDN: 为每个虚拟主机使用至少一个FQDN: 注意:一般虚拟机不要与中心主机混用:因此,要使用虚拟主机,得先禁用'main'主机: 禁用方法:注释中心主机的DocumentRoot指令即可: 基于用户的访问控制: http协议认证方式2种 basic:明文 digest:消息摘要认证 本次