如何安装SUSE10+vsftp

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何安装SUSE10.1+VSFTP
一、概述
FTP原理
FTP Transfer Protocol 件传输协议的缩写,在RFC 959中具体说明。

FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。

控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。

数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。

FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV 方式
PORT模式(主动方式)
FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。

PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。

在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。

FTP server必须和客户端建立一个新的连接用来传送数据。

PASV模式(被动方式)
在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server 不再需要建立一个新的和客户端之间的连接传送数据。

如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接
VSFTPD简述
vsftpd 是一个UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如Linux, BSD, Solaris, HP-UX 以及IRIX 上面。

它支持很多其他的FTP 服务器不支持的特征。

比如:
⏹非常高的安全性需求
⏹带宽限制
⏹良好的可伸缩性
⏹创建虚拟用户的可能性
⏹IPv6支持
⏹中等偏上的性能
⏹分配虚拟IP 的可能性
⏹高速
vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者Chris Evans 考虑的首要问题之一。

在这个FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

一个例子就是vsftpd 是在chroot 模式下工作的,chroot 模式就是为程序(这里就是vsftpd 了)单独指定一个新的目录,它也就不能访问那个目录之外的程序和文件了--- 所以这也称为“被锁上的”。

一个可能被潜在的攻击者破坏的FTP 服务器将被从系统的其他部分独立开来,从而避免了更大的损失。

由于有了如此多的特性,其中FTP 服务的安全性应该是最重要的,vsftpd 比其他FTP 服务器更加优越。

象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站点都采用VSFTPD作为它们的FTP服务器。

二、安装
Suse的图形用户界面做的很不错,所以安装过程也比较简单。

1、打开Yast,Software→Software Management;
Software Management在搜索栏里输入VSFTP回车(Suse10.1提供2.04版本)。

在左侧的软件包列表中选择vsftpd,然后点击下方的Accept按钮,会提示插入第一张光盘,安装完后就可以调试了。

三、调试与配置
vsftpd 有两种模式,独立模式和xinetd 模式。

独立模式需要你在开机后手动以root 执行vsftpd 命令启动FTP 服务器,xinetd 模式则不一直运行FTP后台,只有有用户向你的FTP 服务器发出ftp 请求时立即启动FTP 服务器后台程序。

后者需要机器启动时打开xinetd 服务。

先确定你要选择哪种模式,然后进行之
后的设置。

刚学VFSTP不要急着使用xinetd 模式,应xinetd 模式运行VSFTP,修改了配置文件要重起系统才能读取新的配置文件,重起VSFTP命令是没法在xinetd 模式下起作用。

(SUSE10.1刚装上的VSFTP是独立模式)。

打开一个终端
#service vsftpd start(启动VSFTP)
#service vsftpd stop(停止VSFTP)
#service vsftpd restart(重起VSFTP)
xinetd 模式
在xinetd 中打开,可以手动编辑/etc/xinetd.d/vsftpd文件把disabled yes改成disabled no,或者使用命令来实现
代码:
chkconfig vsftpd on
启动xinetd (如果未运行)。

代码:
/etc/init.d/xinetd start
确定xinetd 在机器启动时运行
代码:
chkconfig xinetd on
root权限编辑文件/etc/vsftpd.conf,确定listen=YES前面加了#。

如果没有,加上保存。

独立模式
root权限编辑文件/etc/vsftpd.conf,确定listen=YES前面没有#。

如果有,去掉保存。

检查运行状况和防火墙设置。

检查FTP 服务器是否在正常运行,默认配置文件是允许匿名用户只读的,/srv/ftp/作为对外FTP 的主目录。

调整防火墙设置
如果必要,调整防火墙设置。

如果是用默认的SuSEFirewall2,在YaST-系统-/etc/sysconfig 编辑器,network-SuSEfirewall2 把ftp 添加到FW_SERVICES_EXT_TCP,比如你还要打开ssh 那么
代码:
FW_SERVICES_EXT_TCP"ftp ssh"
如果你需要被动模式FTP 和nat,在YaST-系统-/etc/sysconfig编辑器,
network-SuSEfirewall2
代码:
FW_LOAD_MODULES"ip_conntrack_ftp ip_nat_ftp"
重启之后,vsftpd 将会按照你选择的模式运行。

VSFTP文件结构
/usr/sbin/vsftpd(VSFTPD的主程序)
/etc/ vsftpd.conf (VSFTP主配置文件)
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd(PAM认证文件)
/etc/vsftpd.chroot_list
此文件包含对服务器上所有FTP内容有权限的用户名。

对其他用户来说,他们在服务器上的主目录对他们显示为根目录。

/etc/shells
在允许本地用户登录之前,系统默认检查是否有有效的用户shell。

以防PAM 认证不可用的情况。

/etc/ftpusers(禁止使用VSFTPD的用户列表文件)
此文件包含禁止FTP登录的用户名,通常有"root","uucp","news" 之类,因为这些用户权限太高,登录FTP 误操作危险性大。

/etc/er_list(禁止或允许使用VSFTPD的用户列表文件)
/var/ftp(匿名用户主目录)
/etc/logrotate.d/vsftpd.log(VSFTPD的日志文件)
监听地址与控制端口配置
打开主配置文件
#vi /etc/ vsftpd.conf
添加
listen_address=ip address
此参数在VSFTPD使用单独(standalone)模式下有效。

此参数定义了在主机的哪个IP地址上监听FTP请求,即在哪个IP地址上提供FTP服务。

对于只有一个IP地址的主机,不需要使用此参数。

对于多址主机,不设置此参数,则监听所有IP地址。

默认值为无。

listen_port=port_value
指定FTP服务器监听的端口号(控制端口),默认值为21。

此选项在standalone模式下生效。

ASCII模式设置
打开主配置文件
#vi /etc/ vsftpd.conf
默认情况下,VSFTPD是禁止使用ASCII传输模式。

即使FTP客户端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。

下面选项控制VSFTPD是否使用ASCII传输模式。

ascii_upload_enable=YES|NO (有#号去掉才能激活命令)
控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。

ascii_download_enable=YES|NO(有#号去掉才能激活命令)
控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。

用户设置
VSFTPD的用户分为三类:匿名用户、本地用户(local user)以及虚拟用户(guest)。

匿名用户
anonymous_enable=YES|NO (有#号去掉才能激活命令)
控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。

ftp_username=ftp
匿名用户所使用的系统用户名。

默认下,此参数在配置文件中不出现,值为ftp。

no_anon_password=YES|NO
控制匿名用户登入时是否需要密码,此参数在配置文件中不出现,YES不需要,NO需要。

默认值为NO。

deny_email_enable=YES|NO (有#号去掉才能激活命令)
此参数默认值为NO。

当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。

即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。

显然,这对于阻击某些Dos攻击有效。

当此参数生效时,需追加banned_email_file参数
banned_email_file=/etc/vsftpd.banned_emails (有#号去掉才能激活命令)
指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。

anon_root= /var/ftp/
设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。

此参数在配置文件中不出现,默认值为/var/ftp/。

anon_world_readable_only=YES|NO (有#号去掉才能激活命令)
控制是否只允许匿名用户下载可阅读文档。

YES,只允许匿名用户下载可阅读的文件。

NO,允许匿名用户浏览整个服务器的文件系统。

默认值为YES。

anon_upload_enable=YES|NO (有#号去掉才能激活命令)
控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。

除了这个参数外,匿名用户要能上传文件,还需要两个条件:
一,write_enable= YES。

二,在文件系统上,FTP匿名用户对某个目录有写权限。

(/etc/ftp不能777不然有错,ftp目录下可以使用)
anon_mkdir_write_enable=YES|NO(有#号去掉才能激活命令)
控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。

当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。

anon_other_write_enable=YES|NO(有#号去掉才能激活命令)
控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。

YES 拥有,NO不拥有,默认值为NO。

chown_uploads=YES|NO(有#号去掉才能激活命令)
是否修改匿名用户所上传文件的所有权。

YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。

此选项默认值为NO。

chown_username=whoever (有#号去掉才能激活命令)
指定拥有匿名用户上传文件所有权的用户。

此参数与chown_uploads联用。

不推荐使用root用户。

anon_umask=022(有#号去掉才能激活命令)
FTP上控制匿名的文件权限,默认是077
anon_max_rate=7200(有#号去掉才能激活命令)
FTP上控制匿名用户的上传下载流量
本地用户
在使用FTP服务的用户中,除了匿名用户外,还有一类在FTP服务器所属主机上拥有账号的用户。

VSFTPD中称此类用户为本地用户(local users),等同于其他FTP服务器中的real用户。

local_enable=YES|NO(有#号去掉才能激活命令)
控制vsftpd所在的系统的用户是否可以登录vsftpd。

默认值为YES。

local_root=
定义所有本地用户的根目录。

当本地用户登入时,将被更换到此目录下。

默认值为无。

user_config_dir=%file path%/%username%
定义用户个人配置文件所在的目录。

用户的个人配置文件为该目录下的同名文件。

个人配置文件的格式与vsftpd.conf格式相同。

例如定义user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那我们可以在user_config_dir的目录新增名为xiaowang、lisi 的两个文件。

当用户lisi 登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。

默认值为无。

(对虚拟用户一样使用)
local_umask=022(有#号去掉才能激活命令)
FTP上本地的文件权限,默认是077
设置指定用户执行chroot
Chroot_local_user=yes(有#号去掉才能激活命令)
本地所有帐户都只能在自家目录
Chroot_list_enable=yes(有#号去掉才能激活命令)
文件中的名单可以调用
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list(有#号去掉才能激活命令)注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可限制本地用户访问FTP
Userlist_enable=yes
用userlistlai 来限制用户访问
Userlist_deny=no
名单中的人不允许访问
注:开启userlist_enable=yes匿名帐号不能登陆
Userlist_file=/指定文件存放的路径/
文件放置的路径
注:开启userlist_enable=yes匿名帐号不能登陆
虚拟用户
在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。

使用这种方式更加安全,并且配置更加灵活。

下面介绍配置过程:
1.生成虚拟用户口令库文件。

为了建立此口令库文件,先要生成一个文本文件。

该文件的格式如下,单数行为用户名,偶数行为口令:
#vi account.txt
ylg
1234
zhanghong
gou
5678
2.生成口令库文件,并修改其权限:
#db_load -T -t hash -f ./account.txt /etc/vsftpd/account.db
#chmod 600 /etc/vsftpd/account.db
3.新建一个虚拟用户的PAM文件。

加上如下两行内容:
#vi /etc/pam.d/vsftp.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/account
account required /lib/security/pam_userdb.so db=/etc/vsftpd/account
4.建立本地用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:
#useradd -d /ftpsite virtual_user(最好加入FTP ,NObody组)
#chmod 700 /ftpsite
经过该步骤的设置,/ftpsite就是virtual_user用户的主目录,该用户也是/ftpsite目录的拥有者。

除root用户之外,只有该用户具有对该目录的读、写和执行的权限。

5.生成一个测试文件。

先切换至virtual_user用户身份,然后在/ftpsite目录下创建一个文件:(测试用户是否建好)
#su -virtual_user
$vi /ftpsite/mytest This is a test file.
$su - root
6.编辑/etc/vsftpd.conf文件,使其整个文件内容还需要条件如下所示:
local_enable=YES(有#号去掉才能激活命令)
启用本地用户
chroot_local_user=YES(有#号去掉才能激活命令)
用户已chroot方式运行
guest_enable=YES(有#号去掉才能激活命令)
启动虚拟用户
guest_username=virtual_user(有#号去掉才能激活命令)
把虚拟用户影射到本地用户virtual_user,这样虚拟用户登录后才能进入本地用户virtual_user的目录/ftpsite
pam_service_name=vsftp.vu(有#号去掉才能激活命令)
指定PAM的配置文件为vsftp.vu
7.重新启动VSFTP:#service vsftpd restart
8.以虚拟用户gou(Linux中并无该账号)进行测试
Microsoft Windows XP [版本5.1.2600]
(C) 版权所有1985-2001 Microsoft Corp.
C:\Documents and Settings\user>ftp 10.8.20.210
Connected to 10.8.20.210.
220 "Welcome to WTZX-FTP service."
User (10.8.20.210:(none)): tt
331 Please specify the password.
Password:
230 Login successful.
257 "/"
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
AIX下的oracle10g的安装.doc
Documents
bin
public_html
瑞星截图
中心机房关键设备链接图.jpg
226 Directory send OK.
ftp: 收到95 字节,用时0.02Seconds 5.94Kbytes/sec.
ftp>
9.虚拟FTP服务器中,也可以对各个用户的权限进行设置。

方法是在/etc/vsftpd.conf文件中添加如下一行:
user_config_dir=/sur/vsftpuser
用户配置文件目录然后在用户配置文件目录下创建相应的用户配置文件,
比如为上述名为gou的用户创建一个配置文件
#vi /sur/vsftpuser/gou
anono_upload_enable=NO
local_root=/home/xiaowang
可以把虚拟用户gou文件夹指向/home/xiaowang
重启FTP服务器,这时再使用账号gou来登录,就已经没有上传的权限了。

(其它命令也可以添加)
安全选项
Idle_session_timeout=600(秒)
用户会话空闲后10分钟
Data_connection_timeout=120(秒)
将数据连接空闲2分钟断
Accept_timeout=60(秒)
将客户端空闲1分钟后断
Connect_timeout=60(秒)
中断1分钟后又重新连接
Local_max_rate=50000(bite)
本地用户传输率50K
Anon_max_rate=30000(bite)
匿名用户传输率30K
Pasv_min_port=50000
Pasv_max_port=60000
将客户端的数据连接端口改在50000—60000之间
Max_clients=200
FTP的最大连接数
Max_per_ip=4
每IP的最大连接数
Listen_port=5555
从5555端口进行数据连接
查看谁登陆了FTP,并杀死它的进程
ps –xf |grep ftp
kill 进程号
hide_ids=YES隐藏用户的UID和GID
其他设置
dirmessage_enable=yes
切换目录时,显示目录下.message的内容
connect_form_port_20=yes
启用FTP数据端口的数据连接
xferlog_enable=yes
激活上传和下传的日志
xferlog_std_format=yes
使用标准的日志格式
ftpd_banner=”XXXXX “
欢迎信息
setproctitle_enable=YES|NO
YES,VSFTPD将在系统进程列表中显示每个会话(session)的状态。

也就是说,进程报告将显示每个vsftpd会话在做什么(挂起、下载等),如用ps -ef|grep ftp。

出于安全的目的,可以考虑将此选项关闭。

NO,进程报告只显示一个vsftpd进程在运行。

默认值为NO。

text_userdb_names=YES|No
当使用者登入后使用ls -al 之类指令时,目录列表的用户和组信息域,默认是出现拥有者的UID,而不是该档案拥有者的名称。

若是希望出现拥有者的名称,则将此功能开启。

默认值为NO。

user_localtime=YES|NO
默认为NO。

YES,VSFTPD显示目录列表时使用你本地时区的时间。

默认是显示GMT 时间。

同样,由ftp命令“MDTM”返回的时间值也受此选项影响。

check_shell=YES|NO
此选项仅对不使用PAM方式的VSFTPD生效。

当此选项关闭后,当本地用户登录时,VSFTPD不会检查/etc/shells文件以寻找一个有效的用户shell。

默认为YES。

nopriv_user=
指定一个用户,当VSFTPD不想要什么权限时,使用此用户身份。

这用户最好是一个专用的用户,而不是用户nobody。

在大多数的机器上,nobody用户被用于大量重要的事情。

默认值为nobody。

pam_service_name=
指明VSFTPD使用用PAM验证服务时的PAM配置文件名。

默认值为ftp。

主动模式设置
Port_enable=YES开启主动模式
Connect_from_port_20=YES 当主动模式开启的时候是否启用默认的20端口监听Ftp_date_port=%portnumber%上一选项使用NO参数是指定数据传输端口
被动模式
PASV_enable=YES开启被动模式
PASV_min_port=%number%被动模式最低端口PASV_max_port=%number%被动模式最高端口用户主目录设置
本地用户的主目录定义在/etc/passwd文件中
其中FTP user:________为定义行
全局重定向localuser的ftp主目录
local_root=%path%
改变原有banner
ftpd_banner=%message%
或者
banner_file=%file path%
虚拟FTP站点设置
首先创建2套conf文件
#cp /etc/vsftpd/vsftpd.conf /etc/vsftp/vsftp2.conf 创建ftp2的主目录
#mkdir /var/ftp2
#useradd -d /var/ftp2 -M FTP2
#service vsftpd restart
单独启动某一站点
/user/sbin/vsftpd /etc/vsftpd/vsftp2.conf&。

相关文档
最新文档