Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114014
  • 博文数量: 40
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-02 15:41
文章分类

全部博文(40)

文章存档

2009年(40)

我的朋友
最近访客

分类: 系统运维

2009-06-15 09:22:46

三、设置VSFTP服务器

(一)创建配置文件

Vsftp对用户进行了三种类型的分类:

·           匿名用户

这种类型的用户,只能执行ftp提供的服务,它没有shell.

·           本地用户

·           这种类型的用户,即可以执行ftp提供的服务,权限匿名用户

要大,又可以登录系统(有shell

·           虚拟用户

执行ftp提供的服务,权利和本地用户一样,关键是不能登录系统(有shell

 

1、配置文件格式

以“#“的字符开头的行是注释行。每个选项设置为一行,格式为”option=value”,注意”=”两边不能留有空白符。

2、开始配置

vsftpd的配置文件是/etc/vsftpd/vsftpd.conf

 

#============================  关于连接的设定值:

#========== standa lone方式 的设置

#  表示vsftpd是否以standa lone方式启动(以ipv4的方式启动),

#  在正式场合下,应该以这种方式启动。如果这个选项

listen=YES

#  表示vsftpd是否以standa lone方式启动(以ipv6的方式启动),

#  在正式场合下,应该以这种方式启动。如果这个选项

listen_ipv6=YES

#  此选项在vsftpd 是以 stand alone 方式启动模式有效,指定服务器在那个网络接口上提供ftp服务

#  如果没有此选项,那么就在所有的网络接口提供ftp服务。比如当一台服务器有2个网卡,一个网卡

#  连接到内网,1个网卡连接到外网,当如果仅仅想为内网提供ftp服务,这个选项就有效。

#list_address=localhost

#  此选项在vsftpd 是以 stand alone 方式启动模式有效,指定服务器控制连接的监听端口

listen_port=21

#  此选项在vsftpd 是以 stand alone 方式启动模式有效

#  同一时间,同一时间最多允许有多少 client 可以同時连上 vsftpd,如果设置为0,表示任意多个

max_clients=100

#  此选项在vsftpd 是以 stand alone 方式启动模式有效

#  同一时间,同一个IP同一时间最多允许有多少可以同時连上 vsftpd,如果设置为0,表示任意多个

max_per_ip=1

#  vsftpstanda lone方式启动的时候,是否以后台方式运行

#  正式场合下,我认为不应该以后台方式运行。

background=NO

 

 

#========= 以下设置对lone xinet 2种模式都有效

 

#=========FTP主动传输模式设置

#  是否设置主动传输模式(PORT模式)

port_enable=YES

#  PORT模式有效,服务器是否已端口20来和客户端进行数据连接

connect_from_port_20=YES

#  PORT模式有效,设置服务器设置的端口来和客户端进行数据连接

ftp_data_port=20

#  是否启动PORT模式下的安全检查。启动,应该提高安全性。

port_promiscuous=YES

#=========FTP被动传输模式设置

#  是否设置被动传输模式(PASSIVE模式)

pasv_enable=YES

#  PASSIVE模式有效,设置服务器在规定的范围产生端口和客户端进行数据连接,设置0表示任意

#  如果把端口范围设置在比较高的范围内,有助于提高安全性。

pasv_min_port=50000

pasv_max_port=60000

#  是否启动PASV模式下的安全检查。启动,应该提高安全性。

pasv_promiscuous=YES

#  此选项为一个IP地址,作为PASV命令的响应。如果设置,这表明可以使用其他的FTP服务器来

#  进行数据传输,而此FTP服务器只是来进行命令传输。???解释有错误,有什么作用??

#pasv_address=none

 

#======== 超时选项

#  单位是秒,如果client尝试连接我们的vsftpd命令通道超过 60 秒,则不等待,强制 断线咯。

connect_timeout=60

#  如果 clientServer间的资料传送在 300 秒內都无法传送成功,那 Client 的连线就会被我们的

#  vsftpd 强制剔除!

data_connection_timeout=300

#  如果使用者在 300 秒內都沒有命令动作,强制离线!

idle_session_timeout=300

#  在规定监听的时间内,都没有连接发生,就取消连接,这主要保护内存资源。

accept_timeout=60

 

#======== ASCII模式

#  控制是否使用ASCII的格式来下载文件

ascii_download_enable=NO

#  控制是否使用ASCII的格式来上传文件

ascii_upload_enable=NO

 

#======== 其他的连接设置

#  指示vsftpd管理和维护用户会话。

session_support=NO

#  默认情况,当使用ls显示文件目录列表,文件属主都是以数字ID显示,如果设置,那么vsftpd

#  会转化成真实的名字,这样可以方便用户查看。

text_userdb_names=NO

#  设置日期显示格式,默认是GMT格式

user_localtime=YES

#  是否允许列举目录

dirlist_enable=YES

#  是否显示“.”开头的文件

force_dot_files=YES

#  ===提示信息

ftpd_banner=welcome ftp server !!!!

banner_file=/etc/vsftpd.banner_file

dirmessage_enable=YES

message_file=.message

 

#============================ 关于匿名者登入的设定值

#  设定为允许 anonymous 登入我们的 vsftpd 主机!预设是 YES ,底下的所有

#  相关設定都需要将这个设定为anonymous_enable=YES 之后才会生效!

anonymous_enable=YES

#  允許 anonymous 具有下载可读文件的权限。设置NO,表示可以浏览整个服务器的文件系统!

anon_world_readable_only=YES

#  控制匿名用户是否拥有除了上传和新建目录以外的其他权限,如删除,更名等。

anon_other_write_enable=NO

#  是否让 anonymous 具有建立目录的权限?预设值是 NO!如果要设定为 YES

#  那么 anony_other_write_enable 必须设定为 YES !当然在文件系统上,

#  FTP匿名用户必需对新目录的上层目录拥有写权限。

anon_mkdir_write_enable=NO

#  是否让 anonymous 具有上传资料的功能,预设是 NO,如果要能上传,要要满足另两个条件:

#  write_enable=YES 必须设定;在文件系统上,FTP匿名用户对某个目录有写权限。

anon_upload_enable=NO

#  -限制 anonymous 的权限!如果是 077 anonymous 传送过來的档案

#  -权限是 -rw------- 喔!

anon_umask=177

#  是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不

#  同的用户所有,用户由chown_username参数指定。此选项默认值为NO

chown_uploads=NO

#  指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。

#  不推荐使用root用户。

chown_username=ftp

#  将某些特殊的 email address 抵挡住,不让那些 anonymous 登入!

#  如果以 anonymous 登入主机时,不是会要求输入密码吗?密码不是要您

#  输入您的 email address吗?如果你很讨厌某些 email address

#  就可以使用这个设定來将他取消登入的权限!需与下个设定项目配合:

deny_email_enable=YES

#  如果 deny_email_enable=YES 時,可以利用这个设定项目來规定那个

#  email address 不可登入我们的 vsftpd 喔!在上面设定的档案內,

#  一行输入一个 email address 即可!

banned_email_file=/etc/vsftpd.banned_emails

#  当设定为 YES时,表示 anonymous 将会略过密码检验步骤,

#  而直接进入 vsftpd 伺服器內喔!所以一般预设都是 NO 的!

no_anon_password=NO

#  no_anon_password设置NO时候有效,这时再开启密码读取功能

secure_email_list_enable=YES

#  secure_email_list_enable设置YES时候有效,密码就存放在下面指定文件中

email_password_file=/etc/vsftpd.email_passwords

#  -这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,

#  如果是 0 则不限制(由最大带宽所限制),如果您想让 anonymous

#  30 KB/s 的速度,可以设定『anon_max_rate=30000

anon_max_rate=30000

#  匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。 

ftp_username=ftp

#  -设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。

#  -主配置文件中默认无此项,默认值为/var/ftp/

anon_root=/var/ftp/

 

#========================= 关于本地用戶登入者的设定值:

#  这个设定值必须要为 YES 时,在 /etc/passwd 內的帐号才能以

#  本地用戶的方式登入我们的 vsftpd 主机喔!

#  下面所有的关于本地用户的设置都必须在local_enable=YES有效

local_enable=YES

#  为使列入userlist_file的使用者禁止或允许登录FTP服务器,应该设置

userlist_enable=YES

#  该设置具体决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。

#  此选项在userlist_enable 选项启动后才生效。如果为YES,将禁止文件中的用户登录,

#  如果为NO,将只允许在文件中的用户登录FTP服务器。

userlist_deny=YES

#  userlist_enable=YES 时,在这个档案內的帐号都无法使用 vsftpd

#  userlist_enable=NO 时,只有在这个档案內的帐号才能使用 vsftpd

userlist_file=/etc/vsftpd.user_list

#  将使用者限制在自己的家目录之內(chroot)!这个设定在 vsftpd

#  如果设置YES,所有的本地用户,都将限制在家目录。

chroot_local_user=YES

#  chroot_local_user配合使用,好像是使用/etc/passwd中密码来进行验证???

passwd_chroot_enable=YES

#  为使chroot_list_file有效,可以设置为 YES

chroot_list_enable=YES

#  如果 chroot_list_enable=YES 那么就可以设定这个项目了!

#  chroot_local_user=YES,

#chroot_list_file里面规定的实体用戶将不会被限制在自己的家目录內!(chroot)

#  chroot_local_user=NO

#chroot_list_file里面规定的实体用戶会被限制在自己的家目录內!(chroot)

#  一行一个帐号即可!

chroot_list_file=/etc/vsftpd.chroot_list

 

#  定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。

#  使用后面的家目录,来作为起始目录

local_root=

#  实体用戶的传输速度限制,单位为 bytes/second 0 为不限制。

local_max_rate=0

#  定义本地用户的配置文件所在的目录,这个目录下的每个文件名和用户名是相同的。文件的内容会

#  覆盖总配置文件的内容。

user_config_dir=/etc/vsftpd/userconf

#  -限制 本地用户的权限!如果是 077 则 本地用户传送过來的档案

#  -权限是 -rw------- 喔!

local_umask=077

 

#========================= 关于虚拟用戶登入者的设定值

#  若是启动这项功能,所有的非匿名登录者都视为guest

guest_enable=NO

#  定义vsftpdguest用户在系统的用户名

guest_username=ftp

 

 

#========================= 系统安全设置

#==== FTP服务器采用SSL加密方式传输

#启动ftp是否支持ssl,如果设置,那么ftp客户端也必须要使用带ssl协议的软件。

ssl_enable=YES

#  ssl_enable=YES有效

#  是否允许匿名用户通过ssl登录服务器

allow_anon_ssl= YES

#  ssl_enable=YES allow_anon_ssl=YES 有效

#  是否强制匿名用户通过ssl传输数据

force_anon_data_ssl=NO

#  ssl_enable=YES allow_anon_ssl=YES 有效

#  是否强制匿名用户通过ssl登录服务器

force_anon_logins_ssl= YES

#  ssl_enable=YES有效

#  是否强制本地用户通过ssl传输数据

force_local_data_ssl=YES

#  ssl_enable=YES有效

#  是否强制本地用户通过ssl登录服务器

force_local_logins_ssl=YES

#  ssl_enable=YES有效

#  FTP是否支持SSL V2

ssl_sslv2=YES

#  ssl_enable=YES有效

#  FTP是否支持SSL V3

ssl_sslv3=YES

#  ssl_enable=YES有效

#  FTP是否支持SSL TLS V1

ssl_tlsv1=YES

# ssl_enable=YES有效

# 设置对应的ssl证书的位置

rsa_cert_file=/etc/vsftd.ssl.pem

 

#  当显示vsftpd的进程状态的时候,是否详细显示所有的状态,处于安全目的,关闭

setproctitle_enable=NO

#  启动vsftpd是否以启动这个进程的用户的权限执行,如果设置,有安全隐患

run_as_launching_user=NO

#  检查每个连接的用户是否存在合法的shell,设置化,如果用户没有合法的shell,禁止连接,

#  设置应该增加安全,到底实际上有什么安全隐患??????

check_shell=YES

#-当然我们都习惯支援 TCP Wrappers !所以预设为 YES 吧!

tcp_wrappers=YES

#  -这个是 pam 模组的名称,我们放置在 /etc/pam.d/vsftpd 即是这个东东!

pam_service_name=vsftpd

#  是否允许执行FTP相关的写入命令,比如STOR,DELETE,MKD,…

write_enable=YES

#  -如果您的 FTP client "async ABOR" 这个指令时,这个设定才需要启用

#  -一般來说,由这个设定并不安全,所以通常都是将他取消的!

async_abor_enable=NO

#  是否允许使用 ls –R,由于在大型的FTP执行这个命令将耗费大量的资源,因此有安全隐患

ls_recurse_enable=NO

#  是否隐藏文件的所有者信息,如果设置,在执行ls –l 的时候,将会显示件的所有者信息为ftp

hide_ids=YES

# -这个设定项目比较危险一点~当为 YES 时,表示每个建立的连线

# -都会拥有一支 process 在负责,可以增加 vsftpd 的效能。不过,

# -除非您的系统比较安全,而且硬件配置比较高,否则容易耗尽系统资源喔!

# 一般建议为 NO 啦!

one_process_model=NO

# -我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权限

# -相当的低,因此即使被入侵,入侵者只能取得 nobody 的权限喔!

nopriv_user=nobody

#  指向一个空目录,用户对这个目录没有任何权限,当vsftpd不访问文件系统的时候,

#  用户登录后,被限制在这个目录中,通常用户vsftpd的维修呀

#secure_chroot_dir=/usr/share/empty

 

#======配置vsFTP日志使用情况

# vsFTP日志记录采用三种方式,都是以相应的开关来进行配置

 

# === 设置xferlog日志相关的

# 是否开启把日志记录到xferlog

#  当设定为 YES 时,使用者上传下载档案都会被记录起來。记录非常完整

xferlog_enable=NO

# 在xferlog_enable=YES 有效

# -这个是是否以标准的格式写入xferlog日志

xferlog_std_format=YES

# 在xferlog_enable=YES 有效

# -这个是设置写入xferlog的文件名

xferlog_file=/var/log/vsftpd.log

 

# === vstfpd自己的日志相关的

#  是否开启把日志记录到vstfpd自己的日志格式中

dual_log_enable=NO

#  dual_log_enable=YES有效,

#  记录的时候,是否要记录连接等信息

log_ftp_protocal=NO

#  dual_log_enable=YES有效,

#  指定记录的文件名

vsftpd_log_file=/var/log/vsftpd.log

 

#=== syslog方式来记录

#是否开启把日志写入到syslog

syslog_enable=YES

 

(二)为vsftp运行,创建必要的环境

按照vsftp.conf中对应的信息,来创建需要的文件和目录

 

mkdir /usr/share/empty

#把所有需要访问ftp的用户放在ftp组下

addgroup ftp

useradd nobody

#所有访问ftp的用户应该没有shell

adduser -d /var/ftp -g ftp -s /sbin/nologin ftp
mkdir /var/ftp

#也就是ftp用户的家目录属组和属主都是root为了安全。这步还是需要的

chown root.root /var/ftp

#更改权限,去掉属组和其他人的写权限

chmod og-w /var/ftp

#然后创建供匿名用户上传文件的目录,并设定权限

mkdir /var/ftp/pub

chmod o+w /var/ftp/pub

 

阅读(1040) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~