技巧一、防止proftpd进行DNS反查以及对用户端进行ident确认 在proftpd.conf里面加入两行:
防止proftpd进行DNS反查以及对用户端进行ident确认。 === 技巧二、proftpd如何允许以root身份登录 在配置文件中使用下面的配置:
=== 技巧三、如何让匿名用户使用proftpd服务器 建立一个用户,用户名为guest,然后在配置文件中使用下面的配置:
=== 技巧四、如果要支持下载续传,那么必须指定:
如果要支持上传续传,那么必须指定:
必须同时指定AllowOverwrite和AllowStoreRestart的原因是由于重新上传或者续传也是属于覆盖文件。 同时记得不要同时使用HiddenStor和AllowStoreRestart。 === 技巧五、通过ls看见以"."号开头的文件 在配置文件中设置:
这样就能通过ls看见以"."号开头的文件 好好学习,天天吃饭 === 技巧六、proftpd如何实现磁盘限额 首先编译的时候指定--with-modules的时候要包含mod_quota。 然后在配置文件中使用:
就可以实现磁盘限额。其中DefaultQuota说明用户只能用8000个block,而QuotaBlockSize则指明每个block大小是1024byte也就是1k。QuotaBlockName只在提示中出现,告诉用户block的单位。 === 技巧七、proftpd环境下如何将用户限制在自己的home目录下? 修改proftpd.conf,加入
(将用户限制在自己的目录下) 或者
(将用户限制在自己的目录下,对group1有效,对group2,group3无效) === 技巧八、如何让proftpd只监听在特定IP 如果一台机器有两个或者多个IP,比如192.168.0.1和172.16.0.1,那么缺省情况下ftp到这两个ip都可以连上这个ftp server,有些情况下要求只能ftp到192.168.0.1而不能ftp到172.16.0.1,该如何处理呢? 在proftpd.conf里面设置:
但是这个配置只能在standalone模式下面才能生效。 === 技巧九、proftpd中MaxClients和MaxInstances有什么不同 为了有效利用系统资源,防止过多连接,有时候可以在proftpd.conf里面有这样的配置:
但是有时候却是看到这样的配置:
这两个有什么区别呢? MaxInstances设置的是proftpd产生的子进程的个数,而MaxClients限制的是登录用户的个数。而客户端只要产生一个连接,即使不登录,也会导致proftpd产生一个子进程。 如果配置文件中限制MaxClients 100的时候,第101个连上的用户会被提示允许连接的客户端个数已达上限,同时断开连接。而设置MaxInstances 100的时候,第101个连接的用户不会得到任何提示,而服务器拒绝接受任何连接。 ==== 技巧十、Proftpd如何限制某个用户的同时连接数 Proftpd 1.2.7rc1以后提供了一个新参数-MaxClientsPerUser。在配置文件中添加下列参数:
这样就能限制每个用户只能同时有5个连接,使用例如flashget等下载工具的时候就最多只能分成5块下载。 === 技巧十一、如何不用kill proftpd的进程而停止ftp服务 ftpshut命令可以使得管理员不用停止proftpd进程而禁止所有连接,同时送出停止的信息。而且可以做到定时停止、允许当前存在的连接是马上中断还是到用户自己中断。 要重新提供ftp服务只要删除/etc/shutmsg。 === 技巧十二、如何查看当前连接到proftpd的用户 使用ftpwho命令,可以查看当前连接的用户相关信息,比如客户端机器名、用户名、连接时间、当前状态、进程号等。比使用ps命令来查看方便多了。 === 技巧十三、ftpshut 这个程序的主要功能是生成文件/etc/shutmsg,也就是我们在前面/etc/ftpaccess中设定的shutdown命令,ftpshut的使用格式如下: ftp <-l min> <-d min> time <说明> 各个参数的说明如下: -l 这个参数设定在关闭FTP服务器功能前多长时间停止用户的连接; -d 这个参数设定在关闭FTP服务器功能前多长时间将用户断线; Time 这个参数指定关闭FTP服务器功能的时间,如想 在8点半关闭机器,这里可以写0830。 === 技巧十四、Proftpd如何设置允许非正常shell的用户登录 有时候系统里面有一些只有ftp权限的用户,他们的shell一般被设置成/bin/false来防止他们用telnet登录到系统,但是这样导致他们不能ftp,如何解决呢? 需要注释掉/etc/pam.d/ftp,注释掉下面一行:
同时在proftpd.conf里面加入:
=== 技巧十五、Proftpd如何限速和设置发呆退出 可以使用:
来限制下载和上载速度: RateReadBPS和RateWriteBPS限制下载和上载的速率 RateReadFreeBytes和RateWriteFreeBytes限制当用户现在这么多数据量以后再进行限速,这样可以实现对于小文件不限速,而大文件限速。 TimeoutIdle -- 设置空闲连接超时时钟 TimeoutLogin -- 设置空闲登陆超时时钟 TimeoutNoTransfer -- 设置当没有数据传输时的超时时钟 TimeoutStalled -- 设置被阻塞的下载的超时时钟
############################################################################# ServerName "LittleBoy" ServerType standalone DefaultServer on #隐藏服务器版本信息 ServerIdent off #FTP使用的端口,21是默认 Port 21 ############################################################################### ################################################################################### RequireValidShell off AuthPAM off AuthPAMConfig ftp ############################################################################### ############################################################################### #续传文件 AllowRetrieveRestart on AllowStoreRestart on #超时限制 TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 #设置最大尝试次数 #MaxLoginAttempts 3 #防止DoS攻击,设置最大子进程数为20.如果你要一次多于这个进程数,增加下面的值 #这个设置只有standalone 时有效,在inetd模式你应设置inetd服务器的每个服务数 #量进程数,例如xinetd MaxInstances 20 ############################################################################### #掩码 Umask 022可以有效地防止文件被其他用户或同组用户改写 Umask 022 #磁盘配额 #Quotas on #上传与下载比率 #Ratios on ############################################################################### # Set the user and group under which the server will run. User proftpd Group proftpd #禁止root登录 #RootLogin off #DefaultRoot ~ #禁止系统普通用户登录 #<Limit LOGIN> # DenyAll #</Limit> ############################################################################### ############################################################################### #启用日志 LogFormat auth "IP:%a Name:%u PASSWD:%A %r At:%t" LogFormat readwrite "IP:%a Name:%u PASSWD:%A %m %F At:%t UsedTime:%T" #以write的日志格式记录READ,WRITE的日志 ExtendedLog /var/log/proftpd/transfer.log WRITE,READ readwrite #以auth的日志格式记录LOGIN的日志 ExtendedLog /var/log/proftpd/login.log AUTH auth ##根据自己的需要定制: ## %a:客户ip ## %A:匿名用户名 ## %b:发送请求的字节数 ## %d:目录名(相对路径) ## %D:目录名(绝对路径) ## %f:上传或下载的文件名(绝对路径) ## %F:上传或下载的文件名(相对路径) ## %h:客户的域名 ## %L:本服务器ip ## %m:客户发送的命令 ## %p:本服务器的端口 ## %P:服务进程的id ## %r:客户发送的整条命令 ## %t:本地时间 ## %T:传送文件所用的时间(秒) ## %u:客户登陆的用户名 ############################################################################### ############################################################################### #一个基本的匿名帐号,带有上传目录 <Anonymous /home/ftp> RequireValidShell no User ftp Group ftp # 用 "anonymous" 代替 "proftpd" 登录 UserAlias anonymous ftp AnonRequirePassword off # Cosmetic changes, all files belongs to ftp user DirFakeUser on ftp DirFakeGroup on ftp # 限制每个匿名帐号连接数 MaxClients 10 "最大连接10达到了,你等会再来" MaxClientsPerHost 3 "对不起,一个IP只允许3个连接" #下载与上传速率的设置,单位为KByte/s TransferRate RETR 4000 user ftp TransferRate STOR 2000 user ftp #登录时的欢迎信息 DisplayLogin .welcome.msg #对这个服务器的根目录下的所有的子目录限制写操作 <Limit WRITE> DenyAll </Limit> #开匿名上传目录,只能上传而不能下载及修改原有文件 <Directory upload> Umask 022 022 <Limit READ WRITE> DenyAll </Limit> <Limit MKD STOR> AllowAll </Limit> </Directory> </Anonymous>
1、ProFTP下的参数说明: CWD:Change Working Directory 改变目录 MKD:MaKe Directory 建立目录的权限 RNFR: ReName FRom 更改目录名的权限 DELE:DELEte 删除文件的权限 RMD:ReMove Directory 删除目录的权限 RETR:RETRieve 从服务端下载到客户端的权限 STOR:STORe 从客户端上传到服务端的权限 READ:可读的权限,不包括列目录的权限,相当于RETR,STAT等 WRITE:写文件或者目录的权限,包括MKD和RMD DIRS:是否允许列目录,相当于LIST,NLST等权限,还是比较实用的 ALL:所有权限 LOGIN:是否允许登陆的权限 2、limit说明 AllowUser 针对某个用户允许的Limit DenyUser 针对某个用户禁止的Limit AllowGroup 针对某个用户组允许的Limit DenyGroup 针对某个用户组禁止的Limit AllowAll 针对所有用户组允许的Limit DenyAll 针对所有用户禁止的Limit
ProFTPD是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点,能以 Stand-alone、xinetd模式运行等。ProFTP已经成为继Wu-FTP之后最为流行的FTP服务器软件,越来越多的站点选用它构筑安全高效的FTP站点,ProFTP配置方便,并有MySQL和Quota模块可供选择,利用它们的完美结合可以实现非系统账号的管理和用户磁盘的限制。
引用:
5)重新启动xinetd配置
引用:
4.伪装ProFTPD服务器
引用:
这样从表面上看,服务器就是一个运行着Serv-U的Windows了。
引用:
#设置FTP服务以nobody运行 Group nogroup
引用:
这个命令每三百六十秒显示一次连接用户数量的信息。
引用:
以上输出显示有两个用户(sheila和kabir)从不同的计算机连接到FTP服务器,输出内容还包括:为这些用户服务的ProFTPD的进程和主ProFTPD的进程ID。
引用:
注意不要在Allow命令后直接使用主机名称,因为检查主机名称会降低服务器的运行速度。另外主机名称比IP地址更具有欺骗性。如果 myhost.domain.com没有固定IP地址,主机用户在下一次从ISP获得一个IP地址时就无法和FTP服务器连接。这时必须给整个网络授予 FTP访问的权限。命令如下:"Allow from 216.112.169." 。
引用:
每一行包括以下内容:
引用:
HideNoAccess指令将用户隐藏/www 目录下的所有条目,IgnoreHidden指令指示ProFTPD 服务器忽略用户所有指令。
引用:
根据以上内容建立的ProFTPD服务器会为自动连接到匿名ProFTPD服务器的用户创建一个chroot限制,用户的主目录为站点的根目录。下面解释主要配置指令的作用:
1. 命令行
安装配置一个proftpd的实例 目的:
安装配置一个proftpd,达到以下要求
操作:
#DNS反查
DirFakeUser On skate
#限制skate组的skate用户登录时不能切换到其他目录(只能呆在他的home目录)
#设置只允许192.168.0的用户登录
#设置只允许skate用户登录,否则系统用户也可以登录ftp
#设置skate用户在upload的限制 编辑完以后按Esc,然后输入:x保存。
5 启动服务
# Source function library.
if [ -f /etc/sysconfig/proftpd ]; then
#下面这行设置环境变量,注意设置好你的proftpd的安装目录
# See how we were called.
if [ $# -gt 1 ]; then
exit 0
然后添加到系统服务并启动
6 一点体会 the server. Applying a <Limit> to this pseudo-command can be used to allow or deny initial connection or login to the context. It has no effect, and is ignored, when used in a context other than server config, <VirtualHost> or <Anonymous> (i.e. using it in a <Directory> context is meaningless). 翻译下:最后,有一个用来限制登陆的特殊命令,就是LOGIN。在<limit>中用这个,可以禁止或者允许连接进来。但是,如果不在Server config,<VirtualHost> 或者<Anonymous>中使用的话,他将失去效用,或者说被忽略掉(比如在<Directory>中使用就是无效的)。
proftpd感觉还是比vsftp功能配置上好用一点,主要掌握好<limit>段基本上应用来说就没有问题了。
一、测试平台
Debian 4.0r3
Proftpd 1.3.1 (WITH SSL)
二、原理简介
1、 继承性
子目录会继承其父目录的属性。
2、 优先级
优先级由大到小的顺序: 原始FTP命令(LIST DELE等) > 命令组(DIRS READ WRITE) > ALL命令组
3、 访问控制的应用顺序
不论出现顺序如何,先应用拒绝(Deny),后应用允许(Allow)
4、系统权限
Linux系统权限仍然起作用。如果设置了目录test的<Limit>允许写,但是该用户对test目录只有 读权限,这是该用户就不能向test目录写入。 <Directory /ftproot/test> ----------------- 1、继承性 <Limit DIRS> ------------------------- 2、优先级 AllowUser u1 -------------------- 3、访问控制的应用顺序 DenyAll </Limit> </Directory> 一点解释:根据参考1所述,访问控制的顺序应该是与其出现顺序有关,但是在我的测试中发现出现顺序没有什么影响。也就是说,像上面的访问控制,AllowUser u1和DenyAll哪个在前面都一样。
三、实例
1、简介
假设proftpd服务器上有5个用户:
manager, manA1, manA2, manB1, manB2 和2个组: groupA, groupB
manA1和manA2属于groupA组,manB1和manB2属于groupB组。
并且有如下目录结构:
/根目录
│ ├ftproot/ │ ├manager/ │ │ │ ├groupA/ │ │ ├A1/ │ │ ├A2/ │ │ └.../ │ │ │ ├groupB/ │ ├B1/ │ ├B2/ │ └.../ │ └.../
现在要实现的权限:
1、用户manager可以读写manager、groupA、groupB目录及它们的的子目录。 2、manA1可以读写A1目录,并且可以读写groupB的所有子目录。 3、manA2可以读写A2目录,并且可以读写groupB的所有子目录。 4、manB1可以读写B1目录。 5、manB2可以读写B2目录。 6、如果一个用户没有某个目录的访问权限,那么该用户就不能看到此目录。 7、只允许manger用户和groupA、groupB组成员访问FTP服务器。 8、不允许任何人破坏主干目录结构 2、实现 (1)添加用户和组 useradd manager passwd manager
groupadd groupA
groupadd groupB
useradd manA1
passwd manA1 usermod -G groupA manA1
useradd manA2
passwd manA2 usermod -G groupA manA2
useradd manB1
passwd manB1 usermod -G groupB manB1
useradd manB2
passwd manB2 usermod -G groupB manB2 (2)配置文件
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "Formax BPO FTP Server" ServerType standalone DefaultServer on # Port 21 is the standard FTP port. Port 21 UseReverseDNS off IdentLookups off# Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 000 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). MaxInstances 30 # Set the user and group under which the server will run. User nobody Group nogroup # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. # DefaultRoot ~ DefaultRoot /ftproot # Normally, we want files to be overwriteable. AllowOverwrite on AllowStoreRestart on ServerIdent off <IfModule mod_tls.c> TLSEngine on TLSLog /var/ftpd/tls.log TLSProtocol SSLv23
# Are clients required to use FTP over TLS when talking to this server?
TLSRequired on
# Server's certificate
TLSRSACertificateFile /etc/proftpd.cert TLSRSACertificateKeyFile /etc/proftpd.key
# CA the server trusts
TLSCACertificateFile /etc/proftpd.cert
# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off TLSOptions NoCertRequest # Allow SSL/TLS renegotiations when the client requests them, but # do not force the renegotations. Some clients do not support # SSL/TLS renegotiations; when mod_tls forces a renegotiation, these # clients will close the data connection, or there will be a timeout # on an idle data connection. TLSRenegotiate required off </IfModule>
# Bar use of SITE CHMOD by default
<Limit SITE_CHMOD> DenyAll </Limit>
<Limit LOGIN>
AllowUser manager AllowGroup groupA DenyAll AllowGroup groupB </Limit> <Directory /ftproot/*> <Limit ALL> DenyAll </Limit> </Directory> <Directory /ftproot/manager> <Limit ALL> AllowUser manager </Limit> </Directory> <Directory /ftproot/groupA> <Limit DIRS> AllowUser manager AllowGroup groupA </Limit> </Directory> <Directory /ftproot/groupA/*> <Limit DIRS> DenyAll </Limit> </Directory> <Directory /ftproot/groupA/A2> <Limit DIRS READ WRITE> AllowUser manager AllowUser manA2 DenyAll </Limit> </Directory> <Directory /ftproot/groupA/A1> <Limit DIRS READ WRITE> AllowUser manager AllowUser manA1 DenyAll </Limit> </Directory> <Directory /ftproot/groupB> <Limit DIRS> AllowUser manager AllowGroup groupA AllowGroup groupB </Limit> </Directory> <Directory /ftproot/groupB/*> <Limit DIRS> DenyAll </Limit> </Directory> <Directory /ftproot/groupB/B1> <Limit DIRS READ WRITE> AllowUser manager AllowUser manB1 AllowGroup groupA DenyAll </Limit> </Directory> <Directory /ftproot/groupB/B2> <Limit DIRS READ WRITE> AllowUser manager AllowUser manB2 AllowGroup groupA </Limit> </Directory>
本文出自 “GONE WITH THE WIND” 博客,请务必保留此出处http://h2appy.blog.51cto.com/609721/123997
----博主补充错误解决! 1, IPV6 出错: How to I completely disable (or remove) IPv6 from my slackware box? I'm using 10.1 atm. 在/etc/modprobe.conf 加上 alias net-pf-10 off
2,proftpd不能正常啟動 Starting proftpd: localhost.localdomain - error converting stdin to IPv6 socket: Socket operation on non-socket
解决: 設成 inetd, 那麼 proftpd 就是由 inetd/xinetd 啟動.
(责任编辑:IT) |