Linux:Day20(上) openssh和CA
ssh:secure shell protocol,22/tcp,安全的远程登陆
OpenSSH:ssh协议的开源实现;
dripbear:另一个开源实现;
SSH协议版本
v1:基于CRC-32做MAC,不安全;man-in-mddle
v2:双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;
两种方式的用户登录认证:
基于password
基于key
OpenSSH:
C/S
C:ssh,scp,sftp
windows客户端:
xshell,putty,securecrt,sshsecureshellclient
S:sshd
客户端组件:
ssh,配置文件:/etc/ssh/ssh_config
格式:ssh [user@] host [COMMAND]
ssh [-l user] host [COMMAND]
-p port:远程服务器监听的端口;
-X:支持x11转发;
-Y:支持信任的x11转发;
Host PATTERN
PARAMETER VLAUE
基于密钥的认证:
(1) 在客户端生成密钥对儿
ssh -t rsa [-p ' '] [-f "~/.ssh/id_rsa"]
(2) 把公钥传输至过程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]machine
(3) 测试
scp命令:
scp [options] SRC... DEST/
存在两种情形:
PULL:scp [options] [user@host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
PUSH:scp [options] /PATH/FROM/SOMEFILE [user@host:/PATH/TO/SOMEWHERE
常用选项:
-r:递归复制
-p:保持原文件的属性信息;
-q:静默模式
-P PORT:指明remote host的监听的端口;
sftp命令:
stfp [user@] host
stfp > help
服务器端:
sshd,配置文件:/etc/ssh/sshd_config
常用参数:
Port:22022
ListenAddress ip
PermitRootLogin yes
限制可登陆用户的办法:
AllowUsers user1 user2 user3
AllowGroups
ssh服务的最佳实践:
1、不要使用默认端口;
2、禁止使用protocol verdion 1;
3、限制可登录用户;
4、设定空闲会话超时时长;
5、利用防火墙设置ssh访问策略;
6、仅监听特定的IP地址;
7、基于口令认证时,使用强密码策略;
~]# tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8、使用基于密钥的认证;
9、禁止使用空密码;
10、禁止root用户直接登录;
11、限制ssh的访问频度和并发在线数;
12、做好日志,经常分析;
ssh协议的另一种实现:dropbear
(1)dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_kdy
dropbear -p [ip:]port -F -E
OpenSSL:
三个组件:
openssl:多用途的命令行工具;
libcrypto:加密解密库;
libssl:ssl协议的实现
PKI:Public Key Infrastructure
CA
RA
CRL
证书存取库
建立私有CA工具:
OpenCA
openssl
证书申请及签署步骤:
1、生成申请请求;
2、RA核验;
3、CA签署;
4、获取证书;
创建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf
(1) 创建所需要的文件
# touch index.txt
# echo 01 > serial
(2) CA自签证书
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 生成私钥
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem 生成证书签署请求并自签
-new:生成新证书签署请求;
-x509:生成自签证书;
-key:生成请求时用到的私钥文件;
-days n:证书的有效期限;
-out /PATH/TO/SOMECERTFILE:证书的保存路径;
(3) 发证
(a) 用到证书的主机生成证书请求;
# (umak 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 在用到证书的主机上生成私钥
# openssl req -new -key /etc/httpd/ssl/htppd.key -days 365 -out /etc/httpd/ssl/httpd.csr 生成证书申请请求
(b) 把请求文件传输给CA; 把上面生成的csr文件传给CA,可以用scp,也可以是ftp等
(c) CA签署证书,并将证书发还给请求者;
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看证书中的信息:
openssl x509 -in /PATH/FROM/CERT_FILE -noout -text| -subject| -serial
(4) 吊销证书
(a) 客户端获取要吊销的证书的serial
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(b) CA
先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;
吊销证书:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
(c) 生成吊销证书的编号(第一次吊销一个证书,如果已生成这个文件就不再需要了)
# echo 01 > /etc/pki/CA/crlnumber
(d) 更新证书吊销列表
# openssl ca -gencrl -out thisca.crl
查看crl文件:
#openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
博客作业:加密解密基础、PKI及SSL、创建私有CA;
Linux:Day20(上) openssh和CA的更多相关文章
- 05、Win7上openSSH的安装与配置
05.Win7上openSSH的安装与配置 1.概述 linux上的ssh命令在网络通信场景下非常方便.现在windows也支持ssh方式和远程主机进行访问.如果只是使用ssh简单的访问功能,就需要很 ...
- Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇
Linux操作系统安全-局域网私有CA(Certificate Authority)证书服务器实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.试验架构说明 node101 ...
- windows 上 OpenSSH 服务 启用秘钥登录(微软真心逆天)
windows 上 OpenSSH 服务 启用秘钥登录(微软真心逆天) windows 安装 OpenSSH 服务 最近需要在windows 服务器上部署自动发布程序,那么就需要用到 scp 和 ss ...
- Linux主机上使用交叉编译移植u-boot到树莓派
0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...
- NoSql1 在Linux(CentOS)上安装memcached及使用
前言: 今天是初五,生活基本要从过年的节奏中回归到正常的生活了,所以想想也该想想与工作有关的事情了.我之前在工作中会经常使用memcached和redis,但是自己一直没有时间系统的好好看 ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...
- 在Ubuntu和Linux Mint上安装Oracle JDK
在Ubuntu和Linux Mint上安装Oracle JDK 使用下面的命令安装,只需一些时间,它就会下载许多的文件,所及你要确保你的网络环境良好: sudo add-apt-repository ...
- Linux服务器上监控网络带宽的18个常用命令
[51CTO精选译文]本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以 ...
- Linux~centos上安装.netcore,HelloWorld归来!
对于跨平台的.netCore来说,让它的程序运行在Linux系统上已经成为必然,也是一种趋势,毕竟我们的很多服务都放在linux服务器上(redis,mongodb,myql,fastDFS,luce ...
随机推荐
- Linux 桌面玩家指南:12. 优秀的文本化编辑思想大碰撞(Markdown、LaTeX、MathJax)
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- 搭建属于自己的GIT服务器——pingg
1.下载并安装jdk. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...
- 栈到CLR
提起栈想必会听到这样几个关键词:后进先出,先进后出,入栈,出栈. 栈这种数据结构,数组完全可以代替其功能. 但是存在即是真理,其目的就是避免暴漏不必要的操作. 如角色一样,不同的情景或者角色拥有不同的 ...
- SpringBoot之GZip压缩,HTTP/2,文件上传,缓存配置
1 设置应用端口以及context # HTTP Server port server.port=8080 # Make the application accessible on the given ...
- 学习Identity Server 4的预备知识 (误删, 重补)
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知 ...
- springboot~mongo内嵌集合的操作
对于mongodb的内嵌对象的各种操作大叔在.net平台时已经说过,同时大叔也自己封装过mongo的仓储,使用也都很方便,而在java springboot框架里当然也有对应的方法,下面主要说一下,希 ...
- ReentrantLock是如何基于AQS实现的
ReentrantLock是一个可重入的互斥锁,基于AQS实现,它具有与使用 synchronized 方法和语句相同的一些基本行为和语义,但功能更强大. lock和unlock ReentrantL ...
- Pi Hybrids问题
Pi Hybrids问题 清华大学肖秀波梁湧老师翻译的Rardin教授的<运筹学>[1]已于今年年中出版,感谢机械工业出版社张有利老师的推荐和赠书,让我能看到如此完美的千页级宏篇译著.该书 ...
- 浅析HttpSession
苏格拉底曰:我唯一知道的,就是自己一无所知 源头 最近在翻阅Springboot Security板块中的会话管理器过滤器SessionManagementFilter源码的时候,发现其会对单用户的多 ...
- Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库
1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...