Linux-OpenSSL(sftp)

Linux下ftp+SSL实现ftps

ftps与sftp:

FTPS是借助ssl协议加密,ssl是为http/smtp等加密设计的;;SFTP是借助ssh加密,ssh是为telnet/ftp等加密、建立传输通道而设计的。ssh建立传输通道就是为了加密和传输,而且这个通道是可以用来远程登录。创建加密通道对文件进行加密。

从原理上简单的讲:FTPS是ftp-over-ssl的意思,即ftp借助ssl协议加密传输,不但要用ftp服务器还要用ssl协议加密。sftp协议是ssh中的一条独立的协议,利用sftp服务器就可以传输数据。

下面笔者以ssl来实现ftps的安全传输:

用ssl的是ftps.(传输层的加密)

SSL验证: 1、只密码验证 2、SSL证书验证,需要建立CA服务器

实验思路:首先安装wireshark抓包工具,在没有使用CA服务器的情况下抓包,查看抓包情况。然后安装CA服务器为ftp服务器颁发证书。再次抓包,查看抓包。注:此实验中CA服务器与ftp服务器处于同一个主机上

新建用户:

[[email protected] ~]# useradd user1      #新建用户user1,用于抓包测试。

[[email protected] ~]# passwd user1

安装wireshare:

[[email protected] ~]# mkdir /mnt/cdrom

[[email protected] ~]# mount /dev/cdrom /mnt/cdrom/

[[email protected] ~]# cd /mnt/cdrom/Server/

[[email protected] Server]# vim /etc/yum.repos.d/rhel-debuginfo.repo      #编辑本地yum

[[email protected] Server]# yum install wireshark –y       #安装wireshark抓包工具

安装vsftp:

[[email protected] Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

[[email protected] Server]# service vsftpd start

使用抓包工具,查看在没有使用ssl时的抓包情况:

[[email protected] Server]# tshark -ni eth0 -R "tcp.dstport eq 21"       #由于客户端必须使用21端口与服务器建立连接,所以此处对于21号端口进行抓包

用户名和密码已经泄露:

搭建CA服务器:

[[email protected] Server]# cd /etc/pki/tls/

[[email protected] tls]# vim openssl.cnf

[[email protected] tls]# cd /etc/pki/CA/       #切换到与CA服务器有关的目录

[[email protected] CA]# mkdir certs         #建立与证书有关的目录

[[email protected] CA]# mkdir newcerts     #与新证书有关的目录

[[email protected] CA]# mkdir crl       #证书吊销列表

[[email protected] CA]# touch index.txt

[[email protected] CA]# touch serial

[[email protected] CA]# echo "01"> serial      #给serial一个初始值

[[email protected] CA]# openssl genrsa 1024 > private/cakey.pem      #使用非对称加密算法rsa,采用1024为算法,得到一个密钥存放在private/cakey.pem中

[[email protected] CA]# chmod 600 private/cakey.pem       #私钥不允许别人查看,所以将cakey.pem文件的权限改为600,只有所属用户可以读写

[[email protected] CA]# openssl req -new -key private/cakey.pem -x509 -out  cacert.pem -days 3650    #使用CA服务器自己的私钥cakey.pem产生一个证书cacert.pem

[[email protected] CA]# mkdir -pv /etc/vsftpd/certs      #创建一个目录,存放于vsftp有关的证书,证书请求,密钥

[[email protected] CA]# cd /etc/vsftpd/certs/

[[email protected] certs]# openssl genrsa 1024 >vsftpd.key      #非对称加密算法rsa,使用1024位,算出一个密钥vsftp.key

[[email protected] certs]# openssl req -new -key vsftpd.key -out vsftpd.csr      #利用私钥vsftp.key产生一个证书请求文件vsftp.csr

[[email protected] certs]# openssl ca -in vsftpd.csr -out vsftpd.cert       #利用证书请求文件的到一个证书vsftp.cert

[[email protected] certs]# chmod 600 *      #将该目录下的文件权限全部改为600,即所属用户可读写

将申请得到的CA证书和vsftp关联起来:

[[email protected] certs]# chmod 600 *

[[email protected] certs]# vim /etc/vsftpd/vsftpd.conf

[[email protected] certs]# service vsftpd restart

使用flashfXP作为测试:

[[email protected] certs]# tshark -ni eth0 -R "tcp.dstport eq 21"     #抓包,查看能否获得用户名和密码

查看抓包结果:无法获得用户名和密码

时间: 2024-10-13 12:25:10

Linux-OpenSSL(sftp)的相关文章

linux配置sftp用户的chroot步骤(用户的sftp根目录)

1.编辑ssh中的sftp的配置,命令可能是:vi /etc/ssh/sshd_config 在这个文件中最后加入 #限制sftp组的用户使用sftp时在自己的home目录下 Match Group sftp #这里写重写根目录成登录用户的根目录下 ChrootDirectory %h #这行指定使用sftp服务使用系统自带的internal-sftp ForceCommand    internal-sftp 2 重启ssh服务,命令可能是:service ssh restart, 这里要注意

linux搭建sftp(openssh)

公司需求由ftp转为sftp,因此需求,捣鼓了两天,在windows系统上研究搭建sftp煞费苦心,最终失败,转为linux上搭建. windows搭建ftp,工具可使用file zilla,话说支持ftp.sftp,但本人并没有研究出sftp.此工具对权限设置较好,可做到针对每个人访问单个文件夹权限.FreeSSHd,此工具安装简单,但个人使用感不佳,此工具对ftp用户权限设置不佳,所有用户访问ftp目录权限相同. FreSSHd 搭建ftp,可借鉴:https://jingyan.baidu

Linux 搭建Sftp服务并进行权限设置

一.最近接到一个项目组的需求搭建文件服务器,需求如下 1.用户:amovs.upload.download 2.组:amovs.dataload.download 3.具体需求是upload和download的家目录都为同一个目录dataload 4.upload能上传也就是能读能写.download用户只能下载 5.amovs因需要进行批量自动化删除日志等操作,所以对于dataload目录权限需要读.写权限 6.并且upload和download只能使用sftp软件上传和下载文件使用,不能作为

Linux OpenSSL:基于密码和密钥的远程登录

SSH: Secure shell, prototol, 22/tcp,安全的远程登录 OpenSSH: ssh协议的开源实现 ssh协议版本 v1: 基于CRC-32做MAC,不安全: man-in-middle v2: 双方主机协议选择安全的MAC方式, 基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证: 两种方式的用户登录认证:基于Password & 基于key OpenSSH:    C/S Client: ssh, scp, sftp, Server: sshd 备注:Wi

Linux设置SFTP服务用户目录权限

我们有时会遇到这样的需求,限制一个Linux用户,让他只能在指定的目录下进行添加.修改.删除操作,并且只能使用sftp登录服务器,不能用ssh操作.这些可以通过配置sftp服务实现. 提供sftp服务的有vsftpd和internal-sftp,这里用的是系统自带的internal-sftp,操作步骤如下: 1.创建新用户ui,禁止ssh登录,不创建家目录 useradd -s /sbin/nologin -M www 2.设置用户密码 passwd www 3.创建用户的根目录,用户就只能在此

linux 安装 sftp

1,sftp:登陆命令 Xshell:\> sftp [email protected] Connecting to 192.168.159.128:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Your current local directory is C:\Program Files\NetSarang\Xshell 4 2,help命令 sftp:/root> help bye 

【环境配置】本地配置sublime text以及和远程linux设置sftp

工具: sublime text 2(mac版) 远程linux(centos 7系) securCRT(for mac) [本地安装并配置securCRT(for mac)] 关于配置: 1.解决终端连接服务器短时间自动断开连接的问题: 修改服务器sshd_config文件,直接修改 /etc/ssh_config文件 将 #ServerAliveCountMax 3 #ServerAliveInterval 0 的注释去掉,并且 ServerAliveInterval  0 改为  Serv

linux openssl 编程 Client端

相关配置等请參看上一篇关于server端文章:http://blog.csdn.net/pingd/article/details/47805349 1.Client端源代码: openssl_client.c #include <stdio.h> #include <string.h> #include <errno.h> #include <sys/socket.h> #include <resolv.h> #include <stdl

Linux上SFTP用法

SFTP简介 sftp是一个交互式的文件传输协议,类似于ftp,但它进行加密传输,比ftp更安全. SFTP用法 localhost>sftp root@177.222.123.16 从远程主机获取文件或目录到本地目录下 sftp>get /home/remote/index.jsp /home/local/ 将本地目录或文件上传到远程目录下 sftp>put /home/local/index.jsp /home/remote/ 常用操作: 查询远程主机的当前路径:pwd 查询本地主机

Linux下sftp配置之密钥方式登录

vsftp采用明文传输,用户名密码可通过抓包得到,为了安全性,需使用sftp,锁定目录且不允许sftp用户登到服务器.由于sftp使用的是ssh协议,需保证用户只能使用sftp,不能ssh到机器进行操作,且使用密钥登陆.不是22端口.1. 创建sftp服务用户组,创建sftp服务根目录 groupadd sftp#此目录及上级目录的所有者必须为root,权限不高于755,此目录的组最好设定为sftpmkdir /data/sftpchown -R root:sftp /data/sftpchmo