ftp ftps 详解
主动方式:
1.客户端从自己的任意一个非特权端口x (x>1024)向ftp服务器的命令端口21 发送syn请求。并发送active 和port x+1指令,向ftp服务器指明使用主动方式,并告诉ftp服务器自己的端口为x+1 .
2.服务器端收到syn请求后,从自己的21端口发送syn+ack 回应。
3.然后ftp服务器主动使用自己的20 端口向客户端的x+1端口发送syn请求。
4.客户端 的x+1端口向ftp服务器的20 端口做出回应
5.ftp客户端的x+1端口和ftp 服务器端的20 端口开始传递数据。
被动方式:
1. .客户端从自己的任意一个非特权端口x (x>1024)向ftp服务器的命令端口21 发送syn请求。并发送pasv指令,告诉ftp服务器采用被动方式。
2.ftp服务器收到syn请求后,用21端口向客户端的x端口做出回应。并发送port y告诉ftp客户端自己的接口y.
3.客户端使用自己的接口x+1来向服务器端的y端口发送连接请求。
4.y端口做出回应。
5.然后两端通过x+ 1接口和 y接口进行数据传输。
FTP服务器的搭建
1.新建挂载点,挂载光盘
[[email protected] ~]# mkdir /mnt/cdrom
[[email protected] ~]# mount /dev/cdrom /mnt/cdrom
2.安装vdftpd 软件包
[[email protected] ~]# rpm -ivh /mnt/cdrom/Server/vsftpd-2.0.5-16.el5.i386.rpm
3.打开vdftpd的配置文件
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 允许匿名用户登录
local_enable=YES 允许本地用户登录
write_enable=YES 站点可以上传文件(还需要修改本地权限)
local_umask=022 本地账户上传文件或目录的权限屏蔽码
anon_upload_enable=YES 匿名用户可以上传文件
anon_mkdir_write_enable=YES 匿名用户可以创建文件夹
anon_other_write_enable =YES 匿名用户别的写权限(重命名、删除配合sticky位)
匿名用户上传的文件所有者为ftp,权限为600,目录权限为700,其他用户无法读取该文件 ,进而将无法下载文件。只需给上传的文件添加read权限即可下载。
或者修改anon_umask=073 即可
dirmessage_enable=YES 切换目录时,信息提示。在目录下创建.message文件
xferlog_enable=YES 开启日志功能
xferlog_file=/var/log/xferlog 日志文件位置
xferlog_std_format=YES 日志格式为标准
idle_session_timeout=600 会话超时
data_connection_timeout=120 连接超时
deny_email_enable=YES 拒绝使用邮箱作为密码登陆
banned_email_file=/etc/vsftpd/banned_emails 该文件中的邮箱将无法作为密码登录
listen=YES 表明vsftpd 为独立守护进程
chroot_list中的账户将被锁定:
chroot_list_enable=YES
#chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_list中的账户不被锁定,文件外的账户被锁定
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
文件内的账户被锁定
chroot_list_enable=YES
chroot_local_user=NO
chroot_list_file=/etc/vsftpd/chroot_list
userlist_enable=YES
userlist_deny=YES (默认)
ftpusers中的用户输入密码后登录失败
user_list中用户在输入密码前禁止登录
userlist_enable=YES
userlist_deny=NO
只有在user_list中用户在输入密码后可以登录
ftpusers 中的和不在ftpsuers中的用户依旧不可以登录
tcp_wrappers=YES
支持简易防火墙 /etc/hosts.allow /etc/hosts.deny
ldd /usr/sbin/vsftpd 查看动态链接库是否支持tcp_wrappers
/etc/hosts.deny /etc/hosts.allow 语法:
服务名:来源:动作
在/etc/hosts.deny中设置拒绝所有
all:all:deny
在/etc/hosts.allow中设置只允许特定的ip访问ftp服务
vsftpd:192.168.101.1:allow
在/etc/hosts.allow中设置只禁止特定的ip访问ftp服务
vsftpd:192.168.101.1:deny
vsftpd:all:allow
windows ftp 命令:
dir 列出远程目录下的文件
!dir 列出本地目录下的文件
cd 远程切换目录
lcd 本地切换目录
get 下载
mget 一次下载多个:mget f1*
put 上传
mput 一次上传多个
bin 设置类型为二进制
ascii 设置类型为ascii
FTPS
ftp 采用明文传输,在网络传输过程中容易被抓包抓到有价值信息
1.安装wireshark 抓包工具
[[email protected] Server]# rpm -ivh libsmi-0.4.5-2.el5.i386.rpm
[[email protected] Server]# rpm -ivh wireshark-1.0.8-1.el5_3.1.i386.rpm
2. user1 登录ftp服务器
[[email protected] ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
3.搭建ca证书服务器
[[email protected] ~]# vim /etc/pki/tls/openssl.cnf
4.创建三个目录,两个文件
[[email protected] ~]# cd /etc/pki/CA/
[[email protected] CA]# mkdir certs newcerts crl
[[email protected] CA]# touch index.txt serial
[[email protected] CA]# echo "01" >serial
5.CA服务器产生自己的证书
[[email protected] CA]# openssl genrsa 1024 >private/cakey.pem
6.CA服务器产生证书
[[email protected] CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem
7.ftp服务器产生自己的私钥
[[email protected] CA]# mkdir /etc/vsftpd/certs
[[email protected] CA]# cd /etc/vsftpd/certs/
[[email protected] certs]# openssl genrsa 1024 >vsftpd.key
8.ftp服务器产生请求
[[email protected] certs]# openssl req -key vsftpd.key -out vsftpd.csr
9.CA 服务器颁发证书
[[email protected] certs]# openssl ca -in vsftpd.csr -out vsftpd.cert
10.修改CA服务器的证书及私钥的权限
[[email protected] certs]# cd /etc/pki/CA/
[[email protected] CA]# chmod 600 private/cakey.pem
[[email protected] CA]# chmod 600 cacert.pem
11.ftp服务器的证书及私钥文件的权限
[[email protected] certs]# chmod 600 *
12.当用户通过ftps方式访问ftp服务器是,要调用ftp服务器的证书。所以要在ftp的配置文件中说明只能是及私钥位置
rsa_cert_file=/etc/vsftpd/certs/vsftpd.cert ftp服务器的证书位置
rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key ftp服务器的私钥位置
ssl_enable=YES 开启ssl加密功能
ssl_tlsv1=YES 可以使用ssl版本1
ssl_sslv2=YES 可以使用ssl版本2
ssl_sslv3=YES 可以使用ssl版本3
force_local_logins_ssl=YES 强制本地用户使用ssl加密登录
13.保存退出,重启ftp服务器。
[[email protected] CA]# service vsftpd restart
关闭 vsftpd: [确定]
为 vsftpd 启动 vsftpd: [确定]
14.使用tshark抓包
[[email protected] ~]# tshark -ni eth0 -R "tcp.dstport eq 21"
15.配置ftp客户端软件
新建ftp站点
选择连接类型为ssl加密
转载于:https://blog.51cto.com/jialiang10086/992803