Linux下FTP服务器的配置及其应用

一.FTP简介:

FTP: file transfer protocol (文件传输协议)是一个用于在两台或者多台不同的操作系统中传输文件的协议,从FPT的诞生至今已经40年了。今年是它的40年纪念。所以它理所当然的成为了这个世界上最古老的协议,没有之一。

二.FTP工作原理

FTP的工作基于TCP协议

我们最常见的也是最常用的端口:

21号端口:是实现命令控制的。(当我们验证之后,我们执行一些比如put get ls等命令都是通过这个端口进行传输的)

20号端口:实现数据传输的。

服务器有两种数据传输模式:

1.主动模式。

2.被动模式。

主动模式和被动模式是针对服务器来说的,而到底在运作的过程中到底采用主动模式还是被动模式,则是由客户端来决定的。主动模式要求客户端和服务器端同时打开并且监听一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个监听相应端口的进程,这样就可以绕过客户端安装了防火墙的问题。

主动模式的实现方式:

a.客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该tcp连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。

b.客户端开始监听端口(x+1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。

c.服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据(目的地)端口为(x+1)。

d.客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。

三.FTP的用户/服务器类型:

1)FTP服务器可以支持的用户类型主要有3大类。

1.匿名用户: anonymous 或者 ftp

一般使用的就是匿名用户。

2.本地用户:

账号名称、密码等信息保存在passwd、shadow文件中

3.虚拟用户:

使用独立的账号/密码数据文件。

可以是 db 数据库,也可以直接放在mysql 中,也可以放在一个文件上

2)常见的FTP服务器:

IIS Serv-U(在windows上比较常用的)

wu-ftpd(现存最古老的) 、

Proftpd (功能非常强大的ftp软件,根据你的需要,它可以制定)

pureftpd (功能强大的ftp软件)

vsftpd(Redhat上最常用的,轻量级的  只有140K,但是却非常安全)

3)常见的FTP客户端:

ftp命令

lftp命令

gftp (linxu上图形化的ftp工具)

CuteFTP

FlashFTP(号称是最快的FTP)、

Ftps 会有通过ssl加密的机制。

四.vsftpd 服务器

我们以vsftpd服务器的构架,来讲解到底如何架构一个FTP服务器

首先要知道,我们vsftpd服务器就是用ftp这个用户的身份来运行的。而vsftpd又受到selinux的控制,所以要先把selinux关了。

1. 安装vsftpd:

yum install vsftpd -y

安装好之后,我们可以看到vsfptd这个命令被安装在了/usr/sbin目录中叫做vsftpd

配置文件保存在/etc/vsftpd目录下,而它的所有文件保存在/var/ftp中

2.如何配置vsftpd

首先进入/etc/vsftpd目录下

①  ftpusers 文件:

这个是一个定义文件里面定义着那些被禁止登陆的用户

②  user_list 文件:

这个文件中的列表提供一份FTP用户列表,定义了是否禁止用户登录,而这个文件是否能生效,取决于主配置文件中的设置

③  /etc/vsftpd.conf

主配置文件,详细的定义了所有的规则:

我们来看看常用的规则:

local_enable=YES 是否允许以本地用户身份访问

本地用户默认通过ftp登陆默认在家目录下

write_enable 是否允许本地用户登录后可写?(只创建文件)

anon_mkdir_write_enable=YES 允许本地用户登录后可创建文件夹

anon_upload_enable=YES   是否允许匿名用户上传

chown_upload=YES  对匿名用户上传的文件进行一次自动的更改属主

chown_username=root   定义更改的属主

dirmessage_enable=YES 给当前目录增加一个欢迎信息

message_file=.message  你的欢迎文件的位置。

xferlog_enable=YES 是否开启日志信息

xferlog_file=/var/log/vsftpd.log配置日志文件在哪

idle_session_timeout=600 会话的响应时间

data_connection_timeout=120 数据响应时间

ftpd_banner=Welcome to bash FTPservice.  FTP的欢迎信息。

chroot_list_enable=YES 这项的作用是是否把用户锁在它的家目录中。

这个不开启的话是非常危险的。不对用户进行限制则会让一个用户各种乱跑,并且修改文件。当这个开启的时候,用户登录到这个目录中后,使用pwd命令则根本不显示你到底位于何方。

chroot_list_file=/etc/vsftpd/chroot_list通过这个表,你可以定义到底限制哪些用户切换目录。

listen=YES  让FTP以独立进程运行在我们的机子上的。

如果改成 NO, 则让他以一个非独立的进程。则成为init的一个子进程。

pam_service_name=vsftpd 基于pub认证

userlist_enable=YES  是否开启列表的控制  user_list 文件:

userlist_deny=YES    他默认是拒绝的,只要你想进去,则会立刻拒绝。如果我们改成NO,则仅能这个列表中的用户访问。

lftp-u student 172.16.100.1 则可以进行验证

3.启动服务:

service vsftpd start

4.匿名用户

它的默认匿名用户的登录路径是在 /var/ftp,如果你使用“id ftp”的话,就会发现ftp这个用户也在系统里,发现它的家目录是/var/ftp,这个就是登陆到我们的FTP服务器上的匿名用户所用的账号。

五.构建基于虚拟用户的vsftpd服务器认证:

1.建立虚拟FTP用户的账号数据库文件

建立虚拟用户的账号名、密码列表

vim/etc/vsftpd/vusers.list

mike

123

john

456

这里,一行是用户,一行是密码

由于ftp是不能识别这个文件的。所以我们需要用db4-utils这个软件将其进行一次哈希的转换。

db_load-T -t hash -f vusers.list vusers.db

将其转换成数据库类型的文件。

为了安全起见,将它的权限更改为600

chmod 600 /etc/vsftpd/vusers.*

2.创建FTP根目录及虚拟用户映射的系统用户

虚拟出来的用户可以自定义虚拟家目录。

mkdir /var/ftproot/pub

useradd-d /var/ftproot -s /sbin/nologin virtual

chmod 755 /var/ftproot/

3.建立支持虚拟用户的PAM认证文件

vim /etc/pam.d/vsftpd.vu

#%PAM-1.0

auth       required           pam_userdb.so       db=/etc/vsftpd/vusers

account    required           pam_userdb.so      db=/etc/vsftpd/vusers

↑             ↑                   ↑

认证         认证的操作            所需要的认证的库

授权        授权的操作              授权所需要的库

4.在vsftpd.conf中添加支持配置

vim  /etc/vsftpd/vsftpd.conf

anonymous_enable=NO

local_enable=YES

write_enable=YES

anon_umask=022

guest_enable=YES

guest_username=virtual

pam_service_name=vsftpd.vu

5.为个别虚拟用户建立独立的配置文件

在vsftpd.conf中添加用户配置目录支持

user_config_dir=/etc/vsftpd/vusers_dir

为用户mike john建立独立的配置目录及文件

mkdir /etc/vsftpd/vusers_dir/

cd /etc/vsftpd/vusers_dir

touch mike

vim john

anon_upload_enable=YES

anon_mkdir_write_enable=YES

max_clients    ##限制客户端最大请求

max_per_ip     ##限制每个ipd

6.重新加载 vsftpd 配置

service vsftpd restart

六.用Openssl实现对传输数据加密。

对于FTP而言,由于它协议的古老,这就直接导致它的安全性是非常的差的,所以我们就需要使用SSL的方式对其传输的数据进行加密,在这里,我们不列出详细的解释,只将操作直接写入。希望大家能自行研究加密的方式。

1.先给我们的服务器制作CA:

cd /etc/pki/CA

mkdir crets newcerts crl

touch index.txt serial

echo 01 > serial

openssl genrsa 1024 > private/cakey.pem

chmod 600 private/cakey.pem

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655

2.进入 cd/etc/vsftpd/制作属于自己的证书并让CA颁发授权

mkdir ssl

cd ssl/

openssl genrsa 1024 > vsftpd.key

openssl req -new -key vsftpd.key -out vsftpd.csr

openssl ca -in vsftpd.csr -out vsftpd.crt

3.证书办好了,但是还要支持SSL

在vsftpd的配置文件中

vim /etc/vsftpd/vsftpd.conf

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=YES

ssl_sslv3=YES

allow_anon_ssl=NO

force_local_data_ssl=YES  #强制文件传输加密,

force_local-logins_ssl=YES  #强制登陆加密

rsa_cert_file=/etc/vsftpd/ssl/vsftpd_cert.pem   #证书

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd_key.pem    #私钥

验证一下。这里要用一点高级一点的客户端访问:

我们选择基于TLS认证的FlashFXP软件进行验证。

这时候访问FTP的时候已经出现了需要进行公钥交换的认证了。则我们的通过OpenSSL加密的方式就这样实现了。

七.总结

FTP是一种大家最常用的协议,了解它,并且努力的掌握它可以帮助我们做好很多工作,而它的安全又是自己的一大隐患,所以我们在使用它的同时一定不能忘了将它的安全措施做到最好。

如果作为读者的你发现了什么写作的漏洞或者错误的话,欢迎给予批评,我会快速纠正的。也希望大家共同进步。

时间: 2024-10-07 08:45:11

Linux下FTP服务器的配置及其应用的相关文章

linux下FTP服务器的安装与配置

FTP服务器安装与配置 1. 切换到root用户:  su root 2. 查看系统中是否安装了vsftpd,可以通过执行命令 :  rpm -qa | grep vsftpd 3. 如果没有安装 vsftpd,则安装 :  yum -y install vsftpd 4. 创建ftp用户,比如ftp_test.命令:   useradd -s /sbin/nologin -d /home/ftp_test ftp_test 5. 设置ftp_test用户密码.命令:  passwd ftp_t

Linux下FTP虚拟账户配置

参考模版/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS) 1.创建虚拟账户 [[email protected] ~]#yum install db4-utils [[email protected] ~]#vim /etc/vsftpd/vlogin tomcat #账户名称 123456 #密码 jerry #账户名称 654321 #密码 [[email protected] ~]#db_load -T -t hash -f /etc/v

Linux系统下FTP服务器的配置

FTP服务器的配置   一FTP服务器的安装 1)ftp服务器安装后生成的相关文件 /etc/logrotate.d/vsftpd  #实现日志滚动的程序 /etc/pam.d/vsftpd  #用户认证配置文件 /etc/rc.d/init.d/vsftpd  #服务脚本 /etc/vsftpd #配置文件所在目录 /etc/vsftpd/ftpusers  #控制哪些用户是否可登陆ftp /etc/vsftpd/user_list  #控制哪些用户是否可登陆ftp /etc/vsftpd/v

Linux下FTP的安装配置

一.安装VSFTP 在开源操作系统中常用的FTPD套件主要还有vsftp.ProFTPD.PureFTPd和wuftpd等. vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux.BSD.Solaris. HP-UNIX等系统上面,是一个完全免费的.开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征.比如:非常高的安全性需求

linux 下ftp的安装配置

0.安装ftp的前置条件是关掉SElinux # vi /etc/selinux/config 修改 SELINUX=" disabled " ,重启服务器.若相同,则跳过此步骤. 1. 可先查看是否安装过vsftp  # rpm -qa | grep vsftpd 则代表已经安装.可直接跳过步骤2 2 .安装 vsftp # yum install vsftp* Is this ok [y/N]: y 代表安装完成. 3. 对vsftp 进行配置 # /etc/vsftpd/vsft

Linux下FTP安装与配置

第一部分 .note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsoft YaHei', 'WenQuanYi Micro Hei', SimSun, Song, sans-serif;} 几个月前买了台阿里云服务器,没有怎么玩,一直在闲置.linux也一直在断断续续的玩着,技能这种东西,时间长不用了就会生疏很多.于是趁自己公司业务不太繁忙的时候抽空折腾下这台服务器吧.在新公

linux下ftp服务器搭建

FTP服务器(File Transfer Protocol Server)是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务. FTP是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. 目前开源操作系统中常用的FTP服务器程序主要有  :vsftpd.    proFTPD. pureFTPD等,我这次是用的是vsftpd来搭建 1.vsftpd安装 #yum install

Linux 下DNS服务器主从配置

注意: 关闭防火墙 关闭selinux 在客户端配置vim /etc/resolv.conf的DNS 安装 yum install -y bind bind-chroot bind-utils master 配置 vim /etc/named.conf options项 listen-on port 53 { any; }; allow-query{ any; }; 注示掉 recursion yes; dnssec-enable yes; dnssec-validation yes; dnss

linux下 ftp服务器如何设置上传文件的权限

1.先用vi打开 vsftpd.conf vsftpd的配置文件 在Ubuntu下是 vi /etc/vsftpd.conf 在centos 下是 vi /etc/vsftpd/vsftpd.conf 这个在不同的系统下可能不同原理一样 2.找到unmsk默认是022 ,修改成你要的权限就可以了. 3.下面说下unmsk的具体含义 umask一般是用在你初始创建一个目录或者文件的时候赋予他们的权限. 针对文件的x的权限代表执行,这个风险太高,所以一般权限初始赋值必须去掉x的 第一个0代表suid