1、基本网络配置
关于网络配置,请根据各系统自行配置,该示例为CentOS7系统
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-XXX
TYPE=Ethernet
# 使用静态IP
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV4INIT=yes
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=95824c7c-a638-4c5f-880b-75e6ae32369a
DEVICE=eno16777736
# 开机启动网络
ONBOOT=yes
# IP地址
IPADDR=192.168.133.13
# 子网掩码
PREFIX=24
# 网关
GATEWAY=192.168.133.1
# DNS
DNS1=114.114.114.114
DNS2=8.8.8.8
2、vsftpd相关配置文件介绍
-
/etc/vsftpd/vsftpd.conf
这是vsftpd的主要配置文件,其实也就这一个配置文件,其他的配置文件都是辅助作用。在这个文件中,参设的配置格式为:
参数=设定值
(切记:在 = 两边不能有空格存在) -
/etc/pam.d/vsftpd
这是 vsftpd 使用 PAM 模组时的配置文件,其实就是关联下面的 /etc/vsftpd/ftpusers文件,其内容如下:
#%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
-
/etc/vsftpd/ftpusers
这个文件就是和上面策略配合使用的,将禁止登录FTP的用户名写入到该文件中,一行一个
-
/etc/vsftpd/user_list
这个文件是否生效,要取决于 vsftpd.conf 中的两个参数,分别是
userlist_enable
和userlist_deny
,其作用与 ftpusers 相同,但是具体功能还要配合 vsftpd.conf 中的userlist_deny={YES/NO}
而定 -
/etc/vsftpd/chroot_list
这个文件默认是不存在的,需要自己手工创建,这个文件的主要作用就是将某些账号限定在自己的家目录下,这个文件是否生效,要取决于 vsftpd.conf 中的两个参数,分别是
chroot_list_enable
和chroot_list_file
-
/var/ftp/
这个目录是匿名用户的默认登录目录
3、FTP服务器搭建与基础配置
更多配置参见:vsftpd常用参数简介
- 添加用户,且用户不能登陆系统只能登录FTP
# 创建一个用户,且该用户不能登录系统
# 创建用户前,确认/etc/shells文件中是否包含有/sbin/nologin,如果不存在,先添加,否则用户登录会报错
[root@localhost ~]# useradd test -s /sbin/nologin
- 安装vsftp及配置相关文件
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# cd /etc/vsftpd/
# 添加不能跨目录的用户,建议将FTP组的用户全部添加
[root@localhost vsftpd]# vi chroot_list
# 当userlist_enable=YES时,删除需要登录的用户名
[root@localhost vsftpd]# vi user_list
# 当userlist_enable=YES时,删除需要登录的用户名
[root@localhost vsftpd]# vi ftpusers
- 修改vsftpd配置文件(主动模式)
[root@localhost vsftpd]# vi vsftpd.conf
# 开启匿名登录
anonymous_enable=YES
# 开启本地用户登录
local_enable=YES
#本地用户写权限
write_enable=YES
# 上传文件后默认权限
local_umask=022
dirmessage_enable=YES
# 开启下载日志
xferlog_enable=YES
# 链接端口
connect_from_port_20=YES
# 标准日志格式
xferlog_std_format=YES
# 限制用户不能切换目录
chroot_local_user=YES
# 被限制的用户列表
chroot_list_enable=YES
# 列表存放位置
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
# 服务名称
pam_service_name=vsftpd
# 启用登录用户限制
userlist_enable=YES
tcp_wrappers=YES
# 匿名用户登录目录
anon_root=/var/ftp
# 使用本地时间
use_localtime=YES
- 启动FTP服务并设置服务开机启动
[root@localhost vsftpd]# systemctl start vsftpd
[root@localhost vsftpd]# systemctl enable vsftpd
4、使用SSL加密数据传输
- 创建SSL证书
[root@localhost vsftpd]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/vsftpd/vsftpd.key -out /etc/vsftpd/vsftpd.pem
- 在vsftpd.conf中添加SSL安全配置
将以下内容添加到 /etc/vsftpd/vsftpd.conf
文件末尾
ssl_enable=YES
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
ssl_tlsv1_1=YES
ssl_tlsv1_2=YES
# 配置证书文件
rsa_cert_file=/etc/vsftpd/vsftpd.pem
# 配置私钥文件
rsa_private_key_file=/etc/vsftpd/vsftpd.key
- 重启FTP服务
[root@localhost vsftpd]# systemctl restart vsftpd
5、vsftpd常用参数简介
5.1、服务器环境相关设置
-
connect_from_port_20=YES |NO
主动链接的端口号(做数据传输使用) -
listen_port=21
vsftpd 监听端口(做指令传输使用) -
dirmessage_enable=YES |NO
当访问者进入到目录时显示的提示信息,提示文件默认是目录下的 .message 文件 ,也可以通过下面的参数进行修改 -
message_file=.message
当 dirmessage_enable=YES 时,可以使用这个文件设定相关的提示信息 -
listen=YES |NO
如果设定为YES,那么 vsftpd 是以 stand alone(独立进程模式)的方式来运行,以应对繁忙的请求任务,默认为 NO
-
pasv_enable=YES |NO
是否启用被动模式 -
use_localtime=YES |NO
使用本地时间,一般设置为 YES -
write_enable=YES |NO
如果允许上传文件,该选项需要开启 -
connect_timeout=60
链接超时时间,在主动模式下,如果在设定时间内没有得到相应,服务器将断开连接 -
accept_timeout=60
链接超时时间,在被动模式下,如果在设定时间内没有得到相应,服务器将断开连接 -
data_connection_timeout=300
数据传输超时,在建立链接后,在设定时间内,如果没有数据传输,服务器将断开链接 -
idle_session_timeout=300
会话超时,在设定时间内,没有会话进行,服务器将强制断开链接 -
max_clients=0
最大连接数,如果 vsftpd 是以 stand alone 方式启动的,可以限制客户端同时在线的数量 -
max_per_ip=0
与上面的参数相似,该参数限制同一 IP 地址最多能有多少个客户端在线 -
pasv_min_port=0, pasv_max_port=0
被动模式下监听端口范围,0 代表不限制 -
ftpd_banner=提示信息
当客户端链接到服务器时,展现给各户端的一些提示信息,可以使用下面的参数配置 -
banner_file=/path/file
当客户端链接到服务器时,展现给各户端的一些提示信息
5.2、与本地用户相关设置
-
guest_enable=YES |NO
当设定为 YES 时,所有的本地用户都被将设定为 gues 用户(默认为NO)
-
guest_username=ftp
在 guest_enable=YES 时生效,指定 gues 用户名称 -
local_enable=YES |NO
只有该参数设置为 YES 时,在 /etc/passwd 内的用户才能访问服务器 -
local_max_rate=0
本地用户文件传输速率设置,0 表示不限制,单位:字节/每秒 -
chroot_local_user=YES |NO
是否将访问者限定在自己的家目录,如果是 YES 代表用户只能在自己的家目录下活动,不能跨越家目录;如果是 NO,那么就没有限制。不过还得配合下面的参数设置才行,一般设置为 YES -
chroot_list_enable=YES |NO
是否启用 chroot 写入列表,与下面的 chroot_list_flie 有关,一般设置为YES ,否则下面的参数将无效 -
chroot_list_file=/etc/vsftpd.chroot_list
如果 chroot_list_enable=YES 那么该文件才有效,该参数与 chroot_local_user 有关 -
userlist_enable=YES |NO
是否使用 vsftpd 限制机制来限制不允许登录的账号,与下面的设置有关 -
userlist_deny=YES |NO
当 userlist_enable=YES 时才会生效,若该项设置为 YES 时,下面参数指定文件中的账号就不能登录该服务器 -
userlist_file=/etc/vsftpd/user_list
若上面 userlist_deny=YES 时,该文件中的用户就不能访问该服务器
5.3、匿名用户相关设置
- anonymous_enable=YES |NO
是否允许匿名用户登录,只有该参数设置为 YES 时,以下参数才有效 - anon_world_readable_only=YES |NO
是否允许匿名用户下载文件 - anon_other_write_enable=YES |NO
是否允许匿名用户有“写”之外的权限,包括删除、修改、重命名的权限 - anon_mkdir_write_enable=YES |NO
匿名用户是否有创建文件的权限(不建议开启) - anon_upload_enable=YES |NO
匿名用户是否有上传的权限(不建议开启) - deny_email_enable=YES |NO
禁止Email登录,需要配置下面的配置 - banned_email_file=/etc/vsftpd/banned_emails
如果 deny_email_enable=YES 时,在该文件中存在的Email将不能登录服务器,一行一个 - no_anon_password=YES |NO
匿名用户登录是否需要密码 - anon_max_rate=0
匿名用户的传输速率,0 表示不限制 - anon_umask=077
匿名用户上传文件的默认权限
5.4、系统安全相关设置
- ascii_download_enable=YES |NO
是否允许使用ASCII格式下载文件 - ascii_upload_enable=YES |NO
是否允许使用ASCII格式上传文件 - one_process_model=YES |NO
是否为每个会话开启一个独立的进程(虽然可以提高效率,但是比较消耗系统资源,因此不建议开启) - tcp_wrappers=YES |NO
是否支持 tcp_wrappers - xferlog_enable=YES |NO
是否启用 xferlog 日志记录 - xferlog_file=/var/log/xferlog
xferlog 日志路径 - xferlog_std_format=YES |NO
是否使用 xferlog 日志标准格式 - dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log
是否启用双日志,及另一份日志的路径 - pam_service_name=vsftpd
pam 模组的名称,就是在 /etc/pam.d/vsftpd 这个名字