vsftpd基础介绍

vsftpd英文全称very secure file transfer protocol deamon,是FTP服务器端软件中,比较常见的一种。从网上了解到ftp服务器端的软件有vsftpd 、serv-u、proftpd、FileZilla Server等,这里主要介绍vsftpd配置。

vsftpd安装

1、检查是否安装

  1. yum list installed | grep vsftpd

2、未安装,进行yum安装

  1. yum install vsftpd.x86_64

vsftpd配置

1、配置文件

  1. vim /etc/vsftpd/vsftpd.conf

2、配置详解

  1. anonymous_enable=NO
  2. //允许匿名访问,默认为YES,可选值【yes,no
  3. local_enable=YES
  4. //本地用户允许访问,默认为YES,可选值【yes,no
  5. write_enable=YES
  6. //设定允许进行写操作(上传、删除),默认为YES,可选值【yes,no
  7. local_umask=022
  8. //设定权限掩码,默认022,对应的文件上传权限644、目录权限755
  9. anon_upload_enable=NO
  10. //设定匿名访问情况下,允许上传
  11. anon_mkdir_write_enable=NO
  12. //设定匿名访问情况下,允许创建目录
  13. dirmessage_enable=YES
  14. //设定开启目录标语功能
  15. connect_from_port_20=YES
  16. //设定端口20进行数据连接,并不是ftp链接端口.
  17. chown_uploads=YES
  18. //是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
  19. chown_username=whoever
  20. //设定禁止上传文件更改宿主
  21. xferlog_enable=YES
  22. //设定开启日志记录功能
  23. xferlog_file=/var/log/ftp/vsftpd.log
  24. //设置日志目录
  25. xferlog_std_format=YES
  26. //设定日志使用标准的记录格式
  27. idle_session_timeout=600
  28. //设定空闲连接超时时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值600,单位秒。
  29. data_connection_timeout=120
  30. //设定单次最大连续传输时间,这里使用默认。将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用这里的默认值120,单位秒。
  31. nopriv_user=vsftpd
  32. //设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等。
  33. async_abor_enable=YES
  34. //设定支持异步传输功能。
  35. ascii_upload_enable=YES
  36. //设定支持ASCII模式的上传功能。
  37. ascii_download_enable=YES
  38. //设定支持ASCII模式的下载功能。
  39. ftpd_banner=This Vsftp server supports virtual users ^_^
  40. //设定Vsftpd的登陆标语。
  41. deny_email_enable=YES
  42. //可将某些特殊的 email address 抵挡住。如果以anonymous 登录服务器时,会要求输入密码,也就是您的email address, 如果很讨厌某些email address ,就可以使用此设定来取消他的登录权限,但必须与下面的设置项配合
  43. banned_email_file=/etc/vsftpd/banned_emails
  44. //当上面的 deny_email_enable=YES 时,可以利用这个设定项来规定那个email address 不可登录vsftpd 服务器,此文件需用户自己创建,一行一个email address 即可!
  45. ls_recurse_enable=YES
  46. // 是否允许递归查询 大型站点的 FTP 服务器启用此项可以方便远程用户查询
  47. chroot_local_user=YES
  48. chroot_list_enable=YES
  49. //设置为 NO 时,用户登录FTP 服务器后具有访问自己目录以外的其他文件的权限, 设置为 YES 用户被锁定在自己的 home 目录中,vsftpd 将在下面 chroot_list_file 选项值的位置寻找 chroot_list 文件,此文件需用户建立, 再将需锁定在自己home 目录的用户列入其中,每行一个用户
  50. chroot_list_file=/etc/vsftpd/chroot_list
  51. //此文件需自己建立 被列入此文件的用户 在登录后将不能切换到自己目录以外的其他目录 FTP 服务器自动地 chrooted 到用户自己的home 目录下,使得 chroot_list 文件中的用户不能随意转到其他用户的FTP home 目录下,从而有利于FTP 服务器的安全管理和隐私保护
  52. listen=YES
  53. //如果设置为 YES vsftpd 将以独立模式运行,由vsftpd 自己监听和处理连接请求
  54. listen_ipv6=YES
  55. //设定是否支持IPV6
  56. pam_service_name=vsftpd
  57. // 设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即/etc/pam.d/vsftpd 文件,此文件中file=/etc/vsftpd/ftpusers 字段,说明了PAM 模块能抵挡的帐号内容来自文件/etc/vsftpd/ftpusers
  58. userlist_enable=YES/NO
  59. //此选项默认值为NO , 此时ftpusers 文件中的用户禁止登录FTP 服务器;若此项设为YES ,则 user_list 文件中的用户允许登录 FTP 服务器,而如果同时设置了 userlist_deny=YES ,则 user_list 文件中的用户将不允许登录FTP 服务器,甚至连输入密码提示信息都没有,直接被FTP 服务器拒绝
  60. userlist_deny=YES/NO
  61. //此项默认为YES ,设置是否阻扯user_list 文件中的用户登录FTP 服务器
  62. tcp_wrappers=YES
  63. //表明服务器使用 tcp_wrappers 作为主机访问控制方式,tcp_wrappers 可以实现linux 系统中网络服务的基于主机地址的访问控制,在/etc 目录中的hosts.allow hosts.deny 两个文件用于设置tcp_wrappers 的访问控制,前者设置允许访问记录,后者设置拒绝访问记录。例如想限制某些主机对FTP 服务器192.168.57.2 的匿名访问,编缉/etc/hosts.allow 文件,如在下面增加两行命令:vsftpd:192.168.57.1:DENY vsftpd:192.168.57.9:DENY 表明限制IP 192.168.57.1/192.168.57.9 主机访问IP 192.168.57.2 FTP 服务器,此时FTP 服务器虽可以PING 通,但无法连接

关于userlist_enable、userlist_deny的设置,ftpusers和user_list文件的区别

  1. ftpusers:禁止user_list列表中的用户访问FTP
  2. userlist_enable=YESuserlist_deny=YES,禁止user_list列表中的用户访FTP
  3. userlist_enable=YESuserlist_deny=NO 只允许user_list列表中的用户FTP
  4. userlist_enable=NOuserlist_deny=YES ,因设定userlist_enable=NO,忽略user_list文件,user_list不启作用
  5. userlist_enable=NOuserlist_deny=NO ,因设定userlist_enable=NO,忽略user_list文件,user_list不启作用
  6. ftpusers禁止的优先级更高。假设ftpusers禁止woodie用户访问,userlist允许woodie用户访问,则在运行时,用户woodie不能访问ftp.

设置用户

1、创建用户

  1. useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
  2. passwd test //为test设置密码

2、更改用户相应的权限设置

  1. usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp
  2. usermod -s /sbin/bash test //用户test恢复正常
  3. usermod -d /test test //更改用户test的主目录为/test

3、限制用户访问

限制用户只能访问/home/test,不能访问其他路径

  1. 修改/etc/vsftpd/vsftpd.conf如下:
  2. chroot_list_enable=YES //限制访问自身目录
  3. # (default follows)
  4. chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
  5. 编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行
  6. 改完配置文件,不要忘记重启vsFTPd服务器
  7. [root@linuxsir001 root]# /etc/init.d/vsftpd restart

4、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

  1. usermod -s /usr/bin/passwd test //用户telnet后将直接进入改密界面