vsFTP安装配置

    OS:CentOS7.2
    ftp:vsFTP 3.0.2
    首先安装vsftp
rpm -ivh vsftpd-3.0.2-10.el7.x86_64.rpm
    安装完毕后创建ftp用户:
    useradd -d /var/www -g ftp -s /sbin/nologin ftpuser 
    说明:
    -s /sbin/nologin 是让其不能登陆系统
    -d 是指定用户目录为/var/www ,这里可以替换成任何你需要的目录。
    -g ftp 把用户加入到ftp组中(vsftp已创建)
    ftpuser是ftp用户名,在配置时把这个ftpuser换成你的ftp用户名。

    执行该命令后,如果出现这样的错误提示:
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.
    这说明用户的目录已经存在(/var/www,这个可以是任何你设定的目录),不可再新建此目录,并非添加用户失败,可以忽略。
    特别提醒:用useradd建立的用户,如果后面不加–s /sbin/nologin参数,建立的用户为普通系统用户,有系统登陆centos服务器的权限,在虚拟主机环境下,这非常危险。所以要在useradd命令后面加上参数–s /sbin/nologin,为centos 服务器虚拟主机添加不可以登录系统的ftp专用账号(虚拟账户) 
    设置密码
    # passwd ftpuser
    提示:重复输入2次
    修改/var/www目录属性:(或任何自己定义的目录)
    # chown -R ftpuser /var/www 递归把所有目录及文件的拥有者设为新添加的ftp用户
    # chmod -R 755 /var/www 递归地设置拥护者全部权限,其他用户只有读取和执行权限
    这样,如果网站运行时需要有写入权限,可以直接通过ftp的用户名来修改配置文件/etc/vsftpd/vsftpd.conf
    设置帐户只能访问自己的目录,也就是上面建用户的时候设置的目录–d /var/www
    Chroot_local_user=yes
    关闭SELINUX:
vi /etc/selinux/config
#SELINUX=enforcing      这一行注释掉
#SELINUXTYPE=targeted   这一行注释掉
SELINUX=disabled        增加这一行


setenforce 0  使配置立即生效   
    如果不关闭SELINUX,登陆ftp可能会卡顿,登陆比较慢。
    注意别忘了关闭防火墙。否则会出现ftp: connect: 没有到主机的路由这样的提示。


    下面介绍下vsftp:
    一、vsftpd简介 
    在稳定性方面:vsftpd可以在单机(非集群)上支持4000个以上的并发用户同时连接。据ftp.redhat.com的数据,vsftpd可以支持15000个并发用户。 
    除了安全、高速、稳定之外,vsftpd还具有如下的特性: 
    支持基于IP的虚拟FTP服务器 
    支持虚拟用户 
    支持PAM或xinetd / tcp_wrappers的认证方式 
    支持两种运行方式:独立和Xinetd 
    支持每个虚拟用具有独立的配置 
    支持带宽限制等 
    vsftpd的配置文件有三个,分别是: 
/etc/vsftpd.conf 
/etc/vsftpd.ftpusers 
/etc/vsftpd.user_list 
    其中,/etc/vsftpd.conf是主配置文件。/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器。 /etc/vsftpd.user_list中指定的用户默认情况下(即在/etc/vsftpd.conf中设置了userlist_deny= YES)不 能访问FTP服务 器,当在/etc/vsftpd.conf中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用 户访问FTP服务器。 

    二、vsftpd的默认主配置文件 
    vsftpd的默认主配置文件的内容如下:
 //允许匿名登录 
anonymous_enable=YES 
//允许本地用户登录 
local_enable=YES 
//开放本地用户的写权限 
write_enable=YES 
//设置本地用户的文件生成掩码为022,默认值为077 
local_umask=022 
//当切换到目录时,显示该目录下的.message隐含文件的内容 
//这是由于默认情况下有message_file=.message的 设置 
dirmessage_enable=YES 
//激活上传和下载日志 
xferlog_enable=YES 
//启用FTP数据端口的连接请求 
connect_from_port_20=YES 
//使用标准的ftpd xferlog日志格式 
xferlog_std_format=YES 
//设置PAM认证服务的配置文件名称,该文件存放 在/etc/pam.d/目录下 
#pam_service_name=vsftpd 
    三、进一步配置vsftpd 
    1.允许匿名用户上传 
    为了使匿名用户能够上传,需要在/etc/vsftpd中激活两个配置选项,分别是: 
anon_upload_enable=YES 
//允许匿名用户上传 
anon_mkdir_write_enable=YES 
//开 启匿名用户的写和创建目录的权限 
若要以上两项设置生效,同时还要求: 
write_enable=YES 
//匿名用户对文件系统的上传目录具有写权限 
添加如下的配置语句: 
anon_world_readable_only=NO 
//上面的配置语句用于放开匿名用户的浏览权限 
创建匿名上传目录: 
mkdir /var/ftp/incoming 
修改上传目录的权限: 
chmod o+w /var/ftp/incoming/ 
    重新启动vsftpd. 

    2.启用ASCII传输方式 
    默认情况下,vsftpd为了安全,禁止了ASCII传输方式。虽然在ftp客户软件中可以使用asc命令,但是传输文件时仍然使用二进制传输方式。可以分别启用上传和下载的ASCII传输方式,方法是编辑/etc/vsftpd配置文件,将如下两 行前的#去掉即可 启用:
#ascii_upload_enable=YES 
#ascii_download_enable=YES 
    3.设置连接服务器后的欢迎信息 
    为了使用户连接服务器后显示信息,vsftpd提供了两个选项,分别是: 
ftpd_banner 
banner_file 
    例如:可以设置如下的ftpd_banner选项的值:
ftpd_banner=Welcome to Smartraining FTP service. 

即:用户连接服务器后显示信息“Welcome to Smartraining FTP service.”。 
也可以设置如下的banner_file选项的值: 

banner_file=/var/vsftpd_banner_file 

即:用户连接服务器后显示文件/var/vsftpd_banner_file中的信息。 
    注意:(1)如果设置了ftpd_banner的值,将覆盖vsftpd默认的服务器连接后的信息。 
    (2)如果ftpd_banner和banner_file同时设置,那么banner_file将覆盖ftpd_banner的设置。

    4.配置基本的性能和安全选项 
    //设置空闲的用户会话的中断时间 
    例如下面的配置: 
    idle_session_timeout=600 
    将在用户会话空闲10分钟后被中断。 
    //设置空闲的数据连接的的中断时间 
    例如下面的配置: 
    data_connection_timeout=120 
    将在数据连接空闲2分钟后被中断。 
    //设置客户端空闲时的自动中断和激活连接的时间 
    例如下面的配置: 
    accept_timeout=60 
    connect_timeout=60 
    将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接 
    //设置最大传输速率限制 
    例如下面的配置: 
    local_max_rate=50000 
    anon_max_rate=30000 
    将使本地用户的最大传输速率为50kbytes / sec,匿名用户的 传输速率为30 kbytes / sec。 
    //设置客户端连接时的端口范围 
    例如下面的配置: 
    pasv_min_port=50000 
    pasv_max_port=60000 
    将使客户端连接时的端口范围在50000和60000之间。这提高了系统的安全性。 
    //设置chroot 
    在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP服务器来说是不安全的。如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot选项,涉及如下选项: 
    chroot_local_user 
    chroot_list_enable 
    chroot_list_file 
    有两种设置chroot的方法: 
    (1)设置对所有的本地用户执行chroot(即活动范围限制在自家目录)只要将chroot_local_user的值设 为YES即可, 即: 
    chroot_local_user=YES 
    (2)设置指定的用户执行chroot需要如下的设置:
chroot_local_user=NO 
chroot_list_enable=YES 
chroot_list_file= /etc/vsftpd.chroot_list 
    这样,只有/etc/vsftpd.chroot_list文件中指定的用户才执行chroot。 
    注意 :上面所提及的文件/etc/vsftpd.chroot_list和下面将要提及的文件 /etc/vsftpd.user_list的格式要求均为每个 用户名占一行。 

    5.配置基于本地用户的访问控制

    要配置基于本地用户的访问控制,可以通过修改vsftpd的主配置文件/etc/vsftpd.conf来进行, 有两种限制方法: 
    1)限制指定的本地用户不能访问,而其他本地用户可访问 
    例如下面的设置:
userlist_enable= YES 
userlist_deny=YES 
userlist_file= /etc/vsftpd.user_list 
    使文件/etc/vsftpd.user_list中 指定的本地用户不能访问FTP服务器,而其他本地用户可访问FTP服务器。 
    2)限制指定的本地用户可以访问,而其他本地用户不可访问 
    例如下面的设置: 
userlist_enable= YES 
userlist_deny= NO 
userlist_file= /etc/vsftpd.user_list 
    使文件/etc/vsftpd.user_list中 指定的本地用户可以访问FTP服务器,而其他本地用户不可以访问FTP服务器。 
    注意:对于userlist_enable可以这样理解: 
    如果userlist_enable=YES,表示vsftpd将从userlist_file选项给出的文件名中装载一个含有用户名的清单。然后再读取 userlist_deny的值来确定vsftpd.user_list中的用户是否允许访问FTP服 务器。如果用户不能访问,将在输入用户口令前被拒绝。 
    6.配置基于主机的访问控制 
    由于vsftpd有两种运行方式,即:由inetd启动和独立启动。 这两种运行方式的主机访问控制配置是不同的,下面介绍的是由xinetd启动的vsftpd的主机访问控制的配置。显然,要配置这种主机访问控制,需要修改配置文 件/etc/xinetd.d/vsftpd。 
    1)只允许指定的主机访问 
    在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句: 
    only_from <主机表> 
    例如:only_from 192.168.1.0 表示只允许192.168.1.0网段内的主机访问。 
    2)指定不能访问的主机 
    在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句: 
    no_access <主机表> 
    例如:no_access 192.168.1.0 ,表示只有192.168.1.0网段内的主机不能访问。 
    3)配置每个客户机的最大连结数 
    //在置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句: per_source = 数值 
    例如:per_source = 5表示每个客户机的最大连接数为5。 
    4)配置服务器总的并发连接数 
    在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句: instances = 数值 
    例如:instances = 200 表示FTP服务器总共支持的最高连接数为200。 
    5)配置访问时间限制 
    在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句: access_time = hour:min-hour:min 
    例如:access_time = 18:00-23:59 表示只有在下午6点到午夜0点之前才能访问此FTP服务器; 又如:access_time = 8:30-11:30 13:00-18:00 表示只有在上午8点半到11点半和下午1点到下午6点才能访问此FTP服务器。 
    6)指定连接失败时显示的信息 
    在配置文件/etc/xinetd.d/vsftpd的 {}中添加如下的配置语句: banner_fail =文件名 
    例如:banner_fail = /etc/vsftpd.busy_banner 表示当连接失败时显示文件/etc/vsftpd.busy_banner中的内容。 可以用下面的命令生成文件/etc/vsftpd.busy_banner: echo "421 Server busy, please try later."> /etc/vsftpd.busy_banner 
    下面内容是基于xinetd的,因为debian用的是inetd,所以懒得修改了。

    四、使用vsftpd配置高安全级别的匿名服务器 
    高安全级别匿名FTP服务器的配置要求: 
仅仅允许匿名用户访问 
不允许本地用户访问 
关闭所有写权限 
不允许匿名用户上传 
设置客户端连接时的端口范围 
设置匿名用户的最大传输速率限制 
设置空闲的数据连接的中断时间 
设置客户端空闲时的自动中断和激活连接的时间 
配置每个主机的最大连接数 
配置总的并发连接数 
配置禁止访问的主机 
配置安全日志 
    vsftpd推荐使用这种近乎于偏执的安全 配置,如果用户只想架设匿名FTP下载服务器,出于安全性的考虑,请参考使用这种谨慎配置。 
    这种安全匿名服务器的配置,可以从vsftpd的源代码树中获得,具体操作步骤如下: 进入vsftp源代码树的EXAMPLE/INTERNET_SITE目录复制默认配置文件: 
# cd /usr/local/src/vsftpd-1.1.3/EXAMPLE/INTERNET_SITE 
# cp vsftpd.conf /etc 
# cp vsftpd.xinetd /etc/xinetd.d/vsftpd 
//修改主配置文件/etc/vsftpd.conf,添加一 个连接后的信息 
# cat >>/etc/vsftpd.conf < > ftpd_banner=This FTP server is anonymous only. 
> ! 
//显示主配置文件的内容如下: 
# cat /etc/vsftpd.conf 
# Access rights 
anonymous_enable=YES 
local_enable=NO 
write_enable=NO 
anon_upload_enable=NO 
anon_mkdir_write_enable=NO 
anon_other_write_enable=NO 
# Security 
anon_world_readable_only=YES 
connect_from_port_20=YES 
hide_ids=YES 
pasv_min_port=50000 
pasv_max_port=60000 
# Features 
xferlog_enable=YES 
ls_recurse_enable=NO 
ascii_download_enable=NO 
async_abor_enable=YES 
# Performance 
one_process_model=YES 
idle_session_timeout=120 
data_connection_timeout=300 
accept_timeout=60 
connect_timeout=60 
anon_max_rate=50000 
ftpd_banner=This FTP server is anonymous only. 

//接下来查看/etc/xinetd.d/vsftpd 
# cat /etc/xinetd.d/vsftpd 

service ftp 
{ 
disable = no 
socket_type = stream 
wait = no 
user = root 
server = /usr/local/sbin/vsftpd 
per_source = 5 
instances = 200 
no_access = 192.168.1.3 
banner_fail = /etc/vsftpd.busy_banner 
log_on_success += PID HOST DURATION 
log_on_failure += HOST 
} 
//重新启动xinetd 

# service xinetd restart 

//配置结束 
    五、配置基于IP的虚拟FTP服务器 
    vsftpd支持基于IP的虚拟FTP服务器配置。其主要配置步骤为:
配置虚拟IP地址 
建立虚拟FTP的服务器目录并设置适当的权限 
建立虚拟FTP的服务器的xinetd配置文件 
建立虚拟FTP的服务器的主配置文件 
    注意:虚拟FTP的服务器要有单独的xinetd配置文件和单独的主配置文件, 这两个文件不能与原配置文件重名。 
    具体操作过程如下: 
    1.查看本机现有的IP地址
# ifconfig |grep -1 eth0 
eth0 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF 
inet addr:192.168.1.222 Bcast:192.168.1.255 Mask:255.255.255.0 
//可以看出本机的第一个网络接口eth0的IP为192.168.1.222 
    2.配置一个虚拟网络接口eth0:1 
# ifconfig eth0:1 192.168.1.234 up 
# ifconfig |grep -1 eth0:1 
eth0:1 Link encap:Ethernet HWaddr 00:50:56:C7:22:DF 
inet addr:192.168.1.234 Bcast:192.168.1.255 Mask:255.255.255.0 
//可以看出本机的虚拟网络接口eth0:1的IP为192.168.1.234 
    3.建立虚拟FTP的服务器目录 
# mkdir -p /var/ftp2/pub 
//确保目录具有如下的权限 
# ll -d /var/ftp2 
drwxr-xr-x 3 root root 4096 312 03:00 /var/ftp2 
# ll -d /var/ftp2/pub 
drwxr-xr-x 2 root root 4096 312 03:00 /var/ftp2/pub 
    4.创建此虚拟服务器的匿名用户所映射的本地用户ftp2
# useradd -d /var/ftp2 -M ftp2 
    5.更改现有的配置文件/etc/xinetd.d/vsftpd 
# vi /etc/xinetd.d/vsftpd 
// 在此文件的{}中添加如下的配置语句: 
// bind = 192.168.1.222 
// 将原FTP服务绑定到eth0接口,之后保存退出vi 
    6.生成并修改新的虚拟FTP服务器的配置文件/etc/xinetd.d/vsftpd2
# cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2 
//更改新的配置文件/etc/xinetd.d/vsftpd2 
# vi /etc/xinetd.d/vsftpd2 
//在此文件的{}中添加如下的配置语句: 
bind = 192.168.1.234 
//将虚拟FTP服务绑定到eth0:1接口 
//另外添加如下的配置语句: 
server_args = /etc/vsftpd_site2.conf 
//使vsftpd读取虚拟FTP服务器的主配置文件,之后保存退出vi 
    7.生成并修改虚拟FTP服务器的主配置文件/etc/vsftpd_site2.conf 
# cp /etc/vsftpd.conf /etc/vsftpd_site2.conf 
//修改新的主配置文件 
# vi /etc/vsftpd_site2.conf 
//将如下的配置语句行: 
ftpd_banner=This FTP server is anonymous only. 
//修改为: 
ftpd_banner=This is the alternative FTP site. 
//添加如下的配置语句: 
ftp_username=ftp2 
//使此虚拟服务器的匿名用户映射到本地用户ftp2 
//这样匿名用户登录后才能进入本地用户ftp2的/var/ftp2目录 
//修改后,保存退出vi 
    8.重新启动xinetd
# service xinetd restart 
//配置结束 
    六、配置独立运行的vsftpd 
    显然,这种启动方式将不再需要/etc/xinetd.d下面的配置文件。要配置独立运行的vsftpd很简单,只需要在前面的 
    主配置文件的基础上添加如下的配置即可: 
设置listen=YES 
指明vsftpd以独立运行方式启动。 
为了实现访问控制,需要添加如下的配置项: 
设置max_clients=200 
指明服务器总的并发连接数 
设置max_per_ip=4 
指明每个客户机的最大连接数。 
    八、用vsftpd配置独立运行的虚拟FTP服务器 
    为了配置独立运行的虚拟FTP服务器需要使用listen_address配置语句。以上面的配置为基础进行下面的配置,具体步骤如下: 
//修改原独立运 行的服务器配置文件 
# vi /etc/vsftpd.standalone.conf 
//添加listen_address=192.168.1.222的配置行 
//将原FTP服务绑定到eth0接口。之后用:wq退出vi 
//由xinetd运行的虚拟服务器的配置文件创 建一个新的配置文件 
# cp /etc/vsftpd_site2.conf /etc/vsftpd.standalone2.conf 
//修改新的配置文件 
# vi /etc/vsftpd.standalone2.conf 
//在文件开始处插入下面的行 
listen=YES 
listen_address=192.168.1.234 将虚拟服务器绑定到eth0:1接口 
max_clients=200 
max_per_ip=4 
//并将下面的配置语句 
ftpd_banner=This is the alternative FTP site. 
//改为: 
ftpd_banner=This is the alternative FTP site, and vsftpd in "standalone" mode. 
//用:wq退出vi 
//让原FTP服务器重新读取配置文件 
/usr/local/sbin/vsftpd /etc/vsftpd.standalone.conf 
# kill -HUP `pidof vsftpd` 
//启动新的虚拟FTP服务器 
# /usr/local/sbin/vsftpd /etc/vsftpd.standalone2.conf & 
    九、配置虚拟用户的FTP服务器 
    该部分讲述虚拟用户(virtual users)的FTP服务器的配置。虚拟用户只能访问为其提供的FTP服务,而不能像本地的实用户那样登录系统访问系统的其他资源。若要某用户对FTP服务器站内具有写权限但不允许访问系统的其他资源,则该用户应该使用虚拟用户才能提高系统的安全性。 传统的FTP服务器采用如下的方法实现虚拟用户:在本地建立普通用户账号并设置密码将其登录shell设为不可登录由passwd/shadow口令系统进行认证vsftpd的虚拟用户 采用了不与系统账户口令文件合二为一的方法,也就是说,为了认证这些虚拟用户vsftpd使用单独的口令库文件(pam_userdb),由可插拔认证模块(PAM)进行认证。使用这种方式更加安全,并且配置更灵活。 

    Vsftp的PASV mode和Port模式配置文件的设置
    FTP模式与数据端口
    FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过 此链接进行传输操作指令。它们的区别在于使用数据传输端口(ftp- data)的方式。PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20。PASV FTP由FTP客户端决定数据传输的端口。 PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数 据传输端口更为方便一些。
    port_enable=YES|NO
    如果你要在数据连接时取消PORT模式时,设此选项为NO。默认值为YES。
    connetc_from_port_20=YES|NO
    控制以PORT模式进行数据传输时是否使用20端口(ftp-data)。YES使用,NO不使用。默认值为NO,但RHL自带的vsftpd.conf文件中此参数设为YES。
    ftp_data_port=port number
    设定ftp数据传输端口(ftp-data)值。默认值为20。此参数用于PORT FTP模式。
    port_promiscuous=YES|NO
    默认值为NO。为YES时,取消PORT安全检查。该检查确保外出的数据只能连接到客户端上。小心打开此选项。
    pasv_enable=YES|NO
    YES,允许数据传输时使用PASV模式。NO,不允许使用PASV模式。默认值为YES。
    pasv_min_port=port number
    pasv_max_port=port number
    设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意。默认值为0。把端口范围设在比较高的一段范围内,比如50000-60000,将有助于安全性的提高。
    pasv_promiscuous=YES|NO
    此选项激活时,将关闭PASV模式的安全检查。该检查确保数据连接和控制连接是来自同一个IP地址。小心打开此选项。此选项唯一合理的用法是存在于由安全隧道方案构成的组织中。默认值为NO。
    pasv_address=
    此选项为一个数字IP地址,作为PASV命令的响应。默认值为none,即地址是从呼入的连接套接字(incoming connectd socket)中获取。

参考:http://blog.chinaunix.net/uid-9288192-id-80170.html
http://blog.chinaunix.net/uid-20639775-id-154476.html
http://www.cnblogs.com/hhuai/archive/2011/02/12/1952647.html
http://blog.sina.com.cn/s/blog_56ae1d580100yhel.html
http://cn.linux.vbird.org/linux_server/0410vsftpd.php
http://blog.51cto.com/yuanbin/108262
http://blog.csdn.net/weiyuefei/article/details/51564367
http://os.51cto.com/art/201008/222036.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值