vsftpd架设匿名FTP.docx

上传人:b****6 文档编号:7844306 上传时间:2023-01-26 格式:DOCX 页数:19 大小:22.63KB
下载 相关 举报
vsftpd架设匿名FTP.docx_第1页
第1页 / 共19页
vsftpd架设匿名FTP.docx_第2页
第2页 / 共19页
vsftpd架设匿名FTP.docx_第3页
第3页 / 共19页
vsftpd架设匿名FTP.docx_第4页
第4页 / 共19页
vsftpd架设匿名FTP.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

vsftpd架设匿名FTP.docx

《vsftpd架设匿名FTP.docx》由会员分享,可在线阅读,更多相关《vsftpd架设匿名FTP.docx(19页珍藏版)》请在冰豆网上搜索。

vsftpd架设匿名FTP.docx

vsftpd架设匿名FTP

vsftpd架设匿名FTP,本地用户和虚拟用户mysql登录

本文参考了vsftpd安装文档,vsftpd的EXAMPLE及网上众多网友的文章。

环境:

匿名及本地用户:

REDhat9+vsftpd1.1.3(或vftpd2.0.1)。

虚拟用户:

vsftpd1.1.3+mysql3.23.54+pam_mysql0.5

不适用于vsftpd2.0.1+mysql4+pam0.5。

[/b]

请注意:

不要直接copy我这里的配置文件,可以造成ftp启动不正常,所以还是多费点事,自己输入吧

本文对本地用户、虚拟用户目录进行了限制,每个用户拥有自己独立的目录。

本文中所使用的参数具体意义请参数回贴。

配置不外就是修改vsftpc.conf,并指定用户目录,权限等。

对虚拟用户则用pam验证方式。

另:

mkdir建立目录,chown更改权限。

vi编辑文件。

这些命令请参考man文档

vsftpd类别:

1、PORTFTP

首先会建立控制频道,默认值是port21,也就是跟port21建立联机,并透过此联机下达指令。

第二,由FTPserver端会建立数据传输频道,默认值为20,也就是跟port20建立联机,并透过port20作数

据的传输。

2、PASVFTP

首先会建立控制频道,默认值是port21,也就是跟port21联机,并透过此联机下达指令。

第二,会由client端做出数据传输的请求,包括数据传输port的数字。

3、差别:

PORTFTP当中的数据传输port是由FTPserver指定,

而PASVFTP的数据传输port是由FTPclient决定。

通常我们使用PASVFTP,是在有防火墙的环境之下,透过client与server的沟通,决定数据传输的port。

vsftpd安装篇:

1、rpm安装:

代码:

[root@Linux_winvsftpd]#rpm-ivhvsftpd-1.1.3-8.i386.rpm

2、tar.gz的安装

解压后查看README和INSTALL文档

安装前的条件:

进入vsftpd目录

编辑"builddefs.h"文件,里面定义了pam功能,tcp_wrappers功能,ssl功能,根据需要定义pam或tcpwrapper功能,以消ssl功能

然后键入"make".将编译出相应的二进制文件,你可以用以下命令查看

[chris@localhostvsftpd]$ls-lvsftpd

-rwxrwxr-x1rootroot61748Sep2700:

26vsftpd

a、增加“nobody”用户。

在系统中添加此用户,如果用户已经存在,useradd命令有相应提示。

代码:

[root@Linux_winvsftpd]#useraddnobody

useradd:

usernobodyexists

b、建立“/usr/share/empty”目录。

在系统中此目录,如果目录已经存在,mkdir命令有相应提示。

代码:

[root@hpe45root]#mkdir/usr/share/empty/

mkdir:

cannotcreatedirectory'/usr/share/empty':

Fileexists

c、匿名服务帐号:

“ftp”用户和一个有效的匿名目录(默认为/var/ftp)。

代码:

[root@Linux_winvsftpd]#mkdir/var/ftp/

[root@Linux_winvsftpd]#useradd-d/var/ftpftp

d、更改目录的所有者为root,并让ftp用户对自己的主目录不可写

代码:

[root@Linux_winvsftpd]#chownroot.root/var/ftp

[root@Linux_winvsftpd]#chmodog-w/var/ftp

编译VSFTPD

代码:

[root@Linux_winvsftpd]#tarzxvfvsftpd-1.2.0.tar.gz

[root@Linux_winvsftpd]#cdvsftpd-1.2.0

[root@Linux_winvsftpd]#make

安装编译好的VSFTPD

执行“make,makeinstall”将编译好的二进制文件、手册等复制到相应目录。

可能需要手动执行以下复制:

代码:

[root@Linux_winvsftpd]#cpvsftpd/usr/local/sbin/vsftpd

[root@Linux_winvsftpd]#cpvsftpd.conf.5/usr/local/share/man/man5

[root@Linux_winvsftpd]#cpvsftpd.8/usr/local/share/man/man8

如果不存在man5和man8目录,要先建立这两个目录

代码:

[root@Linux_winvsftpd]#mkdir/usr/local/share/man/man5

[root@Linux_winvsftpd]#mkdir/usr/local/share/man/man8

make不会自己copy配置文件,如果makeinstall有错,则必须手工更改

[root@hpe45vsftpd-1.2.0]#cpvsftpd.conf/etc

为本地用户设置PAM

如果允许本地用户登录VSFTPD,执行以下操作:

代码:

[root@Linux_winvsftpd]#cpRedHat/vsftpd.pam/etc/pam.d/vsftpd

3、pam_mysql安装

如果使用mysql的二进制包,那么必须加个开始包,且要修改Makefile文件,指定mysql的lib位置。

代码:

[root@Linux_winvsftpd]#tarxvzfpam_mysql-0.5.tar.gz

[root@Linux_winvsftpd]#cdpam_mysql

[root@Linux_winvsftpd]#make

[root@Linux_winvsftpd]#cppam_mysql.so/lib/security

4、mysql安装。

请查看其它文档

vsftpd启动篇

vsftpd有两种运行方式,一种是standalone一种是viaaninetd(或者inetdorxinetd).

1、如何启动

1)系统自带的

代码:

[root@Linux_winsoftware]#servicevsftpdrestart

2)源包安装:

[root@Linux_winsoftware]#/安装路径/vsftpd&

代码:

[root@Linux_winvsftpd]#/sbin/servicexinetdrestart 

或 

[root@Linux_winvsftpd]#/usr/local/sbin/vsftpd&

2、standlone启动

具体的运行方式由参数listen决定。

当listen参数值为YES时,VSFTPD单独运行,我们可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。

命令如下:

  

代码:

/etc/rc.d/init.d/vsftpdstart|stop|restart

3、xinetd启动,首先要将vsftpd.conf配置文件中的listen参数值改为NO。

其次,生成一个/etc/xinetd.d/vsftpd文件

代码:

[root@Linux_winvsftpd]#vi/etc/vsftpd/vsftpd.conf或vi/etc/vsftp.conf

listen=NO

代码:

[root@Linux_winvsftpd]vi/etc/xinetd.d/vsftpd

内容如下:

servicevsftpd

{

disable=no

socket_type=stream

wait=no

user=root

server=/usr/sbin/vsftpd

port=21

log_on_success+=PIDHOSTDURATION

log_on_failure+=HOST

}

通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD。

配置安全匿名服务器

所要做的就是用vi修改vsftpd.conf文件

代码:

[root@Linux_winvsftpd]#vi/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf

修改后的vsftpd.conf文件看附件:

引用:

#使用单独模式,并指定监听的IP地址

listen_address=ipaddress

#只允许匿名访问,不允许本地用户访问

anonymous_enable=YES

local_enable=NO

#取消写权限

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

#启用详细的日志记录格式,设定记录传输日志的文件名。

默认值为/var/log/vsftpd.log。

xferlog_enable=YES

xferlog_file=/var/log/vsftp.log

#对连接进行控制,还有超时时间,那就根据具体情况再说了。

connect_from_port_20=YES

pasv_min_port=50000

pasv_max_port=60000

#控制FTP最大并发数,限定每个IP地址的并发数。

max_clients=numericalvalue

max_per_ip=numericalvalue

#限定下载速度

anon_max_rate=80000

#使用ftpd_banner取代VSFTPD默认的欢迎词,免得泄漏相关信息

ftpd_banner=WelcometothisFTPServer

#只让匿名用户浏览可阅读的文件,不可以浏览整个系统

anon_world_readable_only=YES

#隐藏文件的所有者和组信息,匿名用户看到的文件的所有者和组全变为ftp

hide_ids=YES

代码:

附:

vsftpd.conf

[root@Linux_winvsftpd]#catvsftpd.conf

listen=YES

listen_address=192.168.1.2

anonymous_enable=YES

local_enable=NO

write_enable=NO

anon_root=/home

anon_upload_enable=NO

anon_other_write_enable=NO

anon_mkdir_write_enable=NO

anon_world_readable_only=YES

#dirmessage_enable=YES

ftpd_banner=welcometothisFTPserver

xferlog_enable=YES

#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES

#pasv_mix_port=50000

#pasv_max_port=60000

#xferlog_std_format=YES

max_clients=10

max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list

#chroot_local_user=NO

#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES

#guest_username=vsftpdvirtual

#virtual_use_local_privs=NO

#user_config_dir=/etc/vsftpd/vsftpd_user_conf

配置可上传匿名服务器

[root@Linux_winvsftpd]#vi/etc/vsftpd/vsftpd.conf

修改文件,改后如下

代码:

[root@Linux_winftp]#cat/etc/vsftpd/vsftpd.conf

listen=YES

listen_address=192.168.1.2

anonymous_enable=YES

local_enable=NO

write_enable=YES

#anon_root=

anon_upload_enable=YES

anon_other_write_enable=YES

anon_mkdir_write_enable=YES

#anon_world_readable_only=YES

#dirmessage_enable=YES

ftpd_banner=welcometothisFTPserver

xferlog_enable=YES

#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES

#pasv_mix_port=50000

#pasv_max_port=60000

#xferlog_std_format=YES

max_clients=10

max_per_ip=10

hide_ids=YES

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list

#chroot_local_user=NO

#pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES

#guest_username=vsftpdvirtual

#virtual_use_local_privs=NO

#user_config_dir=/etc/vsftpd/vsftpd_user_conf

代码:

[root@Linux_winftp]#mkidr/var/ftp/upload

[root@Linux_winftp]#chmodo+w/var/ftp/upload

anon_root参数指定的目录或默认的/var/ftp主目录,ftp匿名用户不可有写权限,否则会出错。

办法是在/var/ftp下建立一个新目录,使得该目录对ftp匿名用户可写。

才能上传。

或不用匿名上传,而使用本地用户或虚拟用户。

配置本地用户

修改vsftpd.conf

代码:

[root@Linux_winvsftpd]#cat/etc/vsftpd/vsftpd.conf

listen=YES

listen_address=192.168.1.2

anonymous_enable=NO

local_enable=YES

#local_root=

write_enable=YES

#anon_root=

#anon_upload_enable=YES

#anon_other_write_enable=YES

#anon_mkdir_write_enable=YES

#anon_world_readable_only=YES

#anon_umask=777

#dirmessage_enable=YES

ftpd_banner=welcometothisFTPserver

xferlog_enable=YES

#xferlog_file=/var/log/vsftpd.log

connect_from_port_20=YES

#pasv_mix_port=50000

#pasv_max_port=60000

#xferlog_std_format=YES

max_clients=10

max_per_ip=10

hide_ids=YES

#limitallusersinit'sownerdir

#chroot_local_user=YES

#orlimitsome

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

#useownwerconffile

user_config_dir=/etc/vsftpd/vsftpd_user_conf

pam_service_name=/etc/pam.d/vsftpd

#guest_enable=YES

#guest_username=vsftpdvirtual

#virtual_use_local_privs=NO

由于上面了用户列表,因此须建立chroot_list文件,

代码:

[root@Linux_winvsftpd]#touch/etc/vsftpd/chroot_list

并加入以下内容,查看chroot_list文件内容,结果如下

代码:

[root@Linux_winvsftpd]#cat/etc/vsftpd/chroot_list

sam

gem

配置文件中指定了用户配置文件,因此建立此文件

代码:

[root@Linux_winvsftpd]#mkdir/etc/vsftpd/vsftpd_user_conf

并根据用户名建立文件

代码:

[root@Linux_winvsftpd]#touchsam

[root@Linux_winvsftpd]#touchgem

[root@Linux_winvsftpd]#ls-l/etc/vsftpd/vsftpd_user_conf

总用量8

-rw-r--r--  1root   root      21 1月 800:

25sam

-rw-r--r--  1root   root      25 1月 800:

17gem

并在sam,gem文件加加入以下内容,可用vi编辑并保存,下面的虚拟用户也一样,不过只须更改文件内容就可以了

代码:

[root@Linux_winvsftpd]#cat/etc/vsftpd/vsftpd_user_conf/sam

local_root=/home/sam

代码:

[root@Linux_winvsftpd]#cat/etc/vsftpd/vsftpd_user_conf/gem

local_root=/home/gem

本地用户验证要用pam文件,内容是默认的。

代码:

[root@Linux_winvsftpd]#cat/etc/pam.d/vsftpd

#%PAM-1.0

auth    required   pam_listfile.soitem=usersense=denyfile=/etc/vsftpd.ftpusers

onerr=succeed

auth    required   pam_stack.soservice=system-auth

auth    required   pam_shells.so

account  required   pam_stack.soservice=system-auth

session  required   pam_stack.soservice=system-auth

配置虚拟用户(mysql)

  VSFTPD的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而

VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。

对于只需要通过FTP对系统有读

写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。

  VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了

系统的安全性。

VSFTPD可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器

中,如MySQL等。

VSFTPD验证虚拟用户,则采用PAM方式。

由于虚拟用户的用户名/口令被单独保存,因此在验证

时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正

如同匿名用户也需要有一个系统用户ftp一样。

当然,guest用户也可以被认为是用于映射虚拟用户。

  配置虚拟用户分为几部分:

guest用户的创建、用户/口令的保存、PAM认证配置、vsftpd.conf文件设置等

在后面的例子中,假定存在虚拟用户win和wingger.

1、在系统中添加vsftpdvirtual用户,作为虚拟用户在系统中的代表。

代码:

[root@Linux_winvsftpd]#useraddvsftpdvirtual

  当虚拟用户登录后,所在的位置为vsftpdvirtual的自家目录/home/vsftpdvirtual。

2、配置文件vsftpd.conf:

加入以下内容

guest_enable=YES

guest_username=vsftpdvirtual

virtual_use_local_privs=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1