ProFTPD服务器配置过程

看到这篇还写得不错,拿过来欣赏下,我最喜欢拿来主义了:-)

另外今天被网上的以篇文章给误导了一上午,差点发飙,居然是因为COPY得太流畅了,连小错误都没发现。就是那篇网上流传得很广的proftp配置文章,里面有个建立新用户的过程,不自主的就发扬了COPY精神,弄了过来改个名字就用上了,结果里面有笔误?或者是作者系统比较特别将false 写成了fales,哈哈,估计不只我一个中招,记录下来,万一有朋友找到这里来还能知道是啥原因

一、安装ProFTPD

1、准备工作

一般系统自带的RPM包的版本太老,有些Bug并且有些功能不全,下载较新的ProFTPD服务器进行安装。如果是自己练习或者内部使用,可以使用新版的,如果做服务器,提供正式的服务,一定使用稳的版本,这是一个良好的习惯。

下载地址:
http://www.proftpd.org/download.html

安装gcc

如果系统没安装GCC请安装GCC程序。在FC4CD2中,RedHat这点比较讨厌,在Debian系统中就简单了。

#rpm -ivh libstdc++-devel-4.0.0-8.i386.rpm

#rpm -ivh gcc-c++-4.0.0-8.i386.rpm

2 、编译安装ProFTPD

我们这里使用手工编译安装,配置文件放到/etc/proftpd/目录下,其他文件使用默认的安装目录,bin文件为/usr/local/sbin/proftpd

#tar -zxvf proftpd-1.3.0rc3.tar.gz //解压源文件 #cd proftpd-1.3.0rc3 //进入目录 #mkdir /etc/proftpd //建立配置文件目录 #./configure –sysconfdir=/etc/proftpd //生产config文件 #make //编译文件 #make install //安装 # which proftpd //查看系统文件位置

/usr/local/sbin/proftpd




注意:为规范服务器的管理,配置文件放到/etc/proftpd目录下。

3、手工启动ProFTPD

# /usr/local/sbin/proftpd


注:查看ProFTPD是否启动可以使用ps –aux |grep proftpd查看进程中是否有proftpd

4、配置启动脚本,让ProFTPD跟随服务器自己启动,我们把启动文件放到/etc/rc.local文件中。这种配置仅限于RedHat系列的服务器。

#cp contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd //将系统脚本拷贝到启动目录 # echo “/etc/init.d/proftpd start” >>/etc/rc.local //将启动脚本加到自启动文件中


二、配置proftpd服务器

【目的】

1、匿名用户能够登陆系统,并且能够向incoming目录上传文件、建立目录,不能下载、删除、文件和目录,不能对目录和文件进行改名;pub目录里面的文件只能下载,不能进行上传文件、删除,不能建立目录和删除目录。

2ftpadmin用户可以对整个ftp的进行管理,可以对文件进行上传、下载、删除、移动、改名等全部操作,对目录进行建立、删除、移动、改名等全部操作。

【配置过程】

1、准备工作

1)、添加匿名的ftpftpadmin用户

默认的使用ftp用户,一般系统安装后都会天加该用户,使用finger ftp命令进行查询,看是否有ftp用户。如果系统有该用户,使用vipw命令修改ftp用户的根为/dev/null(这个目录可以随便定义,根据你的需要进行选择,这理为了实验,随便找个目录)。如果没有该用户,我们自己添加该用户。

# useradd -s /bin/false -d /dev/null ftp # finger ftp # useradd -s /bin/false -d /var/ftp ftpadmin # finger ftpadmin

#passwd ftpadmin




2)、如果没有/var/ftp目录,建立/var/ftp根目录:2)、如果没有/var/ftp目录,建立/var/ftp根目录:

# mkdir /var/ftp # mkdir /var/ftp/incoming //匿名用户可以写,不可以下载、删除、执行 # mkdir /var/ftp/pub //匿名用户不能写、下载、删除、执行 # chgrp ftp /var/ftp/incoming //incoming目录的所属组改为ftp # chgrp ftp /var/ftp/pub //pub目录的所属组改为ftp # chown ftpadmin /var/ftp/pub ///var/ftp/pub的目录属主该为ftpadmin # chown ftp /var/ftp/incoming/ ///var/ftp/incoming的目录属主该为ftp # chmod –R 775 /var/ftp/incoming/ //改变incoming<span style=”background: #d

9d9d9 0% 50%; font-family: 宋体; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial”>目录为属主和同组为全部权限,其他可读权限 # chmod –R 755 /var/ftp/pub //改变pub目录权限为属主全部权限,同组和其他为可读权限


可以使用下面命令进行确认:

# ls –l /var/ftp

total 16

drwxrwxr-x 2 ftp ftp 4096 Mar 19 00:49 incoming

drwxr-xr-x 2 ftpadmin ftp 4096 Mar 19 00:01 pub




3)建立log文件 3)建立log文件

# mkdir /var/log/proftpd # touch /var/log/proftpd/proftpd.log


2、修改配置文件

修改/etc/prftpd/proftp.conf

# ServerName “FTP Server “ #服务器的名字
ServerType standalone #proftpd运行的方式,standaloneinetd DeferWelcome off #只有在认证用户之后才显示欢迎信息 ServerIdent off #登陆的时候不显示ftp服务器的相关信息,增加安全性 #

**User**                      nobody    #nobody,nogroup的身份运行程序 

**Group**                     nogroup 

# **Port** 21 #指定FTP的端口,默认是21端口 # **Umask** 002 #新文件的权限掩码
**ShowSymlinks**            off          #不显示链接文件的目标文件 

**DefaultRoot**              ~  !username # ~用户只能访问自己的目录,!usernmae用户除外 

**RequireValidShell      **         off  #用户是否拥有shell,关闭安全 

# **UseReverseDNS** off #关闭DNS反向查询,节省连接时间 **IdentLookups**** ** off #
**TimeoutLogin**            60        #登陆时等待输入密码的时间 

**TimeoutIdle**              300       #登陆后允许IDLE的时间 

**TimeoutNoTransfer**               600  #没有数据传输时允许IDLE的时间 

#

AllowStoreRestart on #允许断点续上传AllowRetrieveRestart on #允许断点续下载

AllowForeignAddress on #要允许 FXP 写成 on

#

PassivePorts 50000 65534 #指定被动模式端口的范围

#

MultilineRFC2228 on #FTP安全扩展 #

MaxClients**
100 “Sorry, the maximum number of allowed users are already connected (%m)”
# 最大链接数限制MaxInstances** 100 #最大实例数为30,

MaxClientsPerHost   2 每个IP只允许2个连接  #每个IP只能有两个连接ServerLog               /var/log/proftpd/

#SystemLog               /var/log/proftpd/system_log

ExtendedLog             /var/log/proftpd/proftpd.log ALL 


# AllowOverwrite on #

<Limit SITE_CHMOD>

DenyAll

</Limit>

<Anonymous /home/ftp>

User ftp

Group ftp

AnonRequirePassword off

MaxClients 50

MaxClientsPerHost 3 “Sorry, you may not connect more than five times.”

Umask 002 002

# We want clients to be able to login with “anonymous” as well as “ftp”

UserAlias anonymous ftp

# We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed

# in each newly chdired directory.

DisplayLogin welcome.msg

DisplayFirstChdir .message

TransferRate RETR 2000

TransferRate STOR 2000

<Limit LOGIN>

Allow from all

</Limit>

# Limit WRITE everywhere in the anonymous chroot

<Limit WRITE>

DenyAll

</Limit>

<Directory /home/ftp/incoming/*>

AllowOverwrite on

<Limit WRITE STOR CWD MKD>

Order Deny, Allow

Allow from all

</Limit>

<Limit READ RMD DELE RNFR RNTO SITE_CHMOD>

DenyAll

</Limit>

</Directory>

<Directory /home/ftp/pub/*>

AllowOverwrite off

<Limit STOR CWD READ>

Order Deny, Allow

Allow from all

</Limit>

<Limit WRITE>

DenyAll

</Limit>

<Limit RMD DELE RNFR RNTO SITE_CHMOD>

DenyAll

</Limit>

</Directory>

</Anonymous>

<Anonymous ~>

User ftpadmin

Group ftp

# Limit the maximum number of anonymous logins

MaxClients 10

# We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed

# in each newly chdired directory.

DisplayLogin welcome.msg

DisplayFirstChdir .message

Umask 002 002

# Limit WRITE everywhere in the anonymous chroot

<Limit LOGIN>

Order Allow,Deny

Allow from 172.22.0.0/24

Allow from 172.16.22.0/24

Deny from all

</Limit>

<Directory /*>

AllowOverWrite on

<Limit SITE_CHMOD>

DenyAll

</Limit>

<Limit WRITE STOR CWD MKD READ RMD DELE RNFR RNTO SITE_CHMOD>

AllowAll

</Limit>

</Directory>

</Anonymous>

使用的命令:

1、查看端口:ftp使用21端口

netstat –anl

2、查看进程

ps –axu |grep proftpd

3、重启ftp服务

/etc/init.d/proftpd stop

/etc/init.d/proftpd start

4、修改网卡地址

1)修改网络配置文件

vi /etc/network/interfaces

auto eth0

iface eth0 inet static

address 172.xx.xx.6 #172.xx.xx.6改成你要改的ip地址,保存推出

netmask 255.255.255.0

network 172.xx.xx.0

broadcast 172.xx.xx.255

gateway 172.xx.xx.254

# dns-* options are implemented by the resolvconf package, if installed

dns-nameservers 172.xx.xx.11

2)重新启动网络

/etc/init.d/networking restart


附录1 ****

1Porftpd.conf配置格式

#全局设置

设置项目1 参数1

设置项目2 参数2

#某个目录的设置

<Directory “路径名“>

</Directory>

#关于匿名用户的设置

<Anonymous “匿名登陆的目录“>

<Limit 限制动作>

</Limit>

</Anonymous>

2、参数说明

CWDChange Working Directory 改变目录

MKDMaKe Directory 建立目录的权限

RNFR ReName FRom 更改目录名的权限

DELEDELEte 删除文件的权限

RMDReMove Directory 删除目录的权限

RETRRETRieve 从服务端下载到客户端的权限

STORSTORe 从客户端上传到服务端的权限

READ:可读的权限,不包括列目录的权限,相当于RETRSTAT

WRITE:写文件或者目录的权限,包括MKDRMD

DIRS:是否允许列目录,相当于LISTNLST等权限,还是比较实用的

ALL:所有权限

LOGIN:是否允许登陆的权限

3limit说明

AllowUser 针对某个用户允许的Limit

DenyUser 针对某个用户禁止的Limit

AllowGroup 针对某个用户组允许的Limit

DenyGroup 针对某个用户组禁止的Limit

AllowAll 针对所有用户组允许的Limit

DenyAll 针对所有用户禁止的Limit