在RHEL 5.2下vsftp配置的操作流程

2018-10-09    来源:爱站科技

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

  今天小编跟大家分享一篇在RHEL 5.2下vsftp配置的操作流程,感兴趣的朋友跟小编一起来了解一下吧!

  FTP文件传送协议(File Transfer Protocol,简称FTP),是一个用于从一台主机到另送文件的协议。该协议的历史可追溯到1971年(当时因特网尚处于实验之中),不过至今仍然极为流行。

  FTP在RFC 959中具体说明。HTTP和FTP都是文件传送协议,它们有许多共同的特征,比如都运行在TCP之上等。不过这两个应用层协议之间存在重要的差别。最重要的差别是FTP使用两个并行的TCP连接,一个是控制连接,一个是数据连接。控制连接用于在客户主机和服务器主机之间发送控制信息,例如用户名和口令、改变远程目录的命令、取来或放回文件的命令。数据连接用于真正发送文件。在整个会话期间,FTP服务器必须维护关于用户的状态。具体地说,www.britepic.org服务器必须把控制连接与特定的用户关联起来,必须随用户在远程目录树中的游动跟踪其当前目录。为每个活跃的用户会话保持这些状态信息极大地限制了FTP能够同时维护的会话数。无状态的HTTP却不必维护任何用户状态信息。FTP服务可以工作在主动模式(active)和被动模式(passive)二种模式下:

  主动模式(一般FTP服务器默认模式):FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接。当完成Three-Way Handshake后,连接就成功建立,但这仅是控制连接的建立。当两端需要传送数据的时候,客户端通过命令通道用一个port command告诉服务器,客户端可以用另一个TCP端口做数据通道。然后服务器用20端口和刚才客户端所通知的TCP端口建立数据连接。注意:连接方向是从服务器到客户端的,TCP分组中会有一个SYN flag。 然后客户端会返回一个带ACK flag的确认分组,并完成另一次的Three-Way Handshake 过程。这时候,数据连接才能成功建立。开始数据传送。

  被动模式:FTP客户端开启一个随机选择的TCP端口连接FTP服务器的21端口请求建立连接,完成控制连接的建立。当两端需要传送数据的时候,客户端 通过命令通道发送一个PASV command给服务器,要求进入被动传输模式。然后 服务器像上述的主动模式第 2 步骤那样,挑一个TCP端口,并用控制连接告诉 客户端。 然后客户端用另一个TCP端口连接刚才服务器告知的TCP端口来建立数据通道。此时分组中带有SYN flag。服务器确认后回送一个ACK分组。并完成所有握手过程、成功建立数据通道,开始数据传送。

  目前可以实现FTP服务的软件非常多,比如Windows平台下的IIS、Serv-U,Linux平台下的wuFTP、vsftp等。vsftp(Very Secure FTP)是一种在Unix/Linux中非常安全且快速稳定的FTP服务器,目前已经被许多大型站点所采用,vsftpd也是RHEL默认的ftp服务,本文主要讲述vsftp相关配置方法。

  一、安装vsftp。

  

    rpm -ivh vsftpd-2.0.5-12.el5.rpm   

?

  安装完成后,vsftpd配置文件为/etc/vsftpd/vsftpd.conf,通过以下命令可启动vsftpd并将其设置为自动启动。

  

    service vsftpd restart
chkconfig vsftpd on  

?

  二、第一个FTP站点。

  vsftp在安装完成并启动后,即可使用。默认情况下可以使用匿名用户,下图中使用ftp命令进行。

  1:使用ftp命令连接到ftp服务器。

  2:因为目前使用匿名用户连接到ftp服务器,所有输入匿名用户(一般ftp服务器匿名为anonymous,这里的ftp用户是在安装vsftp时自动创建的,该用户也是vsftp的匿名用户)。

  在连接到vsftp后,其默认目录为该用户的家目录,而ftp用户的家目录位于/var/ftp,所有。下图是用系统其它用户连接ftp服务器(如果在RHEL中开启SELinux,需要运行以下命令set sebool -P ftp_home_dir=1)。

  三、配置参数。

  

参数

?

?

说明

?

?

listen_address=ip address

?

?

指定侦听IP

?

?

listen_port=port_value

?

?

指定侦听端口,默认21

?

?

anonymous_enable=YES

?

?

是否允许使用匿名帐户

?

?

local_enable=YES

?

?

是否允许本地用户登录

?

?

nopriv_user=ftp

?

?

指定vsftpd服务的运行帐户,不指定时使用ftp

?

?

write_enable=YES

?

?

是否允许写入

?

?

anon_upload_enable=YES

?

?

匿名用户是否可上传文件

?

?

anon_mkdir_write_enable=YES

?

?

匿名用户是否建立目录

?

?

dirmessage_enable=YES

?

?

进入每个目录是显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息

?

?

xferlog_enable=YES

?

?

上传/下载文件时记录日志

?

?

connect_from_port_20=YES

?

?

是否使用20端口传输数据(是否使用主动模式)

?

?

chown_uploads=YESchown_username=whoever

?

?

修改匿名用户上传文件的拥有者

?

?

xferlog_file=/var/log/vsftpd.log

?

?

日志文件

?

?

xferlog_std_format=YES

?

?

使用标准文件日志

?

?

idle_session_timeout=600

?

?

会话超时,客户端连接到ftp但未操作

?

?

data_connection_timeout=120

?

?

数据传输超时

?

?

async_abor_enable=YES

?

?

是否允许客户端使用sync等命令

?

?

ascii_upload_enable=YESascii_download_enable=YES

?

?

是否允许上传/下载二进制文件

?

?

chroot_local_user=YES

?

?

限制所有的本地用户在自家目录

?

?

chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list

?

?

指定不能离开家目录的用户,将用户名一个一行写在/etc/vsftpd/chroot_list文件里,使用此方法时必须chroot_local_user=NO

?

?

ls_recurse_enable=YES

?

?

是否允许使用ls -R等命令

?

?

listen=YES

?

?

开启ipv4监听

?

?

listen_ipv6=YES

?

?

开启ipv6监听

?

?

pam_service_name=vsftpd

?

?

使用pam模块控制,vsftpd文件在/etc/pam.d目录下

?

?

userlist_enable=YES

?

?

此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd查到该用户名在列表中,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚

?

?

userlist_deny=YES

?

?

决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO,只允许在文件中的用户登录FTP服务器

?

?

tcp_wrappers=YES

?

?

是否允许tcp_wrappers管理

?

?

local_root=/home/ftp

?

?

所有用户的根目录,,对匿名用户无效

?

?

anon_max_rate

?

?

匿名用户的最大传输速度,单位是Byts/s

?

?

local_max_rate

?

?

本地用户的最大传输速度,单位是Byts/s

?

?

download_enable= YES

?

?

是否允许下载

?

?

?

  在上面所有参数中,只要涉及到上传的参数在启用后还需要对应本地目录有写入权限。

  四、身份认证。

  在上面的参数中,可以通过将anonymous_enable设置为NO禁止匿名用户访问。在禁止匿名用户后,可通过以下方式的授权用户:

  本地用户:以/etc/passwd中的用户名为认证方式

  虚拟用户:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案

  本地用户在这里就不多介绍了,主要介绍实现虚拟用户的二种方法:

  1、使用本地数据文件:

  生成虚拟用户文件,建立/etc/vsftpd/vuser.txt文件,内容如下:

  

tonyzhang #虚拟用户1
111 #虚拟用户1密码 
tomqin #虚拟用户2
111     #虚拟用户2密码

?

  安装生成数据库rpm包:db4-utils。

  

rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm

?

  生成虚拟用户数据库。

  

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.txt

?

  创建本地映射用户,修改本地映射用户家目录权限。

  

useradd -d /var/ftp/vuserdir -s /sbin/nologin vuser
chmod o+rw /var/ftp/vuserdir

?

  修改pam认证文件/etc/pam.d/vsftpd,将原有内容注释。

  

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

?

  修改/etc/vsfptd/vsftp.conf,增加以下内容。

  

guest_enable=YES
guest_username=vuser

?

  2、使用MySQL数据文件:

  创建本地映射用户。

  

useradd -s /sbin/nologin vuser

?

  修改/etc/vsfptd/vsftp.conf,增加以下内容。

  

guest_enable=YES
guest_username=vuser

?

  安装MySQL及相关软件包。

  


?

yum -y install mysql.i*

yum -y install perl-DBD-MySQL.i*

yum -y install mysql-server.i*

yum -y install mysql-devel.i*

?

  在MySQL中建立数据库及用户表。

  

[root@polo ]# mysql -u root mysql -p
mysql>create database ftpvuser; #建立用户数据库
mysql>use ftpvuser; #打开数据库
mysql>create table users(name char(16) binary,passwd char(16) binary); #建立存取用户信息表
#插入二个用户及口令
mysql>insert into users (name,passwd) values ('tonyzhang',password('111'));
mysql>insert into users (name,passwd) values ('tomqin',password('111'));

?

  授权vuser可以读ftpvuser数据库的users表。

  


?

[root@polo ]# mysql -u root mysql -p

mysql>grant select on ftpvuser.users to vuser@localhost identified by '123';

mysql>quit

?

  在上述授权完成后,可通过下图方法验证授权是否成功。

  编译MySQL的PAM认证模块。

  首先需要下载(http://sourceforge.net/projects/pam-mysql)MySQL的PAM认证模块源码,使用tar命令解压后,进行编译。在编译前需要安装以下软件包。

  


?

yum -y install gcc.i*

yum -y install gcc-c++.i*

yum -y install pam-devel.i*

?

  安装完成后就可以进行编译。

  

./configure
make
make install

?

  编辑完成后可查看/lib/security目录下是否已有对应pam模块(如下图)。

  修改pam认证文件/etc/pam.d/vsftpd,将原有内容注释。

  

auth required pam_mysql.so user=vuser passwd=123 host=localhost db=ftpvuser table=users usercolumn=name passwdcolumn=passwd crypt=2
account required pam_mysql.so user= vuser passwd=123 host=localhost db= ftpvuser table=users usercolumn=name passwdcolumn=passwd crypt=2

?

  上述二种虚拟用户配置完成后,在通过以下步骤可针对每个虚拟用户指定不同的配置文件。

  1、修改/etc/vsfptd/vsftp.conf

  

user_config_dir=/etc/vsftpd/vuserconf

?

  2、在/etc/vsfptd/vsftp.vuserconf目录下,以每个虚拟用户的用户名为名称建立配置文件即可。

  五、虚拟主机。

  在默认情况下,vsftp不像IIS那样可以在同一台主机上建立多个ftp站点,不过并不是没有法子让vsftp在同一台主机上建立多个ftp站点,方法如下:

  1、添加一个虚拟IP地址(eth0的IP地址192.168.0.10)

  

ifconfig eth0:0 192.168.0.11/24

?

  2、创建虚拟FTP服务用户

  

useradd -d /var/ftp2 -s /sbin/nologin ftp2 
chmod -R 755 /var/ftp2
chown -R root:root /var/ftp2
mkdir -m 755 /var/ftp2/pub
chown ftp2:root /var/ftp2/pub

?

  3、准备虚拟FTP服务器的配置文文件

  

cp /etc/vsfptd/vsftpd.conf /etc/vsfptd/vsftpd1.conf

?

  4、修改/etc/vsftpd/vsfptd.conf

  

listen_address=192.168.0.10

?

  5、修改/etc/vsftpd/vsfptd1.conf

  

listen_address=192.168.0.11
ftp_username=ftp2
local_root=/var/ftp2

?

  以上就是关于在RHEL 5.2下vsftp配置的操作流程,想必都了解了吧,更多相关内容请继续关注爱站技术频道。

标签: ftp服务器 linux Mysql 安全 访问ftp服务器 服务器 连接ftp服务器 权限 数据库 虚拟主机

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:关于Samba共享配置的操作教程

下一篇:TeamSpeak服务器配置的详细教程