分类: 系统运维
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 # 当vsftp以standa 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 # 如果 client与Server间的资料传送在 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 # 定义vsftpd的guest用户在系统的用户名 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用户的家目录属组和属主都是root,为了安全。这步还是需要的 chown root.root /var/ftp #更改权限,去掉属组和其他人的写权限 chmod og-w /var/ftp #然后创建供匿名用户上传文件的目录,并设定权限 mkdir /var/ftp/pub chmod o+w /var/ftp/pub |