您的位置:首页 > 编程语言 > PHP开发

FTP服务详解

2013-09-27 23:34 162 查看
FTP是仅基于TCP的服务,不支持UDP。减少或消除了在不同操作系统下处理文件的不兼容性。同时FTP回建立两个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。

(1),主动模式:
主动与被动的模式均相对于FTP服务器而言的,客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命“portN+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。在请求连接时发送的为IP及两位数的组合如XXXX.XXXX.XXX.XXXij而打开的端口N为i*256+j。
(2)被动方式
在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N>1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P>1024),并发送PORTP命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

二。rhel6-FTP配置
1.FTP服务
开机启动
553.权限报错550.服务报错

getsebool-a|grepftp过滤FTP的selinux策略

allow_ftpd_full_access--》on去除selinux对于ftp的影响

chcon-tpublic_content_rw_t/var/ftp/pub/修改目录安全上下文
anon_umask=022设置下载文件权限

新建目录:anon_mkdir_write_enable匿名用户可以新建目录

anon_world_readable_enable=NO匿名用户可以下载不用设置anon_umask=022时匿名用户可以下载

匿名用户可以删除anon_other_write_enable=YES

本地用户:

lftp-utest(本地用户)192.168.0.25以本地用户身份登录
selinux开启时不允许普通用户切换道家目录

[root@server81pub]#setsebool-Pftp_home_diron打开切换家目录
并且可以查看根分区

chroot_local_user=NO允许本地用户切换到根分区
chroot_local_user=YES不允许本地用户切换到根分区

chroot_list_enable=NO不读取/etc/vsftpd/chroot_list列表(黑名单记载的用户不可以切换根分区)YES读取列表
chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list
(在chroot_root添加的用户不能切根)

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list
(在chroot_root中的用户能切根)

chown_uploads=YES

chown_username=test以test的身份上传文件,即将上传的文件的所有者改为test,上传的文件只有登录test用户才可以下载

userlist_enable=YES则读取user_list黑名单(记录的用户不能登录FTP)NO不读取user_list黑名单
不管userlist_enable=YES还是NO都会读取ftpusers(永久黑名单)

userlist_deny=NO将user_list转换成白名单

如果在ftpusers与user_list有相同的用户则优先读取永久黑名单
白名单:

ftpusers永久拒绝列表

user_list暂时拒绝列表可以转为白名单

内外网,多ip的ftp策略:

[root@server81vsftpd]#ifconfigeth0:0192.168.0.141netmask255.255.255.0

----cp/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd1.conf

listen_address=192.168.0.81本配置文件只监听192.168.0.81即配置信息只对此ip有效在不同的配置文件的中可以监听不同的ip
速度控制:

anon_max_rate=10240(10K)匿名用户最大上传速度(数字默认为字节)
local_max_rate=102400本地用户最大上传速度

虚拟用户:
#cd/etc/vsftpd
#vimusers
user1用户名
westos密码
user2
westos
.....
#yum-yinstalldb4-utils
#db_load-T-thash-fuserslogin.db

db_load命令用法
由林夕昱于2010-04-12at3:41上午发表

[root@localhostRPMS]
#rpm-ivhdb4-utils-4.2.52-7.1.i386.rpm
warning:db4-utils-4.2.52-7.1.i386.
rpm:V3DSAsignature:NOKEY,keyIDdb42a60e
Preparing…###########################################[100%]

1:db4-utils###########################################[100%]

[root@localhostRPMS]#db_
db_archive
db_deadlock
db_dump185
db_printlog
db_stat
db_verify
db_checkpoint
db_dump
db_load
db_recover
db_upgrade

[root@localhostRPMS]#db_load
usage:db_load[-nTV][-cname=value][-ffile]
[-hhome][-Ppassword][-tbtree|hash|recno|queue]
db_file

db_load命令需要安装db4-utils这个软件包,在RHEL4.5中,这个软件包在第三个VCD光盘中.

db_load命令几个相关选项:
-T
The-Toptionallowsnon-BerkeleyDBapplicationstoeasilyloadtextfilesintodatabases.

IfthedatabasetobecreatedisoftypeBtreeorHash,orthekeywordkeysisspecifiedasset,theinputmustbepaired
linesoftext,
wherethefirstlineofthepairisthekeyitem,andthesecondlineofthepairisitscorrespondingdata
item.
IfthedatabasetobecreatedisoftypeQueueorRecnoandthekeyworkkeysisnotset,theinputmustbelinesoftext,
whereeachlineisanewdataitemforthedatabase.

选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的,
为了让Vsftpd这个应用程序能够通过文本来载入用户数据,必须要使用这个选项。

Ifthe-Toptionisspecified,theunderlyingaccessmethodtypemustbespecifiedusingthe-toption.

如果指定了选项-T,那么一定要追跟子选项-t

-t
Specifytheunderlyingaccessmethod.Ifno-toptionisspecified,thedatabasewillbeloadedintoadatabaseofthesametypeaswasdumped;
forexample,aHashdatabasewillbecreatedifaHashdatabasewasdumped.
BtreeandHashdatabasesmaybeconvertedfromonetotheother.
QueueandRecnodatabasesmaybeconvertedfromonetotheother.
Ifthe-koptionwasspecifiedonthecalltodb_dumpthenQueueandRecnodatabasesmaybeconvertedtoBtreeorHash,
withthekeybeingtheintegerrecordnumber.

子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型。扩展介绍下,-t可以指定的数据类型有Btree、Hash、Queue和Recon数据库。

-f
参数后面接包含用户名和密码的文本文件,文件的内容是:奇数行用户名、偶数行密码,例如:
yonghu1
mima1234
yonghu2
mima1234

将用户信息文件转换为数据库并使用hash加密

db_load-T-thash-f/etc/vsftpd/logins.txt/etc/vsftd/vsftpd_login.db

#cd/etc/pam.d
#vimvirtual(文件名自定义)
authrequiredpam_userdb.sodb=/etc/vsftpd/login
accountrequiredpam_userdb.sodb=/etc/vsftpd/login
#vim/etc/vsftpd/vsftpd.conf
修改内容:
pam_service_name=virtual(与pam.d内的文件名一定要相同否则会有530报错)
添加内容:
guest_enable=YES
登录虚拟用户时将直接到pub目录虚拟用户没有家目录
添加家目录
cd/var/ftp/
mkdirvirtual目录位置及目录名自定义
cdvirtual
mkdiruser1
mkdiruser2家目录
在配置文件添加内容:
local_root=/var/ftp/virtual/$USER(与建立内的目录名一定要相同否则会有530报错)
guest_username=test登录虚拟用户时继承本地用户test权限
user_sub_token=$USER

lftp-uuser1192.168.0.X

tcp_wrappers设置
tcp_wrappers将会对所有的具有tcp_wrappers属性的服务具有限制作用、类似于火墙
#whichvsftpd
/usr/sbin/vsftpd
#ldd/usr/sbin/vsftpd查看服务的tcp_wrappers属性
#vim/etc/hosts.deny
ALL:ALL
拒绝所有用户登录所有服务
#vim/etc/hosts.allow
ALL:127.0.0.允许本地回环使用所有服务
vsftpd,sshd:192.168.0.0/24(或*.example.com)EXCEPT192.168.0.141除过141,192.168.0.0/24网段均可登录ftp,sshd服务

监控登录本机信息:

ALL:ALL:spawn`date`form%cto%s|mail-swarningroot
c从那个用户

%s从哪个服务
监控所有用户,所有服务,并将监控信息以邮件的形式发往root

本文出自 “王兹银的博客” 博客,请务必保留此出处http://wangziyin.blog.51cto.com/6948950/1302946
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: