ubuntu上架设vsftpd

操做系统:ubuntu (GNU/Linux)linux

为了在机子上架设ftp服务器,咱们须要安装ftp服务器软件。Linux下具备表明性的ftp服务器软件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美国华盛顿大学开发。它的功能强大,配置较复制。因为开发时间较早,应用十分普遍,也所以成为黑客们主要的攻击目标。
ProFTP针对Wu-FTP的弱项而开发,在安全性方面进行了改进,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工做。
Vsftp在安全性,高性能及稳定性3个方面上有上佳的表现。它提供的主要功能包括虚拟IP设置,虚拟用户,standalone(可自行单独启动的daemon),inetd操做模式(由一支特殊的super daemon管理),强大的单用户设置能力以及带宽限流等。接下来咱们主要讲解在ubuntu上如何架设vsftpd。shell

vsftpd的安装:
在ubuntu可直接经过apt安装 sudo apt-get install vsftpd数据库

安装完毕,检查vsftpd进程是否已启动,能够查看进程或者查看监听端口
ps -eaf|grep vsftpd vsftpd进程已开启ubuntu

netstat -tnl|grep :21vim


vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分布以下:
/etc/vsftpd.conf vsftpd服务器的配置文件
/usr/sbin/vsftpd vsftpd服务器的进程文件
/etc/pam.d/vsftpd vsftpd服务器的PAM接口配置文件
/var/ftp vsftpd服务器匿名用户的工做目录浏览器

配置vsftpd服务器:
vsftpd服务器的配置文件以及各参数表明的意义以下:
/etc/vsftpd.conf安全

vsftpd.conf
listen=YES
listen_ipv6=YES # listen=YES和listen_ipv6=YES 设为YES表示将以独立的方式运行(可自行单独启动的daemon),前者监听ipv4,后者监听ipv6,但二者不能同时在一个配置文件中设置

anonymous_enable=YES # 表示容许匿名用户登陆FTP服务器
anon_world_readable_only=NO # 只要ftp用户在操做系统中有读权限,就能够下载文件
anon_root=/var/ftp/anonymous # 匿名用户登陆后进入到/var/ftp/anonymous目录中,能够下载该目录中的文件
anon_uploads_enable=YES # 匿名用户能够上传文件
anon_mkdir_write_enable=YES # 匿名用户能够在服务器上建立目录
anon_other_write_enable=YES # 匿名用户能够在服务器上进行命名,删除等写操做

local_enable=YES # 表示容许本地用户账号登陆
local_umask=022 # 表示本地用户建立新的文件时,该文件初始的权限值。022表示初始的权限值是建立者有所有的权限,其余用户(包括组用户,其余用户)只有读和执行权限,077表示初始建立者具备所有权限,其余用户没有权限服务器

write_enable=YES # 表示服务器接收与写有关的控制命令session

dirmessage_enable=YES # 表示用户第一次进入一个新目录时,会给用户一些提示信息
use_localtime=YES # 表示服务器显示本地时区时间,默认是显示GMT时间async


xferlog_enable=YES # 容许产生日志
xferlog_std_format=YES # 日志采用标准的xferlog格式
xferlog_file=/var/log/vsftpd.log# 日志文件以及所在目录

connect_from_port_20=YES # 使用20端口做为创建数据链接时的源端口

pam_service_name=vsftpd # 指定PAM服务配置文件的名字,在/etc/pam.d

chown_uploads=YES # 这两个选项是一对相关的配置,表示匿名用户上传的文件因此者将变为whoever,这个配置是为了安全目的
chown_username=whoever # 文件全部者变为其余用户后,匿名用户将不能再对文件进行删除,甚至读操做,例如做业上交FTP

idle_session_timeout=600 # 表示控制链接的超时值为600秒
data_connection_timeout=120 # 表示数据链接的超时值为120秒

nopriv_user=ftpsecure # 表示当vsftpd进程处于非特权运行状态时,所使用的用户身份是ftpsecure

async_abor_enable=NO # 表示vsftpd支持”async ABOR“的FTP命令,这条命令会影响vsftpd的安全,通常使用默认的NO设置

ascii_upload_enable=YES

ascii_download_enable=YES # 表示上传下载文件时真正容许ASCII模式。有些FTP服务器在实现ACSII传输模式时,容易遭受DoS攻击。为了不这种状况的发送,vsftpd给客户端回应时能够伪装允AXSCII模式,但实际上使用的是binary模式,经过把这两个值设置为NO来达到。

ftpd_banner=Welcome to stone FTP service. # 表示用户登陆时,将显示Welcome to stone FTP service信息,没有这个选项时,将显示vsftpd服务器的名称和版本信息,存在安全问题,于是这样作的目的是为了隐藏这些信息

deny_email_enable=YES # 匿名用户若是输入aaa@作为登陆密码,将被拒绝,主要目的是为了防止一些自动登陆工具进行登陆。
banned_email_file=/etc/vsftpd.banned_emails # 指定的deny_mail的文件

chroot_list_enable=YES # 这两个选项制定了一个用户列表,这个列表放在/etc/vsftpd/chroot_list文件中。当 chroot_local_user
chroot_list_file=/etc/vsftpd/chroot_list # 设为NO后,这些用户登陆FTP服务器后,他们看到的根目录是他们本身的我的目录,也就是说虽然在实际的文件系统中,这些用户我的目录的上级还有目录,可是不能切换到这些上级目录

chroot_local_user=YES # 当chroot_local_user被设置为YES时,上述用户列表将不会被限制在我的目录中,能够进一步转到其余目录

ls_recurse_enable=YES # 表示客户端在使用ls命令时能够加-R参数,-R参数表示ls命令能够列出整个目录树的内容,须要一些处理时间,特别存在恶意用户时,状况会更严重

anon_max_rate=0 # 用于设置匿名用户客户端可以达到的最大速率,其值是一个数值,单位为b/s,0表示无限制
local_max_rate=0 # 该选项限制的是本地用户的速率
max_clients=0 # vsftpd能接收的最大客户端链接数
max_per_ip=5 # 限制每一台主机能够连入的客户端数,用户为了加快下载速度,可能会打开不少的客户端链接,影响其余用户的正常使用


匿名用户配置:
配置匿名用户,使得
1 FTP服务器支持匿名用户(账号:anonymous 密码:任意)登陆
2 只要ftp用户(操做系统用户)在操做系统有读权限,就能够下载文件
3 匿名用户登陆后进入/var/ftp/anonymous目录,能够下载该目录中的文件
4 能够上传文件到目录/var/ftp/anonymous/upload目录中,但不能下载或删除该目录中的文件

利用vim修改vsftpd.conf文件
anonymous_enable=YES
anon_world_readable_only=NO
anon_root=/var/ftp/anonymous
anon_upload_enable=YES
chown_uploads=YES

在/var目录下新建目录anonymous,因此者为root,在/var/anonymous目录下新建目录upload,全部者为ftp

重启vsftpd进程
sudo killall -HUP vsftpd

测试匿名用户
以匿名用户登陆本地FTP服务器(127.0.0.1)

 


测试完毕

虚拟主机的配置:
何为虚拟主机?vsftpd的虚拟主机是指在一台主机上配置多个vsftpd服务,各个vsftpd服务能够采用不一样的配置,给用户的感受好像这些vsftpd服务是不一样的主机上运行的。vsftpd的虚拟主机是基于IP地址。既然是基于IP地址的,那您可能会问我只有一个网卡一个IP怎么配置虚拟主机?
这时,咱们能够利用linux的逻辑网卡来实现不一样IP。
一个虚拟主机的配置例子:
1 增长逻辑网卡,我如今的IP地址为192.168.1.100,增长逻辑网卡IP为192.168.1.101
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up

2 中止vsftpd服务
sudo killall vsftpd

3 修改vsftpd.conf配置,增长如下一栏
listen_address=192.168.1.100

4 从新启动vsftpd服务 & 表示后台运行
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

5 为第二个vsftpd服务器创建匿名用户对应的本地账号以及我的目录,参数-d指定我的目录,需本身创建,-s指定登陆shell,/sbin/nologin是一种不登陆shell
sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp

6 建立/var/ftp/myftp目录,改变/var/ftp/myftp的全部者(默认就是root),目的是使myftp用户对其没有写权限
sudo mkdir /var/ftp/myftp
sudo chown root /var/ftp/myftp

7 复制vsftpd.conf,命名为myvsftpd.conf放在/etc目录下
sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf

8 修改myvsftp.conf
ftpd_banner=Welcome to my virtual FTP server
ftp_username=myftp
listen=YES
listen_address=192.168.1.101

9 启动第二个vsftpd
sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf

测试虚拟主机:
登陆192.168.1.100 和 192.168.1.101


测试完毕

虚拟用户的配置:
vsftpd中的用户有3种。匿名用户,本地用户。还有一种就是接下来介绍的虚拟用户,该用户没法登陆你的操做系统,可是可以登陆FTP服务器,并且当存在不少虚拟用户,您并不须要在操做系统上为每一个虚拟用户新建一个不可登陆的本地用户,只须要一个。并且还有一个更强大的用法,咱们能够经过为每一个虚拟账号建立一个配置文件来不一样虚拟账号不一样的权限,目录,这将对咱们管理FTP用户有很大的方便。

1 新建user.txt,输入如下内容,表示有2个虚拟用户,分别为xuni1(密码pass1),xuni2(密码pass2)

user.txtxuni1
pass1
xuni2
pass2


2 接下来咱们须要生成虚拟账号数据库,先安装DB库工具
sudo apt-get install db4.8-util

在/etc下新建目录/etc/vsftpd
sudo mkdir /etc/vsftpd

将数据库文件导入到刚刚产生的目录
sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db

将数据库文件设置权限为600,并不须要被其余用户读,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db

3 新建/etc/pam.d/vsftpd_login文件,输入如下内容

vsftpd_login
auth required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login
account required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/vsftp_login


全部支持PAM的程序都有一个与PAM进行对接的配置文件,它们存放在/etc/pam.d目录,vsftpd与PAM的对接配置文件名能够由vsftpd.conf文件中的pam_service_name选项指定,默认是pam_service_name=vsftpd,当之后认证本地用户时,会根据/etc/pam.d/vsftpd文件的配置内容进行认证。

4 创建全部FTP虚拟用户账号使用的操做系统账号,须要咱们本身新建目录,并设置该账号工做目录的权限,全部者(貌似能够修改使之自动新建目录)
sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
sudo mkdir /home/ftpsite
sudo chown ftp_virt /home/ftpsite
sudo chgrp ftp_virt /home/ftpsite
sudo chmod 700 /home/ftpsite

5 在vsftpd.conf配置文件中添加有关虚拟账号用户的配置内容
guest_enable=YES
guest_username=ftp_virt
pam_service_name=vsftpd_login

最后一项将于原来的默认值冲突,能够注释掉原来的项,重启vsftpd以后,你将发现本地用户没法登陆vsftpd了

6 设置虚拟用户的权限,咱们能够经过添加下面这一行,来指定放置用户配置文件的目录位置是/etc/vsftpd
user_config_dir=/etc/vsftpd

解释下这一项的做用,添加这一项以后,当咱们以虚拟用户登陆vsftpd时,服务器将会寻找/etc/vsftpd目录下于虚拟用户名相同的配置文件,从而肯定该虚拟用户的权限等属性。这方便了咱们管理FTP虚拟用户。

7 配置虚拟用户配置文件
在/etc/vsftpd下,咱们新建文件xuni1,输入如下内容

xuni1local_root=/home/ftpsite

新建文件xuni2,输入如下内容

xuni2
local_root=/home/ftpsite
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=YES
write_enable=YES


8 而后重启vsftpd
先关闭
sudo killall vsftpd
启动
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &

测试


虚拟用户具体的权限,目录配置方法将能够经过各类方法来配置,这里再也不描述。


继续编辑中...

 

 

ubuntu server vsftpd 匿名用户上传下载及目录设置

1:vsftpd服务器安装;

sudo apt-get install vsftpd   #安装

cd /srv/  #切换到默认匿名用户ftp目录;

 运行 ls -l 咱们能够看到 默认的 ftp目录是,虚拟用户ftp的根目录,而且此目录是匿名用户管理的根目录,

不管是对 ftp,改组,改用户,改权限都不能在ftp根目录下,上传东西,要么就是ftp匿名没法链接,要么就是不能上传;折腾了几天,终于明白了!

ftp 做为匿名用户根目录,vsftpd有特殊处理;

 vsftpd对此 ftp 根目录,有两点特殊要求;该用户全部者必须是root,该目录的权限对其余不能为 w;

也就是说其余人,匿名用户来讲 ftp 目录是根目录,只能是只读的,不能上传,不能更改;以下官方解释

1.匿名用户就是ftp,想要匿名用户写入,必须文件夹的权限为ftp可写。

2.匿名用户的根目录不容许,因此根目录的权限绝对不能是ftp可写和其余用户可写,若是根目录全部者为ftp的话,全部者的权限也不能写。

因此解决方法是建个单独的public文件夹用于上传文件,设置其为ftp可写或”其余用户可写“

还可建个download文件夹只用于下载,设置其余用户没有写权限即可。

 

 那么咱们若是设置匿名用户上传,下载,新建目录呢,

就是在 ftp目录下,新创建一个目录,而且,设置其权限 777,就能够了,还要加上配置 vsftpd.conf 文件

二:配置匿名用户上传下载;

1: 先建立匿名用户可发布的文件目录

复制代码
cd /srv/ftp/   切换到根目录

sudo mkdir pub #新创建pub目录作为 匿名用户的上传目录

sudo chmod ftp:ftp pub #为pub目录改其全部者组为 ftp

sudo chmod -R 777 pub #为pub目录设置权限为所有可读可写可执行
复制代码

 配置好以后,ls -l 查看

2:配置 vsftpd.conf 配置文件修改

   sudo vim /etc/vsftpd.conf

  用vim,打开-修改如图示

设置如图几个选项就能够了

复制代码
anonymous_enable=YES  #设置匿名用户可用

write_enable=YES # 设置用户写的权限 YES

anon_upload_enable=YES #设置匿名用户上传YES

anon_mkdir_write_enable=YES # 设置匿名用户新建目录YES
复制代码

配置好以后:保存退出

从新启动vsftpd服务

sudo restart vsftpd

3: 测试 匿名用户访问,上传,新创建目录

复制代码
#打开终端链接ftp服务器

ftp 192.168.8.35 #回车
anonymous #输入用户名,匿名用户
#要求输入密码,直接回车

#出现Using binary mode to transfer files 表示链接成功

#ls 查看远程服务器目录

#cd pub 切换到远程目录pub

#ls 查看远程目录

# get hi.txt 下载远程文件到本地

#pub mac0.txt 上传本地文件到远程服务器
复制代码

如上图测试;

测试新建目录;直接使用

mkdir test

便可;

能够在浏览器里面输入ftp://192.168.8.35 打开ftp服务器目录,查看,下载,执行操做测试

 

注意:权限的问题

相关文章
相关标签/搜索