FTP服务
Posted Dothraki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FTP服务相关的知识,希望对你有一定的参考价值。
FTP: file tansfer protocol 应用层文件共享服务
主要监听在TCP/21 (也有UDP/21)
RPC: Remote Procedure Call 远程过程调用
能够让位于不同主机上的两个进程能够基于二进制的格式实现数据通信
应用层协议的不具备这种能力
Hadoop,NFS
Samba: CIFS MB 跨平台共享,比较底层的协议
FTP 有两个连接,两种模式
21 号端口为控制连接,一直在线,支持文本连接,基于套接字
get,mget,put,mput,cd,ls等
20 号端口为数据传输(主动模式),当有数据传输的时候才连接,按需打开,按需关闭
主动模式:服务端21号端口主动连接客户端发起控制连接的下一个端口,如果被暂用,则再下一个,直到连接到递增的空闲端口位置,但因为有个弊端:客户端一般是有防火墙的,所以服务器主动连接可能会失败,所以采用得少
被动模式:服务端通过命令连接告诉客户段自己打开了一个端口{随机数x256+20},让客户端过来连,两边端口都随机,服务器防火墙有连接追踪功能,能够识别请求响应的状态
数据传输模式两种,遵循文件本身的格式,服务器和客户端协商
文本:html
二进制: mp3,jpeg
互联网的数据类型:结构化数据,半结构化数据,非结构化数据
服务端软件 vsftp: very secure ftp daemon
proftp :功能多
wu-ftpd:ftp鼻祖,功能强大,非模块化设计
windows 平台: serv-u , Filezilla
客户端程序:
CLI: ftp,lftp
GUI:gftp,FlashFXP.Filezilla
VSFTPD:
配置文件 /etc/vsftp 脚本 /etc/init.d/vsftpd 主程序 /usr/sbin/vsftpd
支持虚拟用户
基于PAM用户认证(相当于nsswith的框架)配置文件/etc/pam.d/* 模块 /lib/security/* 或 /lib64/security/*
受selinux控制
服务的根目录 /var/ftp (属主和属组为root)
下载安装
wget ftp://IPADDR/PATH/TO/SOME/WHERE -O /PATH/TO/SOMEWEHRE
yum install vsftpd
rpm -ql vsftpd
三类用户: 匿名用户,虚拟用户,本地用户
每种用户都映射到一个本地用户
finger ftp (ftp用户的家目录为/var/ftp)
ftp 为匿名用户映射的用户
共享文件放在/var/ftp/pub
连接ftp服务
ftp IP
匿名:anonymous 密码:空
>help 查看ftp能使用的命令
lcd 在ftp模式下切换本地目录
配置文件
man vsftp.conf
默认本地用户登录到用户的家目录下,且不禁锢用户切换目录
抓包 tcpdump -i eth0 -nn -X -vv tcp port 21 and ip host x.x.x.x 可以看到所有的过程都是明文的
浏览器登录本地用户: ftp://username:[email protected] (repo文件的baseurl可以这样写^.^)
/var/ftp 和/var/ftp/pub 的属主和属组都是root 尽管配置文件中打开匿名用户上传的权限,但上传的时候仍然Could not create file 因此需重新创建一个匿名用户可以上传的目录或者更改原目录的权限
在此在/var/ftp下mkdir upload 然后更改权限
setfacl -m u:ftp:rwx /var/ftp/upload (单独给某个用户开权限!!匿名登录时,anonymous=ftp 即用户名输入ftp等同于annoymous)
getfacl /var/ftp/upload 查看文件或者文件夹特殊权限
文件服务权限=文件系统权限和文件共享权限的交集
此时仍不能删除(delete)文件和创建目录,权限分离需开启其他权限
重启vsftp会断开连接
dirmessage_enable=YES定义切换到某个目录的提示信息 在该目录下创建隐藏文件,写入要提示的信息
xferlog_enable=YES 定义传输日志
xferlog_file=/var/log/xferlog 传输日志路径
chroot_local_user=YES 禁锢所有本地用户在自己的家目录
选择型禁锢,启用一下两项,并创建chroot_list
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES 是否工作为standalone,可以由xinetd代为管理
如果要交由xinetd接管,需要在/etc/xinetd.d/下提供 一个配置文件
userlist_enable=YES 默认情况在ftpusers中的用户禁止登录
/etc/vsftpd/user_list 清空 1,$d user_list认证先于ftpusers 即在user_list定义的用户密码都无法输入,清空后才ftpusers认证(PAM认证调用/etc/pam.d/vsftpd)
userlist_enable=YES 表示启用user_list文件 默认写在该文件的用户都是不能登录的
如果要让卸载user_list 里的用户登录
添加或者启用 userlist_deny=YES 拒绝(默认动作)黑名单
userlist_deny=NO 不拒绝 即是只能在user_list里的用户可以登录 白名单
FTP 安全通信:
ftps: ftp+ssl/tls
sftp:openssh提供的子系统 SubSystem 基于ssh来实现的
要创建ftps 先要创建CA(私有CA)给vsftpd发证书 然后配置vsftpd
开启: ssl_enable=YES
ssl_tlsv1=YES
ssl_ssv2=YES
ssl_ssv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd_cert.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd_key.pem
配置CA:(可以脚本创建)
cd /etc/pki/CA
mkdir certs newcerts crl
touch index.txt
echo 01 > serial
创建私钥 (umask 077;openssl genrsa -out private/cakey.perm 2048)
生成自签证书 openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
过程填写信息:
Country Name (2 letter code):CN
State or Province Name (full name) [Berkshire]:CQ
Locality Name (eg,city):Hechuan
Organization Name (eg,company) [My Company]:none
Organization Unit Name (eg,section):IT Tech
Common Name (eg, your name or your server‘s name) []: Gandefeng.com
Email Address:
#
#
mkdir /etc/vsftpd/ssl
cd /etc/vsftpd/ssl
(umask 077;openssl genrsa -out vsftpd.key 2048;)
openssl req -new -key vsftpd.key -out vsftp.csr
重复以上过程信息
签署 openssl ca -in vsftpd.csr -out vsftpd.crt
编辑配置文件 vi /etc/pki/tls/openssl.cnf
dir = /etc/pki/CA
编辑vsftpd配置文件,加入或开启
ssl_enable=YES
ssl_tlsv1=YES
ssl_ssv2=YES
ssl_ssv3=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/vsftpd/ssl/vsftpd_cert.pem
rsa_private_key_file=/etc/vsftpd/ssl/vsftpd_key.pem
此时登录 openssl s_client -connect x.x.x.x:21(也是登录不了的,CLI登录不了)
基于数据库的虚拟用户验证:需手动写PAM认证文件
虚拟用户的权限由匿名用户的权限等同
创建 /etc/vsftpd/vusers db_load(db4-utils) 将其转换为二进制
或者基于mysql:
安装mysql pam_mysql
yum -y install mysql-server mysql-devel pam-mysql
yum -y groupinstall "Development Libraries" "Development Tools"
未完待续。。。
以上是关于FTP服务的主要内容,如果未能解决你的问题,请参考以下文章