1、/etc/pam.d/vsftpd
vsftpd 的 Pluggable Authentication Modules (PAM)配置文件,主要用来加强vsftpd服务器的用户认证
[root@server ~]# cat /etc/pam.d/vsftpd #%PAM-1.0 session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth
file 后面接的内容是“限制用户无法使用” vsftpd
2、/etc/vsftpd/ftpusers
所有位于此文件内的用户都不能访问vsftpd服务。为了安全起见,该文件默认已经包括的 root、bin 和 daemon 等系统账号
与PAM模块 配合使用
写入该文件的账号将无法登录FTP
[root@server ~]# cat /etc/vsftpd/ftpusers # Users that are not allowed to login via ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
3、/etc/vsftpd/vsftpd.conf
vsftpd 主配置文件。配置ftp服务器的主要工作文件
4、/etc/vsftpd/user_lsit
该文件包括的用户可能是被拒绝访问vsftpd服务器的,也可能是允许访问的。
取决于vsftpd主配置文件/etc/vsftpd/vsftpd.conf中的“userlist_deny”参数是YES(默认值)还是NO
该文件几乎与ftpusers几乎一模一样,可以看作是vsftpd自定义阻挡访问项目
[root@server ~]# cat /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
5、/vsr/ftp
vsftpd提供服务的文件集散地,它包括一个pub子目录,默认配置下,所有目录都是只读的,只有root用户有写权限
6、/etc/vsftpd/chroot_list
配置介绍 1.配置监听地址与控制端口这文件默认不存在,该文件主要功能,将账号用户与 chroot 建立控制关系
相关配置 chroot_local_user、chroot_list_enable、chrootlist_file
(1)listen_address
listen_address=xxx.xxx.xxx listen_port=2121
测试连接
ftp xxx.xxx.xxx 2121
vsftpd的主配置文件中可以决定FTP采用的模式和数据端口
(1)connect_from _port_20
设置以port模式进行数据传输时使用20端口,“YES:使用”,“NO:不使用”
(2)pasv_address
定义vsftpd服务器使用PASV模式时使用的IP地址。默认未设置
(3)pasv_enable
默认 YES,默认允许使用PASV模式,数据流的被动式连接模式。
(4)pasv_min_port
被动模式,数据端口随机 >= minPort,0不限制
(5)pasv_max_port
被动模式,数据端口随机 <= maxPort,0不限制
(1)ascii_download_enable
设置是否可用ASCII模式下载。默认为"NO"
(2)ascii_upload_enable
设置是否可用ASCII模式上传。默认为"NO"
服务器管理员,不希望FTP客户端占用过多带宽,影响服务器的正常运行
(1)anon_max_rate=5 000
匿名用户的最大传输速率,单位是B/s
(2)local_max_rate=20 000
本地用户的最大传输速率,单位是B/s
【例】限制所有用户的下载速度为60KB/s anon_max_rate=60000 local_max_rate=600006. 配置匿名用户
以下选项控制anonymous(匿名用户) 访问vsftpd服务器
(1)anonymous_enable
“YES"表示启用匿名用户,匿名用户配置选项只有该项启用才生效
(2)anon_mkdir_write_enable
“YES”,匿名用户可以在一个具备写权限的目录中创建新目录,默认为NO
(3)anon_root
匿名用户登录后,将它的目录切换到指定目录,默认为设置
(4)anon_upload_enable
“YES”,匿名用户可以向具备写权限的目录中上传文件,默认为NO
(5)anon_world_readable_only
“默认YES”,代表匿名用户只具备下载权限
(6)ftp_username
指定匿名用户与本地的哪个账号相对应,该用户的/home目录即为匿名用户访问FTP服务器时的根目录。默认是"ftp”
(7)no_anon_password
“YES”,匿名用户不用输入密码。默认值为NO
(8)secure_email_list_enable
“YES”(默认为NO)匿名用户只有采用特定的E-mail作为密码才能访问vsftpd服务
【例】允许匿名用户上传下载文件 anonymous_enable=YES anon_root=/var/ftp anon_upload_enable=YES anon_mkdir_write_enable=YES
(9)deny_email_enable
YES,将某些特殊的Email-address 阻挡,不允许哪些匿名登录,配合下面使用
(10)banned_email_file=/etc/vsftpd/banned_emails
设置不可登录vsftpd的email
(11)no_anon_password
是否略过密码或email校验
vsftpd允许用户以本地用户或者匿名用户登录,并提供了丰富的控制选项
(1)local_enable
是否允许本地用户登录,默认为“YES”,其他配置,需要该项为"YES"
(2)local_root
指定本地用户登录vsftpd服务器时切换到的目录。没有设置默认值
(3)local_umask
设置文件创建的掩码,默认值是“022”,也就是其他用户具有只读属性
【例】只允许本地用户登录192.168.1.30 anonymous_enable=NO local_enable=YES local_root=/home useradd -s /sbin/nologin user1 useradd -s /sbin/nologin user2 passwd user1 passwd user2
(4) chmod_enable
“YES”以本地用户登录的客户端可以通过“SITE CHMOD”命令来修改文件的权限
(5)chroot_local_user
“YES”,本地用户只能访问到它的/home目录,不能切换到/home目录之外
(6)chroot_list_enable
"YES"是否开启切换目录的例外名单,例外用户在"chroot_list_file"指定的文件中(默认是“/etc/vsftpd/chroot_list”)
【例】限制用户目录只能在本人/home目录内 useradd -s /sbin/nologin user1 useradd -s /sbin/nologin user2 chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list vim /etc/vsftpd/chroot_list user1 user28. 配置虚拟用户
基于安全考虑,vsftpd还支持虚拟用户,将非匿名用户统一映射为虚拟用户,统一限制其他用户的访问权限
(1)guest_enable
“YES”(默认NO),所有非匿名用户都映射为一个特定的本地用户。该用户通过“guest_username”命令指定
(2)guest_username
设置虚拟用户映射到本地用户,默认值为“ftp”
vsftpd提供了登录控制选项
(2)cmds_allowed
设置登录vsftpd后,客户端可以执行的命令集合,如果设置了该命令,其他不在列表中的命令都将被拒绝执行
(4)userlist_enable
“YES”时
userlist_deny设置使用/etc/vsftpd/user_list文件来控制用户的访问权限,当userlsit_deny为“NO”时,只有该文件中的用户才能访问vsftpd服务器。
(5)pam_service_name=vsftpd
这个是PAM模块的名称,我们放置在 /etc/pam.d/vsftpd 中的即是这个。
vsftpd 针对目录的访问设置了控制选项
(1)dirlist_enable
设置是否允许用户列目录。默认是YES,允许列目录
(2)dirmessage_enable
设置当用户切换到目录时,是否显示目录切换信息。
YES时,显示“message_file”指定文件中的信息(默认是显示.message文件信息)
(3)message_file
指定显示目录信息,默认是“.message”
切换目录时显示目录下该文件的信息
(4)force_dot_files
设置是否显示以“.”开头的文件,默认值是不显示
(5)hide_ids
隐藏文件的所有组和组信息,匿名用户看到的文件所有者和所有组全部变成ftp
vsftpd 提供了几个用户控制上传,下载的选项
(1)download_enable
设置是否允许下载。默认值是“YES”,允许下载
(2)chown_uploads
"YES"时,所有匿名用户上传的文件,其拥有这都会被设置为
“chown_username”命令指定的用户。默认是 NO
(3)chown_username
设置匿名用户上传的文件的拥有者。默认值“root”
(4)write_enable
"YES"时,FTP客户端登录后允许使用 DELE(删除文件)、RNFR(重命名)和STOR(断点续传)命令
vsftpd 服务器可以让我们设置上传过来的文件权限,以进行安全方面设置。
(1)anon_umask
匿名用户新增文件的umask数值。默认值077
(2)file_open_mode
上传文件的权限,与chmod所使用的数值相同。
如果希望上传的文件可以执行,则设置此值为0777。默认值为0666
(3)local_umask
本地用户新增文件时的umask数值(默认值077)。不过,其他大多数的ftp服务器使用的是022,如果用户希望的话,则可以修改为022
(4)use_localtime
是否使用本地时间,默认使用GMT时间,所以ftp内文件的时间默认会比中国晚8h,建议设置为YES
vsftpd还可以记录服务器的工作状态,以及上传、下载操作
(3)ftpd_banner
登录后,显示欢迎信息等,如果设置了“banner_file”该命令会被忽略
(1)banner_file
设置客户端登录后,服务器显示在客户端的信息,该信息保存在banner_file指定的文件中
(1)dual_log_enable
如果启用,将生成两个相似的日志文件,/var/log/xferlog 和 /var/logrolate.d/vsftpd.log
前者是 Wu-ftpd 类型的传输日志,可以用于标准工具分析;
后者是vsftpd自己类型的日志。默认值NO
vsftpd_log_file
(2)log_ftp_protocol
是否记录所有的FTP命令信息。默认为NO
(3)syslog_enable
设置为 YES 时会将本来应记录在 /var/logrolate.d、vsftpd.log中的信息转而传给syslogd daemon,由syslogd 的配置文件决定存于什么位置。默认值NO
(4)xferlog_enable
如果启用,将会维护一日志文件,用户详细记录上传和下载操作。在默认情况下,这个日志文件是/var/log/xferlog但是也可以通过配置文件中的vsftpd_log_file选项来指定。默认值NO
(5)xferlog_std_format
如果启用,传输日志文件将以标准xferlog的格式书写,如同Wu-ftpd一样。
此格式的日志文件默认/var/log/xferlog,但是也可以通过xferlog_file选项来设定
(6)xferlog_file
/var/log/xferlog,默认是记录到该文件,可以配置
(7)ftpd_banner
当用户连接进入vsftpd时,在FTP客户端显示说明文字
(8)banner_file
指定某个文本文件作为欢迎信息,需要使用ftp命令行客户端才能看到
vsftpd中还有超时定义选项,以防客户端无限制的连接在FTP服务器上,占据系统资源
(1)data_connection_timeout
定义数据传输过程中被阻塞的最长时间(秒为单位,默认300),一旦超出连接将被关闭
(2)idle_session_timeout
定义客户端闲置的最长时间(秒为单位,默认值300),超时后连接将强制关闭
(3)connect_timeout
设置客户端尝试连接vsftpd命令通道的超时时间(可设置为60)
限制在同一时刻内允许连接服务器的数量是一种非常有效的保护服务器并减少负载的方式之一。主配置文件中常用字段有一下两种
(1)max_clients
设置FTP同一时刻的最大连接数,默认值0,不限制最大连接数
(2)max_per_ip
设置每个IP的最大连接数。默认值0,不限制最大连接数
(1)listen
YES表示以 stand alone 方式启动,默认是NO
是否允许监听。
如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
(2)nopriv_user=ftpsecure
我们的 vsftpd 默认以 ftpsecure 作为此服务执行者的权限。
(3)async_abor_enable=YES
是否识别异步ABOR请求。
如果FTP client会下达“async ABOR”这个指令时,这个设定才需要启用
而一般此设定并不安全,所以通常将其取消
(4)ls_recurse_enable
是否允许递归查询。默认为关闭,以防止远程用户造成过量的I/O
(5)listen_ipv6
设定是否支持IPV6。如要同时监听IPv4和IPv6端口,
则必须运行两套vsftpd,采用两套配置文件
同时确保其中有一个监听选项是被注释掉的
(6)tcp_wrappers
是否使用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通,但无法连接
(3)tcp_wrapper
支持TCP Wrappers 的防火墙机制(即可以利用 /etc/hosts.allow 或 /etc/hosts.deny 来作为基础防火墙),所以设置YES
(4)allow_writeable_chroot
https://os.51cto.com/art/201008/222036.htm
https://www.cnblogs.com/hhuai/archive/2011/02/12/1952647.html
自己练习,非线上环境的配置
# 地址 + 端口 # listen_address=106.14.41.60 listen_port=21 # FTP模式 # 被动模式 connect_from_port_20=NO pasv_enable=YES pasv_address=106.14.41.60 pasv_min_port=65500 pasv_max_port=65535 # 主动模式 # connect_from_port_20=YES # pasv_enable=NO # ASCII模式 # ascii会将文件中的例如回车符转为本机格式的回车 ascii_download_enable=NO ascii_upload_enable=NO # 配置负载 # anon_max_rate=60000 # 本地用户 700KB/s local_max_rate=700000 # 本地用户 local_enable=YES local_root=/opt/data chmod_enable=NO chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list # 用户登录配置 ############ pam_service_name=vsftpd # 不设置白名单 userlist_enable=NO # 目录访问控制 dirlist_enable=YES dirmessage_enable=NO force_dot_files=YES hide_ids=NO # 文件操作配置 download_enable=YES write_enable=YES # 新增文件权限关系 local_umask=022 file_open_mode=0777 use_localtime=YES # 日志控制 ftpd_banner=Hello ftpd! dual_log_enable=YES xferlog_enable=YES xferlog_std_format=YES xferlog_file=/var/log/xferlog vsftpd_log_file=/var/log/vsftpd.log # 超时 data_connection_timeout=300 idle_session_timeout=300 connect_timeout=60 # 连接数 max_clients=0 max_per_ip=0 # 其他配置 listen=YES async_abor_enable=NO ls_recurse_enable=NO listen_ipv6=NO tcp_wrappers=NO allow_writeable_chroot=YES



