FTP
FTP file transfer protocol
FTP的用户及设置注意事项
1、本地用户(存在于ftp服务器上的用户)和其密码登录
默认允许实名用户登录到该用户的家目录下且有下载和写的权限;系统默认的不对本地
用户进行限制,故它能够针对整个文件系统做任何他具有权限的工作;因此,如果我们要开放本地用户,就要对其进行限制----chroot
2、guest用户 默认关闭,开启后本地用户登录后都会变为ftp
3、匿名用户(anonymous)
使用用户名anonymous或者ftp登录,密码空
默认登录到/var/ftp/目录下并具有下载权限
Ftp的工作方式与使用到的端口
两个通道:
命令通道:负责连接的建立和命令的传输 端口号:21
数据通道:负责传输数据。 默认是二进制传输, ascII编码
主动模式:端口号:20
被动模式:可自定义端口号。
主动模式工作流程
三次握手之后,建立命令通道的连接,当需要传输数据时,服务器主动建立与客户端的数据通道的连接
被动模式工作流程
---------------------------------,----------------,服务器端开启某个端口,继而与客户端连接并进行数据的传输。
vsftp (very security file transfer protocol)
安装
yum install vsftpd
软件包结构
/etc/logrotate.d/vsftpd 日志
/etc/pam.d/vsftpd pam是 linux系统用户认证模块
/etc/rc.d/init.d/vsftpd 启动脚本
etc/vsftpd/ftpusers 定义不能登录ftp server的用户
/etc/vsftpd/user_list 定义用户列表
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd/vsftpd_conf_migrate.sh 升级用的,保留原配置文件
主配置文件
/etc/vsftpd/vsftpd.conf
1)与服务器环境相关的设置:
connect_from_port_20=YES 定义是否开启主动连接模式,主动连接模式的数据端口为20
listen_port=21 定义命令通道的端口号
dirmessage_enable=YES 定义初次切换到某个目录中的欢迎信息(存放在该目录中的.message文件中,这个文件要手动创建。仅适用于命令行ftp ftpserverip的方式登陆)
listen=YES 以stand alone(独立式服务)的方式来启动ftp
pasv_enable=YES 是否开启被动模式,单词passive被动
use_localtime=YES 是否使用本地时间,默认是格林尼治GTM时间
write_enable=YES 是否可写,具体能否可写,还要看文件系统上对应目录的权限
connect_timeout=60 在主动模式下,服务端发出的连接信息在60s内得不到相应,断开连接
accept_timeout=60 在被动模式下,服务端开启数据传输的端口后,在60s内无连接请求,断开连接
data_connection_timeout=300 表示数据连接后数据连接等待的空闲时间超时,超过时间后,数据连接将断开连接
idle_session_timeout=300 命令通道建立超过300s客户端无任何动作,断开连接
max_clients=0 最多能有多少个客户端连接服务器,默认值0,意为不限制。
max_per_ip=0 每个ip地址最多允许有几个连接
pasv_min_port=0 被动模式数据通道的最小端口号,默认值0,意为使用任何端口
pasv_max_port=0 被动模式数据通道的最大端口号
ftpd_banner=’欢迎信息’ 设置登陆到ftp服务器显示的欢迎信息
banner_file=文件路径 上述欢迎信息存放的文件
2)与本地用户相关的设置
guest_enable=YES 是否启用访客模式
guest_username=ftp 访客以谁的身份登陆到ftp服务器,该例为ftp用户,默认为ftp
local_enable=YES是否允许本地用户登录
chroot_local_user=YES 是否要对本地用户chroot,具体该用户会不会被chroot还要看下面二项的设置
chroot_list_enable_=YES 是否开启chroot列表
chroot_list_file=/etc/vsftpd/chroot_list 被chroot的用户存放文件
如果chroot_local_user=yes,在chroot_list_enable=yes的前提下,chroot_list_file中记录的是不被chroot的本地用户
如果chroot_local_user=no,在chroot_list_enable=yes的前提下,chroot_list_file中记录的是被chroot的本地用户
userlist_enable=YES 是否启用用户列表
userlist_deny=YES 是否拒绝用户列表中出现的账户
userlist_file=/etc/vsftpd/user_list 指定用户列表文件
如果userlist_deny=YES,那么/etc/vsftpd/user_list中出现的用户不允许登陆ftp服务器
如果userlist_deny=NO,那么只允许/etc/vsftpd/user_list中出现的用户登陆ftp服务器
local_max_rate=0 本地用户最大的上传下载速率bytes/s。默认0,即不限制速率
3)匿名用户相关设置
anonymous_enable=YES 是否允许匿名用户登录
anon_root=/pub 将默认匿名用户的根目录(/var/ftp)更改为/pub
vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的,您可以去读一下vsFTPd的文档就明白的了;否则也不能称为最安全的FTP服务器了,对不对?
anon_other_write_enable=NO 是否允许匿名用户除了具有建立目录的权限外,还能删除与修改服务器上的文件名的权限
anon_mkdir_write_enable=NO 是否允许匿名用户具有建立目录的权限
anon_upload_enable=NO 是否允许匿名用户上传文件
no_anon_password=YES 匿名用户登录是不需要输入密码
anon_max_rate=0 匿名用户上传下载的速率,0是不限制,单位B/s
anon_umask=077 匿名用户创建文件或目录的权限
4)关于系统安全方面的设置
ascii_download_enable=YES 是否允许使用ascii模式下载文件
ascii_upload_enable=YES ...上传...
one_process_model=NO 每个连接都要有一个进程吗?如果开启会占用较多资源
tcp_wrappers=YES 是否支持tcp_wrapper模块
xferlog_enable=YES 是否开启xferlog,用户上传和下载的文件都会被记录下来
xferlog_file=/var/log/xferlog 日志文件名
xferlog_std_format=NO 是否设置为wu-ftp标准格式日志
dual_log_enable=YES 是否开启vsftpd独特的日志
vsftpd_log_file=/var/log/vsftpd.log 日志文件名
nopriv_user=nobody 我们的vsftpd这个程序以谁的身份运行
pam_service_name=vsftpd pam模块的名称,存放位置即/etc/pam.d/vsftpd
deny_file={*.exe,*.avi} 不允许上传的文件类型
注意事项:
开放了写权限后,要保证文件系统中的目录对于该用户具有写的权限
vsftpd主动模式和被动模式的切换。
配置文件:/etc/vsftpd/vsftpd.conf
主动模式配置方法:
#主动式连接使用的数据通道
connect_from_port_20=YES
#支持数据流的被动式连接模式
pasv_enable=NO
被动模式配置方法:
#主动式连接使用的数据通道
connect_from_port_20=NO
pasv_enable=YES(默认为YES) #设置是否允许被动模式
pasv_min_port=1024(default:0(use any port))
pasv_max_port=65536(default:0(use any port))
创建ftp yum源
解决软件包依赖关系
安装createrepo包(提供了createrepo命令 生成软件包的依赖关系)
语法: createrepo [选项|参数] 《目录(软件存放的目录)》
实验:
设置你的ftp服务器,达到这样的要求
希望使用本地时间取代GMT时间
允许本地用户登录
匿名用户只被允许具有下载的权限
限制本地用户以及未来添加的用户的活动范围为其家目录,但除了tom和bob外
限制本地用户的下载流量为1M/s
限制匿名用户下载的速率为500KB/s
限制最多可以有3个连接,同一个ip的ftp连接数最多为2个
设置空闲会话超过60秒就断开连接
设置不允许上传*.exe格式的文件
设置连接超时时间时30s