vsftpd服务器安装

来源:爱站网时间:2022-11-01编辑:网友分享
vsftpd服务器是linux比较常用的一种,你知道要如何安装配置吗?相信很多朋友都不清楚,如果你有需要,可以看看爱站技术频道小编带来的文章,这里详细解说了关于vsftpd服务器的内容。

vsftpd是linux发行版中的一款ftp服务器程序,它的全称是“very secure ftp daemon”,号称是最安全的ftp服务器。它工作在21,20号端口,主要提供文件传输服务,可以跨越网络提供服务,非常好用。

 
本文主要内容:
一,ftp的工作原理:
二,vsftpd的配置文件:
三,vsftpd的安装
四,vsftpd的启动与关闭:
五,vsftpd的配置文件/etc/vsftpd/vsftpd.conf解析:
六,用tcp_wraper来控制vsftpd:
七,创建ftp虚拟用户
八,启用ssl,建立安全的传输
 
一,ftp的工作原理:
    ftp的两种工作模式:
    1,主动模式
    工作原理:客户端从一个任意的非特权端口(大于1024)N连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)
    2,被动模式
    工作原理:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(大于1024)N和N+1。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(大于1024)P ,并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据
   
    主动模式与被动模式的比较:      
    主动FTP对FTP服务器的管理和安全很有利,但对客户端的管理不利,因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。目前,ftp服务器一般工作在被动模式。
   
二,vsftpd的配置文件:
     1,/etc/vsftpd/vsftpd.conf
     这个是vsftpd的主配置文件
     2,/etc/xinetd.d/vsftpd
     如果vsftpd工作在超级守护进程的管理下,这是其配置文件来管理vsftpd
     3,/etc/pam.d/vsftpd
     如果vsftpd启用PAM机制,这是PAM认证文件(此文件中file=/etc/vsftpd/ftpusers
 
字段,指明阻止访问的用户来自/etc/vsftpd/ftpusers文件中的用户)
     4,/etc/vsftpd/ftpusers
     禁止使用vsftpd的用户列表文件
     5,/etc/vsftpd/user_list
     禁止或允许使用vsftpd的用户列表文件
     6,/etc/hosts.allow和/etc/hosts.deny
     如果vsftpd启用tcp_wraper控制机制,这两个文件可以控制vsftpd
 
 
     小知识:
    1,ftp是受selinux管理的,要配置好selinux或是关闭;
    2,改动vsftpd主配置文件时确保“=”两边无空格,有些功能我们可以添加到配置文件中;并且指令要顶格写;
 
三,vsftpd的安装(在系统光盘中有对应的rpm包):
#rpm -ivh rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
 
四,vsftpd的启动与关闭:
#service vsftpd start
#service vsftpd stop
 
五,vsftpd的配置文件/etc/vsftpd/vsftpd.conf解析:
anonymous_enable=YES
是否允许匿名用户访问,匿名用户访问的时候是被映射为系统的ftp用户,它的家目录为/var/ftp,故我们用匿名访问的时候,访问的是/var/ftp的目录(这个目录的权限请不要随意改动,如果改动可能造成无法访问)。
 
local_enable=YES
是否允许本地用户登录ftp,登录之后是用户的家目录,但uid号小于500的用户都不允许登录
 
write_enable=YES
本地用户是否有上传权限
 
local_umask=022
本地用户上传的文件的反向掩码。而f用户访问ftp对文件的实际权限是:所访问目录和这个文件权限的交集
 
anon_upload_enable=YES
是否允许匿名用户上传文件
 
anon_mkdir_write_enable=NO
匿名用户是否有创建目录的权限
 
anon_other_write_enable=NO
匿名用户是否有删除和重名名文件的权限
 
anon_world_readable_only=NO
匿名用户只能下载全局可读的文件,即文件的属组,属主,其他用户都有读权限
 
dirmessage_enable=YES
当用户切换目录时,定义的欢迎信息。可以在家目录中定义一个.message的文件
 
xferlog_enable=YES
是否打开传输日志
 
connect_from_port_20=YES
是否启用20号端口进行数据传输,这样会工作在主动模式
 
chown_uploads=YES
chown_username=whoever
当用户上传了文件,是否更改该上传的文件属主,并且属主更改为哪个用户
 
xferlog_file=/var/log/xferlog
定义传输日志的位置,默认在/var/log/messages中
 
xferlog_std_format=YES
定义日志的格式
 
idle_session_timeout=600
会话的超时时间
 
data_connection_timeout=120
数据连接的超时时间
 
nopriv_user=ftpsecure
指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。一般不启用
 
async_abor_enable=YES
是否允许运行特殊的ftp命令"async ABOR",一般不启用
 
ascii_upload_enable=YES
ascii_download_enable=YES
以ascii形式传输,一般不启用
 
ftpd_banner=Welcome to blah FTP service.
登录ftp的欢迎信息
 
deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
是否要禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名,可防Dos攻击
 
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
当这个文件中的用户登录时,把其用户的目录锁定,不能随意切换,对保证系统的安全重要。
 
chroot_local_user=YES
把所有登录的用户都锁进自己的家目录,不能随意切换
 
ls_recurse_enable=YES
当用户查看ftp服务器上目录文件时,支持递归显示
 
listen=YES
以独立守护进程工作
 
listen_ipv6=YES
是否启用ipv6地址上监听
 
pam_service_name=vsftpd
定义以pam实现ftp用户认证,根据/etc/pam.d/vsftpd定义进行认证
 
userlist_enable=YES
是否启用用户列表,并且只允许/etc/vsftpd/user_list文件中的用户登录
 
userlist_deny=YES
启用用户列表,禁止此列表/etc/vsftpd/usr_list中定义的用户登录
 
tcp_wrappers=YES
是否启用tcp_wrapper对vsftpd的控制
 
六,用tcp_wraper来控制vsftpd:
首先,要确保vsftpd的主配置文件"tcp_wrappers=YES"这一行启用
 
允许192.168.0网段访问:
#vim /etc/hosts.allow
添加:
vsftpd:192.168.0.
禁止172.16.30网段访问:
#vim /etc/hosts.deny
添加:
vsftpd:172.16.30.

linux七,创建ftp虚拟用户:
    什么是虚拟用户呢?
虚拟用户是指那些非操作系统的用户。可以建多个,虚拟用户访问ftp服务器的时候,会映射到操作系统的一个普通进行访问,访问的是这个被映射用户的家目录。
 
我们可以把ftp的账号,密码信息存入mysql数据库中:
1,编译安装pam_mysql-0.7RC1:
准备好pam_mysql-0.7RC1.tar.gz( http://pam-mysql.sourceforge.net/ ),配置好yum源,先安装开发组和所依赖的软件包:
#yum groupinstall "Development Tools" "Development Libraries"
 
如果我们想让ftp支持ssl功能的话要安装如下两个包:
#yum install openssl
#yum install openssl-devel
 
# tar zxvf  pam_mysql-0.7RC1.tar.gz
# cd  pam_mysql-0.7RC1
# ./configure --with-mysql=/usr/local/mysql --with-openssl
--with-mysql 指定mysql的安装位置,根据mysql的安装位置指定(mysql的安装见我的文章"LNMP源码安装配置+discuz")
--with-openssl 使ftp启用ssl(可选)
 
# make
# make install
 
 
2,配置:
 
1.准备数据库及相关表
登录进mysql:
#mysql -uroot -p
 
我们建立名为vsftpd的数据库来存放相关虚拟用户的帐号
mysql> create database vsftpd;
 
只给lee用户操作vsftpd数据库select的权限,用户lee的密码为123456:
mysql> grant select on vsftpd.* to lee@localhost identified by '123456';
mysql> grant select on vsftpd.* to lee@127.0.0.1 identified by '123456';
mysql>flush privileges;
 
mysql> use vsftpd;
mysql> create table users (
    -> id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
    -> name char(20) NOT NULL UNIQUE KEY,
    -> password char(48) NOT NULL
    -> );
查看表的结构:
mysql>DESC users;
 
添加虚拟用户jia,其密码采取加密存放的方式:
mysql> insert into users(name,password) values('jia',password('123456'));
 
查看结果
mysql> select * from users;
 
2,建立PAM认证所需的文件:
为了我们ftp服务器的安全性,一般不允许我们的系统用户直接登录ftp服务器:
#vi /etc/pam.d/vsftpd.mysql
添加如下两行内容,此时不允许系统用户登录:
auth required pam_mysql.so user=lee passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
 
account required pam_mysql.so user=lee passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
 
 
如果想要系统用户用自己的账号密码也能访问我们的ftp服务器,则修改/etc/pam.d/vsftpd.mysql文件,改为为如下六行内容:
auth sufficient pam_mysql.so user=lee passwd=123456 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
 
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
 
auth required pam_shells.so
 
auth include system-auth
 
account sufficient pam_mysql.so user=lee passwd=123456 host=localhost
db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2
 
account include system-auth
注意:此时系统用户访问的时候也是被映射为我们的虚拟用户vsftp来访问的,也就是说系统用户访问的时候也只能访问/var/ftproot这个目录
 
3,修改vsftpd的配置文件,使其适应mysql认证:
 
建立虚拟用户映射的系统用户vsftp及对应的目录,/var/ftproot就是虚拟用户登录ftp服务器的所在目录:
#useradd -s /sbin/nologin -d /var/ftproot vsftp
#chmod go+rx /var/ftproot
 
请确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项:
anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
 
为/etc/vsftpd/vsftpd.conf添加以下选项:
chroot_local_user=YES
guest_enable=YES
guest_username=vsftp
 
修改/etc/vsfptd/vsftpd.conf中的pam_service_name=vsftpd为如下内容:
pam_service_name=vsftpd.mysql
 
启动服务:
#service vsftpd restart
 
4,设置虚拟用户的权限:
先建立一个目录,用来存放与虚拟用户名对应的文件:
#mkdir /etc/vsftpd/virusers
#cd /etc/vsftpd/virusers
 
在这个目录中建立的文件的名字必须和虚拟用户的名字相同:
#vim lee
使虚拟用户lee有上传,下载,新建文件的权限,则添加如下内容:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
 
#vim /etc/vsftpd/vsftpd.conf
添加如下行(目录文件的名字和建立的目录路径相对应):
user_config_dir=/etc/vsftpd/virusers
 
重启服务:
#service vsftpd restart
 
5,启用iptables跟踪功能:
 
我们的服务器通常要有防火墙的,而我们的ftp服务一般工作在被动模式,如果我们设置ftp服务器(ip:1.1.1.1)的防火墙规则,而工作在被动模式的ftp服务可能会被挡掉,可以启用iptables的跟踪功能解决:
 
安装模块:
#modprobe ip_conntrack_ftp
#modprobe ip_nat_ftp
 
是这些模块能自动装载:
#vim /etc/sysconfig/iptables-config
修改:
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
 
例:设置ftp服务器的规则可以如下,使用RELATED选项:
#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -A INPUT -d 1.1.1.1 -p tcp --dport 20:21 -j ACCEPT
#iptables -A OUTPUT -s 1.1.1.1 -p tcp --sport 20:21 -j ACCEPT
#iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT
 
好了,我们可以用虚拟用户可以正常访问ftp服务器了。linux

八,启用ssl,建立安全的传输(可选)
由于ftp传输是明文的,非常不安全,我们可以启用ssl功能,建立安全加密的传输:
#vim /etc/vsftpd/vsftp.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.crt
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key
 
重启服务:
#service vsftpd restart
 
然后,建立我们自己的CA,然后创建证书vsftpd.crt和密码vsftpd.key,放在/etc/vsftpd/ssl目录中。
 
这时候只有我们使用专用的ftp客户端工具才可以使用加密的传输,因为要指定使用哪种ssl类型进行传输。

关于vsftpd服务器安装教程,爱站技术频道小编给大家收集整理出来了,希望这篇文章能在日后对你有所帮助,不懂的小伙伴就根据小编整理的步骤来操作吧!

上一篇:手动编码搭建ssh框架的步骤

下一篇:Linux服务器命令大全总结

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载