220 likes | 345 Views
10 FTP 服务器. 10-4-1 FTP服务简介 10-4-2 Vsftpd服务器配置基础 10-4-3 配置Vsftpd服务器 10-4-4 测试Vsftpd服务器. <-- FTP 请求. FTP 响应 -->. <-- FTP 请求. <-- 上传 数据. <-- 数据连接 -->. --> 下载数据. FTP 客户机. FTP 客户机. FTP 服务器. 10-4-1 FTP服务简介.
E N D
10 FTP服务器 • 10-4-1 FTP服务简介 • 10-4-2 Vsftpd服务器配置基础 • 10-4-3 配置Vsftpd服务器 • 10-4-4 测试Vsftpd服务器
<-- FTP请求 FTP响应--> <-- FTP请求 <-- 上传数据 <-- 数据连接 --> --> 下载数据 FTP客户机 FTP客户机 FTP服务器 10-4-1 FTP服务简介 • 用户利用FTP客户机程序连接到远程主机上的FTP服务器程序。然后向服务器程序发送命令,服务器程序执行用户所发出的命令,并将执行结果返回给客户机。 • 在此过程中,FTP服务器与FTP客户机之间建立两个连接:控制连接和数据连接。 • Linux系统中常用的FTP服务器软件有3种: • Vsftpd • Proftpd • Wu-ftpd。
10-4-2 Vsftpd服务器配置基础 1、Vsftpd服务器的用户 • 本地用户 本地用户默认进入其个人主目录,并可以切换到其他有权访问的目录,还可上传和下载文件。 • 匿名用户 匿名用户只能下载/var/ftp/目录下的文件。 2、 /etc/vsftpd/vsftpd.conf ---- 主配置文件 /etc/init.d/vsftpd ---- 启动脚本 3、/etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件 • /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
VSFTPD的启动与停止 • VSFTPD可以单独(Standalone)方式运行,可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD。 • 命令如下: • /etc/init.d/vsftpd start|stop|restart
VSFTPD的设置选项 • ASCII模式 • 默认情况下,VSFTPD是禁止使用ASCII传输模式。即使FTP客户端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在实际传输文件时,还是使用二进制方式。下面选项控制VSFTPD是否使用ASCII传输模式。 • ascii_upload_enable=YES|NO • 控制是否允许使用ascii模式上传文件,YES允许,NO不允许,默认为NO。 • ascii_download_enable=YES|NO • 控制是否允许使用ascii模式下载文件,YES允许,NO不允许,默认为NO。
VSFTPD的设置选项 • 超时选项 • idle_session_timeout= • 空闲(发呆)用户会话的超时时间,若是超出这时间没有数据的传送或是指令的输入,则会强迫断线。单位为秒,默认值为300。 • data_connection_timeout= • 空闲的数据连接的超时时间。默认值为300 秒。 • accept_timeout=numerical value • 接受建立联机的超时设定,单位为秒。默认值为60。 • connect_timeout=numerical value • 响应PORT方式的数据联机的超时设定,单位为秒。默认值为60。以上两个选项针对客户端的,将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接。
VSFTPD的设置选项 • 负载控制 • max_clients=numerical value • 此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义了FTP服务器最大的并发连接数,当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。 • max_per_ip=numerical value • 此参数在VSFTPD使用单独(standalone)模式下有效。此参数定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将影响到象网际快车这类的多进程下载软件。默认值为0,表示不限制。 • anon_max_rate=value • 设定匿名用户的最大数据传输速度value,以Bytes/s为单位。默认无。
VSFTPD的设置选项 • 用户选项-匿名用户 • anonymous_enable=YES|NO • 控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。 • ftp_username= • 匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。 • no_anon_password=YES|NO • 控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。
VSFTPD的设置选项 • 用户选项-匿名用户 • anon_root= • 设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。 注意:匿名用户一般使用ftp的用户身份,故登录的主目录也是ftp用户的主目录 • anon_world_readable_only=YES|NO • 控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。 • anon_upload_enable=YES|NO • 控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。
VSFTPD的设置选项 • 用户选项-匿名用户 • anon_mkdir_write_enable=YES|NO • 控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。 • anon_other_write_enable=YES|NO • 控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。 • chown_uploads=YES|NO • 是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。 • chown_username=whoever • 指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。
VSFTPD的设置选项 • 用户选项-本地用户 • local_enable=YES|NO • 控制vsftpd所在的系统的用户是否可以登录vsftpd。默认值为YES • local_root= • 定义所有本地用户的根目录。当本地用户登入时,将被更换到此目录下。默认值为无。 • user_config_dir= • 定义用户个人配置文件所在的目录。用户的个人配置文件为该目录下的同名文件。个人配置文件的格式与vsftpd.conf格式相同。例如定义 user_config_dir=/etc/vsftpd/userconf,并且主机上有用户xiaowang,lisi,那我们可以在 user_config_dir的目录新增名为xiaowang、lisi的两个文件。当用户lisi 登入时,VSFTPD则会读取user_config_dir下lisi这个文件中的设定值,应用于用户lisi。默认值为无。
VSFTPD的设置选项 • 用户登录控制 • pam_service_name=vsftpd • 指出VSFTPD进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。 • /etc/vsftpd.ftpusers • VSFTPD禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。 • userlist_enable=YES|NO • 此选项被激活后,VSFTPD将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,VSFTPD查到该用户名在列表,VSFTPD就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值YES。
VSFTPD的设置选项 • 用户登录控制 • userlist_file=/etc/vsftpd.user_list • 指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。 • userlist_deny=YES|NO • 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。 • tcp_wrappers=YES|NO • 在VSFTPD中使用TCP_Wrappers远程访问控制机制,默认值为YES。
VSFTPD的设置选项 • 目录访问控制 • chroot_list_enable=YES|NO • 锁定某些用户在自己目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自己目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。 • chroot_list_file=/etc/vsftpd/chroot_list • 指出被锁定在自己目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/chroot_list。此选项默认不设置。
VSFTPD的设置选项 • 目录访问控制 • chroot_local_users=YES|NO • 将本地用户锁定在自己目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自己目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、 shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。 • passwd_chroot_enable • 当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自己目录字段。默认值为NO。
VSFTPD的设置选项 • 文件操作控制 • hide_ids=YES|NO • 是否隐藏文件的所有者和组信息。YES,当用户使用“ls -al”之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。 • ls_recurse_enable=YES|NO • YES,允许使用"ls -R" 指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用"ls -R"会消耗大量系统资源。默认值为NO。 • write_enable=YES|NO • 控制是否允许使用任何可以修改文件系统的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。 • secure_chroot_dir= • 这选项指向一个空目录,并且ftp用户对此目录无写权限。当vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。
VSFTPD的设置选项 • 新增文件权限设定 • anon_umask= • 匿名用户新增文件的umask 数值。默认值为077。 • file_open_mode= • 上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。 • local_umask= • 本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果您的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。
VSFTPD的设置选项 • 提示信息 • ftpd_banner=login banner string • 此参数定义了登录欢迎语字符串。用户可以自行修改。预设值为无。 • banner_file=/directory/vsftpd_banner_file • 此项指定一个文本文件,当使用者登入时,会显示此该文件的内容。与ftpd_banner相比, banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file选项将取代ftpd_banner选项。 • dirmessage_enable=YES|MO • 控制是否启用目录提示信息功能。YES启用,NO不启用,默认值为YES。此功能启用后,当用户进入某一个目录时,会检查该目录下是否有message_file选项所指定的文档。 • message_file= • 此选项,仅在dirmessage_enable选项激活方生效。默认值为.message。
VSFTPD的设置选项 • 日志设置 • xferlog_enable=YES|NO • 控制是否启用一个日志文件,用于详细记录上传和下载。该日志文件由xferlog_file选项指定。默认值为NO,但简单配置文件中激活此选项。 • xferlog_file= • 这个选项设定记录传输日志的文件名。默认值为/var/log/vsftpd.log。 • xferlog_std_format=YES|NO • 控制日志文件是否使用xferlog的标准格式,如同wu-ftpd一样。使用xferlog格式,可以重新使用已经存在的传输统计生成器。然而,默认的日志格式更为可读性。 • log_ftp_protocol=YES|NO • 当此选项激活后,所有的FTP请求和响应都被记录到日志中。提供此选项时,xferlog_std_format不能被激活。这个选项有助于调试。默认值为NO。
VSFTPD的具体应用方法 • 允许匿名用户上传文件 • 在vsftpd.conf文件中修改或增加以下选项: write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES • 然后创建供匿名用户上传文件的目录,并设定权限: # mkdir /var/ftp/incoming # chmod o+w /var/ftp/incoming • 由于匿名用户(ftp)上传文件,需要对incoming目录进行操作,而incoming为root所有,匿名用户(ftp)对于incoming来说是其他用户,所以要加入其他用户(o)的写权限。
10-4-4 测试Vsftpd服务器 • Windows环境和Linux环境都可以使用ftp命令行程序 • 格式:ftp [域名|IP地址] [端口号] • 功能:启动ftp命令行工具,如果指定FTP服务器的域名或IP地址,则建立与FTP服务器的连接。否则需要在ftp提示符后,输入“open 域名|IP地址”格式的命令才能建立与指定FTP服务器的连接。 • 与FTP服务器建立连接后,用户需要输入用户名和口令,验证成功后用户才能对FTP服务器进行操作。无论验证成功与否,可将出现ftp提示符“ftp >”,等待用户输入相应的子命令。
ftp命令行常用命令 • open IP地址 与指定FTP服务器建立连接 • close 关闭与FTP服务器的连接 • Ls 查看FTP服务器当前目录的文件 • cd 目录名 切换到FTP服务器中指定的目录 • get 文件名 从FTP服务器下载指定的文件 • put 文件名 向FTP服务器上传指定的文件 • mkdir 目录名 在FTP服务器新建目录 • delete 文件名 删除FTP服务器中指定的文件 • bye 退出FTP命令行