FTP服务器搭建
接上篇:CentOS7服务搭建----搭建FTP服务器(上)
一、FTP相关配置文件说明
相关配置文件:
- /etc/vsftpd/vsftpd.conf, 主配置文件。
- /etc/vsftpd/ftpusers, 这个文件是用来记录"不允许"登录到FTP服务器的用户,通常是一些系统默认的用户。
- /etc/vsftpd/user_list,其实它的内容跟上面那个文件内容一样,只是在系统对文件vsftpd.conf 进行检测时,会检测到"userlist_deny=YES",因此这个文件必须存在。
在配置FTP服务器时,主要是修改这些文件中的相关语句.先来将vsftpd.conf文件解析清楚,就知道需要如何配置满足我们的需求了
1.1、vsftpd.conf:主配置文件
- # 配置文件/etc/vsftpd/vsftpd.conf示例
- #
- # 允许匿名FTP?(请注意-如果您对此发表评论,则默认情况下允许)。
- anonymous_enable=YES //是否允许anonymous登录FTP服务器,默认是允许的。
- # 取消注释以允许本地用户登录,默认是允许。
- local_enable=YES
- # 是否允许用户具有在FTP服务器文件中执行写的权限,默认是允许
- write_enable=YES
- # 设置本地用户的文件生成掩码为022,默认是077
- local_umask=022
- # 是否允许匿名FTP用户上载文件。只有在激活上述全局写入启用时,此操作才有效。另外,显然需要创建一个FTP用户可写的目录
- #anon_upload_enable=YES
- # 是否允许匿名账户在FTP服务器中创建目录.默认是不允许。
- #anon_mkdir_write_enable=YES
- # 激活目录信息,当远程用户更改目录时,将出现提示信息。
- dirmessage_enable=YES
- # 启用上传和下载日志记录.
- xferlog_enable=YES
- # 启用FTP数据端口的连接请求.
- connect_from_port_20=YES
- # 设置匿名文件属主转变为指定用户及指定的用户名。注意!不建议匿名用户使用根目录!
- #chown_uploads=YES
- #chown_username=whoever
- #可以重写日志文件的位置。默认值如下所示
- #xferlog_file=/var/log/vsftpd.log
- # 是否使用标准的ftpd xferlog日志文件格式
- xferlog_std_format=YES
- # 设置空闲的用户会话中断时间,默认是10分钟.
- #idle_session_timeout=600
- # 设置数据连接超时时间,默认是120秒.
- #data_connection_timeout=120
- # 运行vsftpd需要的非特权系统用户默认是nobody,可以指定
- #nopriv_user=ftpsecure
- # 是否允许运行特殊的ftp命令async ABOR.
- #async_abor_enable=YES
- # 是否使用ascii码方式上传文件
- #ascii_upload_enable=YES
- # 是否使用ascii码方式下载文件
- #ascii_download_enable=YES
- # 定制欢迎信息:
- #ftpd_banner=Welcome to blah FTP service.
- # 是否允许禁止匿名用户使用某些邮件地址,默认是允许的。
- #deny_email_enable=YES
- # 禁止邮件地址的文件路径
- #banned_email_file=/etc/vsftpd.banned_emails
- # 是否将系统用户限止在自己的home目录下,默认不限制,如果设置chroot_list_enable=YES,那么只允许/etc/vsftpd.chroot_list中列出的用户被限制.如果希望所有的本地用户都执行者chroot,可以增加一行:chroot_local_user=YES
- #chroot_list_enable=YES
- #chroot_list_file=/etc/vsftpd.chroot_list
- #您可以激活内置ls的“-R”选项。默认禁用,以避免远程用户在大型站点上导致过多的I/O。但是,一些客户端的批量操作(如“ncftp”和“mirror”)需要“-R”选项,这样的场景就需要开启了。.
- #ls_recurse_enable=YES
- # 设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下.
- pam_service_name=vsftpd
- # 用户列表中的用户是否允许登录FTP服务器,默认是不允许
- userlist_enable=YES
- # 使vsftpd 处于独立启动模式
- listen=YES
- # 使用tcp_wrqppers作为主机访问控制方式
- tcp_wrappers=YES
1.2、/etc/vsftpd/ftpusers文件说明
这个文件是用来记录"不允许"登录到FTP服务器的用,通常是一些系统默认的用户。
默认情况下,root和它以下的用户是不允许登录FTP服务器的.可以将不允许登录的用户添加到这里来.但切记每个用户都要单独占用一行.
ftpusers文件内容
1.3、/etc/vsftpd/user_list文件说明
其实它的内容跟上面那个文件内容一样,只是在系统对文件vsftpd.conf 进行检测时,会检测到"userlist_deny=YES",因此这个文件必须存在.下面是这个文件的内容.
user_list文件内容
注意⚠️:如果userlist_deny=NO,则仅允许此文件中的用户;如果userlist_deny=YES(默认),则从不允许此文件中的用户,甚至不提示输入密码。注意,默认的vsftpd pam config还检查/etc/vsftpd/ftpusers以查找被拒绝的用户。
二、虚拟用户的管理
(1) 创建虚拟用户认证及主目录等
系统用户登陆ftp服务,同时也可以登陆系统,所以考虑到系统安全,一般企业使用虚拟用户登录ftp服务器器,所以需要建立ftp虚拟用户,使这些用户只能登陆ftp
建vsftpd使用的系统用户mugo,禁止ssh登录。创建之后所有虚拟用户使用这个系统用户访问文件(所有的虚拟用户其实在系统中都需要有一个映射的用户,但这个用户仅仅作为在系统中的映射作用,所以设置为不可ssh登录系统,不用设置密码,保护系统)
命令:
useradd mugo -s /bin/false
建立映射用户
创建虚拟用户主目录,比如虚拟用户叫mftp01、mftp02和mftp03(每个虚拟用户都可以有自己的主目录,建议千万别吧使用系统的主目录作为任何虚拟用户的主目录),执行下面的命令
mkdir -p /var/ftpdata/mftp0{1,2}
新建虚拟账户主目录
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root及系统保留用户做用户名,系统保留)
建立虚拟用户名单
根据这个文件创建数据库文件
创建名单数据库文件
启用这个数据库文件,db=/etc/vsftpd/vuser,后面文件名不能是vuser.db,如果写成db=/etc/vsftpd/vuser.db 则实际会将文件识别成loginusers.db.db,required表示用户名认证必须正确,否者直接pass
启用数据库文件
创建虚拟用户配置文件目录
创建虚拟用户配置目录
创建虚拟用户配置用(一个户名对应一个文件)。
虚拟用户mftp01的配置:
虚拟用户mftp01的配置
注意⚠️:这些虚拟账户的配置每一条后面都不能有任何多余的东西,包括空格也不行,多一个都不想,否则虚拟账户登录一直会失败。
虚拟用户mftp02的配置:
虚拟用户mftp02的配置
虚拟用户mftp03的配置:
虚拟用户mftp03的配置
注意⚠️:此例中的mftp03使用的主目录是mftp01的,也即说明,主目录可以共享
(2) 修改主配置文件/etc/vsftpd/vsftpd.conf
文件内容修改为:
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- local_umask=022
- #anon_upload_enable=YES
- #anon_mkdir_write_enable=YES
- dirmessage_enable=YES
- xferlog_enable=YES
- connect_from_port_20=YES
- #chown_uploads=YES
- #chown_username=whoever
- #xferlog_file=/var/log/xferlog
- xferlog_std_format=YES
- #idle_session_timeout=600
- #data_connection_timeout=120
- #nopriv_user=ftpsecure
- #async_abor_enable=YES
- ascii_upload_enable=YES
- ascii_download_enable=YES
- #ftpd_banner=Welcome to blah FTP service.
- #deny_email_enable=YES
- #banned_email_file=/etc/vsftpd/banned_emails
- chroot_local_user=YES
- #chroot_list_file=/etc/vsftpd/chroot_list
- #ls_recurse_enable=YES
- listen=YES
- listen_ipv6=NO
- pam_service_name=vsftpd
- userlist_enable=YES
- tcp_wrappers=YES
- # 虚拟用户启用
- guest_enable=YES
- guest_username=mugo
- user_config_dir=/etc/vsftpd/vuser_conf/
- allow_writeable_chroot=YES
三、FTP服务定制(安全)
ftp服务配置文件:/etc/vsftpd/vsftpd.conf
这里主要就是限制ftp的上传速度,连接超时时间等等,都是在/etc/vsftpd/vsftpd.conf文件中配置
主要有以下内容:
- use_localtime=YES # 使用本地时间
- max_per_ip=10 # 最多允许同一账号在10个不同的IP登录
- max_clients=10 # 最多连接数
- local_max_rate=2500000 # 最大下载速度(字节/秒)
- idle_session_timeout=300 # session超时时间(秒)
- data_connection_timeout=300 # 数据连接超时时间(秒)
- virtual_use_local_privs=YES # NO时,虚拟用户和匿名用户有相同的权限,默认是NO
- pasv_enable=YES # 开启pasv被动模式
- pasv_min_port=40000 # 开启pasv被动模式的最小端口
- pasv_max_port=40010 # 开启pasv被动模式的最大端口
- pasv_promiscuous=YES # 这个是用于检测pasv的安全检查,YES为关闭安全检查
- ......
按需加入在配置文件中即可。