目录 |
文件服务之二:ftp协议
简介 |
简介
vsftpd全称为”Very Secure FTP Daemon“,意为非常安全的FTP守护进程,vsftpd最初发展理念就是建构一个以安全为重心的FTP服务器。vsftpd 是一个UNIX类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。 比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd安装 |
vsftpd安装
安装方法
-
检查系统是否已经安装vsftpd
[root@localtest ~]# rpm -q vsftpd package vsftpd is not installed
-
安装并检查
yum安装 [root@localtest ~]# yum install vsftpd 已加载插件:fastestmirror, security 启动vsftpd [root@localtest ~]# service vsftpd start 为 vsftpd 启动 vsftpd: [确定] 查看安装版本 [root@localtest ~]# rpm -q vsftpd vsftpd-2.2.2-24.el6.x86_64 查看相关目录 [root@localtest ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/rc.d/init.d/vsftpd #运行脚本 /etc/vsftpd #用户认证配置文件 /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf #主配置文件 /etc/vsftpd/vsftpd_conf_migrate.sh /usr/sbin/vsftpd #主程序文件 ..... /var/ftp #匿名用户数据根目录 /var/ftp/pub 匿名用户(映射为系统用户ftp )登录的根目录位置:/var/ftp 系统用户共享文件位置:用户家目录 虚拟用户共享文件位置:为其映射的系统用户的家目录 centos7下脚本: Systemd Unit File(系统单元文件):/usr/lib/systemd/system/vsftpd.service 查看进程 [root@localtest ~]# ps aux | grep vsftpd root 2062 0.0 0.0 52124 816 ? Ss 01:35 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 查看服务端口 [root@localtest ~]# ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::80 :::* LISTEN 0 32 *:21 *:* [root@localtest ~]# netstat -a | grep LISTEN tcp 0 0 *:ftp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:smtp *:* LISTEN tcp 0 0 *:http *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:smtp *:* LISTEN
设置开机自动启动
[root@localtest ~]# chkconfig vsftpd on #加载/etc/rc.d/init.d/vsftpd脚本到开机启动
centos7:systemctl enable vsftpd.service
开启防火墙ftp端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件
1 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT(允许21端口通过防火墙)
2 -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT(允许20端口通过防火墙)
3 -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000:9045 -j ACCEPT(设置ftp被动模式的端口范围)
配置文件说明
/etc/vsftpd/vsftpd.conf vsftpd的核心配置文件
/etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器,黑名单
/etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本
/var/ftp/ 默认情况下匿名用户的根目录
注:
user_list是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!那么是什么的设置决定了它的作用呢?这就是问题二要解释的。所以简单总结就是:ftpusers和user_list没有任何关系,ftpusers文件总是生效,user_list则取决于userlist_enable和userlist_deny两项配置。
用户类别
匿名用户:anonymous –> ftp,/var/ftp
系统用户:禁止系统用户访问ftp服务,/etc/vsftpd/ftpusers,PAM(/etc/pam.d/vsftpd)
虚拟用户:非系统用户,与登录linux系统的用户账号不是一回事。(不是/etc/passwd中定义的)
配置/etc/vsftpd/vsftpd.conf |
vsftpd.conf
配置前先备份
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak
错误恢复文件
cp /etc/vsftpd/vsftpd.confbak /etc/vsftpd/vsftpd.conf
打开配置文件
vi /etc/vsftpd/vsftpd.conf #配置
查看配置的帮助
man vsftpd.conf
配置项
1 use_localtime=YES #ftp时间和系统同步,如果启动有错误,请注销
2 reverse_lookup_enable=NO #添加此行,解决客户端登陆缓慢问题!默认vsftpd开启了DNS反响解析!这里需要关闭,如果启动有错误,请注销!重要!
3
4 listen_port=21 #默认无此行,ftp端口为21,添加listen_port=2222把默认端口修改为2222,注意:防火墙同时要开启2222端口
5 anonymous_enable=NO #禁止匿名用户
6 local_enable=YES
设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_max_rate=0:本地账户的传输的速率
local_root=/ftp/ 本地账户访问的家目录
7 write_enable=YES #全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)
8 download_enable=YES:是否允许下载
9 local_umask=022 设定上传后文件的权限掩码。
10 anon_upload_enable=NO 禁止匿名用户上传。
11 anon_mkdir_write_enable=NO 禁止匿名用户建立目录。
anon_other_write_enable=YES 是否运行匿名用户修改其他用户的文件。
anon_umask=077 匿名上传后,文件权限600
anon_root=/var/ftp 设置匿名访问的根路径
anon_world_readable_only=YES (是否全局只读)
12 dirmessage_enable=YES 设定开启目录标语功能。与目录下的.message文件结合使用
13 xferlog_enable=YES 设定开启上传下载日志记录功能。
14 connect_from_port_20=YES 设定端口20进行数据连接。
15 chown_uploads=NO 设定禁止上传文件更改宿主。
chown_username=whoever 改变上传文件的属主,上一项为YES
xferlog_enable=YES
16 xferlog_file=/var/log/vsftpd.log 日志保存路径(先创建好文件)
17 xferlog_std_format=YES #使用标准格式
18 async_abor_enable=YES 设定支持异步传输功能。
19 ascii_upload_enable=YES
20 ascii_download_enable=YES
设定支持ASCII模式的上传和下载功能。用HTML和文本编写的文件要用ASCII模式上传,用二进制模式上传会破坏文件,导致文件执行出错。BINARY模式用来传送可执行文件,压缩文件和图片文件。重要!
21 ftpd_banner=Welcome to Awei FTP servers 设定Vsftpd的登陆标语。
22 chroot_local_user=YES 禁止本地用户登出自己的FTP主目录。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
禁止文件中指定的ftp本地用户于其家目录中
23 pam_service_name=vsftpd 设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
24 userlist_enable=YES
启用/etc/vsftpd/user_list文件来控制可登录用户,仅指示用不用,黑名单还是白名单由下面一个参数决定
25 userlist_deny=YES 是否禁用userlist文件中的用户访问 yes意味着黑名单 no意味着白名单
userlist_file=/etc/vsftpd/users_list 此为默认值
max_client=2000 最大允许的客户端连接数
max_per_ip=0 每个客户端的最大连接限制,0代表无限制
anno_max_rate 匿名用户的最大传输速率
local_max_rate 本地用户最大传输速率
26 tcp_wrappers=YES 是否支持tcp_wrappers
27 idle_session_timeout=300 #空闲会话超时设置(上传下载等长时间无操作)
28 data_connection_timeout=1 #空闲1秒后服务器断开
listen=YES :是否监听端口,独立运行守护进程
29 #########################################################
30 以下这些是关于Vsftpd虚拟用户支持的重要配置项目。
31 默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
32 #########################################################
33 guest_enable=YES 是否允许来宾账户登录,设定启用虚拟用户功能。
34 guest_username=vsftpd 指定虚拟用户的宿主用户(这个是我们后面要新建的用户)
35 user_config_dir=/etc/vsftpd/vconf 设定虚拟用户个人Vsftp的配置文件存放路径。 重要!
36 也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的
37 地方就是这些配置文件名必须和虚拟用户名相同。
38 比如说vsftpd.conf的配置文件,你复制到这个目录下,你要mv一下,配置成虚拟用户的名称
39
40 virtual_use_local_privs=YES #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。
41 #当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
pasv_enable=YES : 是否启用被动模式
42 pasv_min_port=9000 (设置被动模式的端口范围,重要)
43 pasv_max_port=9045 (设置被动模式的端口范围,重要)
44 accept_timeout=5 #保持5秒
45 connect_timeout=1 #1秒后重新连接