旅途之为企业搭建linux VSFTP Server
一、vsftp简介
vsftp是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。安全性是编写vsftp的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。在速度方面:使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。在稳定方面:VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据RedHat的Ftp服务器()的数据,vsftp服务器可以支持15000个并发用户
ftp全称:file transfer protocal
ftp是一种工作于应用层的文件共享服务
文件共享服务:
ftp (应用层)
nfs (Network File System--->RPC:Remote procedure Call远程过程调用)
samba (Cifs/smb)
ftp连接:
命令(控制)连接
port:tcp/21
status:连接建立之后始终在线
数据连接
port:
主动模式(Server收到Client的请求之后,主动连接Client) port:tcp/20
被动模式(控制链接建立后,S发送报文给C,包含S已开放的port,之后C主动链接S) port:一般为>5000的随机port
status:连接按需打开/按需关闭
ftp数据传输模式:
二进制/文本
自动模式(依据源文件格式定义)
ftp server软件:
vsftpd --- very secure ftp daemon
proftpd
wu-ftpd
pureftpd
Server-u
filezilla
ftp client软件:
CLI:
ftp/lftp
GUI:
gftpd/FlashFXP/filezilla
二、vsftpd文件
1、基本文件
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/init.d/vsftpd 服务脚本
/usr/sbin/vsftpd 主程序
/var/ftp vsftpd的主目录,也是ftp用户的家目录(运行ftp的用户一定没有对“/var/ftp”目录的写入权限)
基于PAM实现用户认证
支持虚拟用户
/etc/pam.d/*
/lib/security/*或/lib64/security/*
ftp用户:
匿名用户------->系统用户(通过映射为系统用户)匿名用户用户名:anonymous
虚拟用户------->系统用户(通过映射为系统用户)
系统用户
2、vsftpd.conf配置文件详解
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 允许匿名用户访问
local_enable=YES 允许系统用户访问
write_enable=YES 允许上传
anon_upload_enable=YES 允许匿名用户上传(必须和文件系统权限结合设定)
anon_mkdir_write_enable=YES 定义匿名用户是否可以创建目录
anon_other_write_enable=YES 匿名用户是否可以删除文件
dirmessage_enable=YES 当用户进入目录是否显示欢迎信息(一般定义以“.message”命名的隐藏文件)
传输日志:
xferlog_enable=YES 是否启用传输日志功能
xferlog_file=/var/log/xferlog 传输日志文件位置
xferlog_std_format=YES 日志是否使用标准格式
文件属主/组
chown_upload=YES 用户上传完文件是否改变文件属主/组
chown_username=whoever 上传之后的文件的属主/组变更为谁
链接超时
idle_session_timeout=600 控制链接超时时间
data_connection_timeout=120 数据连接超时时间
数据格式
ascii_upload_enable=YES 以文本方式(编码)上传文件
ascii_download_enable=YES 以文本方式(编码)下载文件
锁定特定用户家目录
chroot_list_enable=YES 是否定义一个文件锁定用户家目录
chroot_list_file=/etc/vsftpd/chroot_list 创建用户列表。所有在列表中的用户都锁定用户家目录
锁定所有用户家目录
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
listen=YES 表示vsftpd是否为一个独立守护进程
pam_service_name=vsftpd 定义“/etc/vsftpd”中pam配置文件名字
注意:
/etc/vsftpd/ftpusers 所有写在此文件中的用户都禁止访问ftp
访问控制
userlist_enable=YES 是否启用/etc/vsftpd/user_list中的用户列表控制登陆
userlist_deny=NO 不拒绝列表中列表中用户登陆,但列表之外的用户都无法登陆
max_clients=# ftp最大连接数
max_per_ip=# 每ip最多同时有几个链接请求
访问带宽限制
anon_max_rate=数值 定义匿名用户的速度
local_max_rate=数值 定义vsftp Server中本地用户的速度
如何让用户只能通过某个IP来访问FTP
listen_address=172.24.10.20
Attention:
如何让绑定IP到vsFTPd?也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP,在vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过172.24.10.20来访问FTP;
为被动模式下的连接定义端口范围
pasv_max_port=65535
pasv_min_port=64000
三、为vsftpd调整防火请规则
iptables -I INPUT -p tcp --dport 20 -j ACCEPT 允许流量通过FTP控制端口
iptables -I INPUT -p tcp --dport 21 -j ACCEPT 允许流量通过FTP数据端口
iptables -I INPUT -p tcp --dport 64000:65535 -j ACCEPT 允许被动模式下的连接,其端口范围已经在vsftpd.conf中予以定义
vsftp登陆:
ftp://username@[ServerName/IP]
四、vsftp安全通信方式
ftps:ftp+ssl/tls
sftp:openssl
1、创建SSL/TLS证书和私钥:
sudo openssl req -x509 -days 365 -newkey rsa:2048 -nodes -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
2、启用SSL/TLS加密
vim /etc/vsftpd/vsftpd.conf
ssl_enable=YES 启用SSL支持
ssl_tlsv1=YES 启用TLSV1支持
ssl_sslv3=YES 启用SSLV3支持
allow_anon_ssl=NO 匿名用户不使用SSL加密链接
force_local_data_ssl=YES 强制本地数据连接使用SSL加密
force_local_logins_ssl=YES 强制本地登陆使用SSL加密
rsa_cert_file=/etc/vsftpd/vsftpd.pem 证书位置
rsa_private_key_file=/etc/vsftpd/vsftpd.pem 密钥位置
本文出自 “运维天空-opsky” 博客,请务必保留此出处http://opsky.blog.51cto.com/9265055/1543117
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。