开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

13、openssl、ssh、脚本信息捕获 学习笔记

简介:
+关注继续查看

PKI:Public Key Infrastucture


openssl: 套件,开源程序

libcrypto通用功能的加密库

libssl用于实现TLS/SSL的功能

openssl多功能命令行工具

openssl可用于:生成密钥、创建数字证书、手动加密解密数据


加密解密技术常用的功能及算法:

对称加密:(用于加密数据)

算法:DES, 3DES, AES, Blowfish, Twofish, RC6, CAST5

工具:gpg, openssl enc


# openssl enc -des3 -a -salt -in /path/to/input_file -out /path/to/cipher_file

# openssl enc -d -des3 -a -salt -in /path/to/cipher_file -out /path/to/clear_file


单向加密:(抽取数据特征码,用于验证数据的完整性)

特性:

One-Way

Collision-free

算法:

md5128bits

sha1160bits

sha512512bits

工具:sha1sum, md5sum, cksum, openssl dgst


# openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-out filename] /path/to/somefile


MAC: 消息摘要码,单向加密的延伸应用(在单向加密的基础上再对抽取的数据特征码进行加密)

应用:用于实现在网络通信中保证所传输的数据完整性;

机制:

CBC-MAC

HMAC:使用md5和sha1算法;


用户认证:

工具:passwd, openssl passwd

# openssl passwd -1 


公钥加密:公钥加密、私钥解密

密钥对儿:

公钥:pkey

私钥:skey


算法:RSA, EIGamal

工具:gpg, openssl rsautl


数字签名:私钥加密、公钥解密

算法:RSA, EIGamal, DSA


DSA: Digital Signature Algorithm

DSS: Digital Signature Standard


密钥交换:IKE

算法:DH, 公钥加密

Diffie-Hellman 


数字证书:

证书格式:x509、pkcs

x509格式:

公钥和有效期限;

持有者的个人合法身份信息;(主机名)

证书的使用方式;

CA的信息;

CA的数字签名;


谁给CA发证:自签署证书


配置文件:/etc/pki/tls/openssl.cnf


[ CA_default ]

dir             = /etc/pki/CA           # Where everything is kept        CA工作目录

certs           = $dir/certs            # Where the issued certs are kept 签署证书存放目录

crl_dir         = $dir/crl              # Where the issued crl are kept   吊销列表存放目录

database        = $dir/index.txt        # database index file.            索引数据库

#unique_subject = no                    # Set to 'no' to allow creation of

                                        # several ctificates with same subject.

new_certs_dir   = $dir/newcerts         # default place for new certs.    新证书存放目录

certificate     = $dir/cacert.pem       # The CA certificate              CA自签署证书

serial          = $dir/serial           # The current serial number       证书的序列号

crlnumber       = $dir/crlnumber        # the current crl number          吊销列表的序列号

                                        # must be commented out to leave a V1 CRL

crl             = $dir/crl.pem          # The current CRL                 正用吊销列表

private_key     = $dir/private/cakey.pem# The private key                 CA自己的私钥

RANDFILE        = $dir/private/.rand    # private random number file      随机数文件


x509_extensions = usr_cert              # The extentions to add to the cert


用openssl实现私有CA:


生成密钥对儿:

# (umask 077; openssl genrsa -out private/cakey.pem 2048)

如果想查看公钥:

# openssl rsa -in private/cakey.pem -pubout -text


生成自签证书:

# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655


创建需要的文件:

# touch index.txt serial crlnumber


用openssl实现证书申请:


在主机上生成密钥,保存至应用此证书的服务的配置文件目录下, 例如:

# mkdir /etc/httpd/ssl

# cd /etc/httpd/ssl

# (umask 077; openssl genrsa -out httpd.key 1024)


生成证书签署请求:

# openssl req -new -key httpd.key -out httpd.csr 


将请求文件发往CA;


CA签署证书:

签署:

# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days DAYS


将证书传回请求者


吊销证书:

# openssl ca -revoke /path/to/somefile.crt


openssl: 多用途的命令行工具

标准命令:enc, dgst, genrsa, rsautl, req, ca, rsa, passwd


speed: 基准性能测试工具 

version:版本查看

s_client:SSL/TLS client program

rand: 生成伪随机数

# openssl rand -hex #


ssl: 

NetScape 网景

Secure Socket Layer

SSLv2, SSLv3


TLS: Transport Layer Security

TLSv1


http --> https

ldap --> ldaps

ftp --> ftps

smtp --> smtps

pop3 --> pop3s

imap --> imaps


openssl补充材料:


openssl中有如下后缀名的文件

.key格式:私有的密钥

.crt格式:证书文件,certificate的缩写

.csr格式:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写

.crl格式:证书吊销列表,Certificate Revocation List的缩写

.pem格式:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式

 

常用证书协议

x509v3: IETF的证书标准

x.500:目录的标准

SCEP:  简单证书申请协议,用http来进行申请,数据有PKCS#7封装,数据其实格式也是PKCS#10的

PKCS#7:  是封装数据的标准,可以放置证书和一些请求信息

PKCS#10:  用于离线证书申请的证书申请的数据格式,注意数据包是使用PKCS#7封装这个数据

PKCS#12:  用于一个单一文件中交换公共和私有对象,就是公钥,私钥和证书,这些信息进行打包,加密放在存储目录中,CISCO放在NVRAM中,用户可以导出,以防证书服务器挂掉可以进行相应恢复。思科是.p12,微软是.pfx


ssh: Secure SHell

监听tcp协议的22号端口


ssh文本协议:字符通信


sshv1, sshv2

由于sshv1是基于CRC-32做MAC,因此,不安全,建议勿用;

sshv2基于双方主机协商选择最安全的MAC实现机制;

加密机制及MAC机制是双方协商选定;

基于DH实现密钥交换,基于RSA或DSA实现身份认证;

客户通过检查服务端的主机密钥来判定是否与其进一步通信;


OpenSSH (C/S)

Server: 程序(服务)监听tcp:22

Client: 程序


Windows客户端:xmanager(xshell)、SecureCRT、putty、sshshellclient


openssh客户端组件:

ssh: 

ssh Username@HOST [COMMAND]

ssh -l Username HOST [COMMAND]

-p PORT: 指定要连入端口;


ssh认证机制:

基于口令

基于密钥

客户端在本地生成一对密钥;

客户端将公钥复制到服务端,要登录的用户的家目录下的隐藏目录.ssh中的一个名为authorized_keys或authorized_keys2文件中


配置过程:

1、生成密钥对儿

# ssh-keygen -t rsa

生成的密钥默认保存至当前用户家目录下的.ssh目录的id_rsa文件中,公钥在id_rsa.pub文件中


2、复制密钥至远程主机

# ssh-copy-id [-i /path/to/pubkey_file] Username@HOST


scp: 类cp命令,基于ssh协议跨主机复制

scp SRC1 SRC2 ... DEST


分两种情况:

1、源文件在本机,目标为远程

# scp /path/to/somefile ... Username@HOST:/path/to/somewhere

2、源文件在远程,目标为本机

# scp Username@HOST:/path/to/somefile  /path/to/somewhere


-r: 源文件为目录时使用,以实现递归复制

-p: 保留源文件的复制及修改时间戳,以及权限;

-q: 静默模式

-P PORT:指定服务端端口;


sftp: 是基于ssh的ftp协议

只要OpenSSH的服务器端配置文件中启用了如下项:

Subsystemsftp/usr/libexec/openssh/sftp-server


用法:# sftp [username@]HOST


服务器端:sshd

配置文件:/etc/ssh/sshd_config

服务脚本:/etc/rc.d/init.d/sshd

脚本配置文件:/etc/sysconfig/sshd


各配置参数:# man sshd_config

Port

ListenAddress: IP

Protocol

PermitRootLogin

AllowUsers user1,user2,...: 用户白名单

AllowGroups

DenyUsers : 用户黑名单


使用SSH的最佳实践:

1、Only Use SSH Protocol 2

2、Limit Users' SSH Access

AllowUsers root vivek jerry

白名单

DenyUsers saroj anjali foo

黑名单

3、Configure Idle Log Out Timeout Interval

ClientAliveInterval 300

ClientAliveCountMax 0

设定空闲会话超时时长;


4、Firewall SSH Port # 22

使用iptables设置ssh服务安全访问策略;


5、Change SSH Port and Limit IP Binding

Port 300

ListenAddress 192.168.1.5

ListenAddress 202.54.1.5


勿使用默认22端口;


6、Use Strong SSH Passwords and Passphrase

genpasswd() {

local l=$1

      [ "$l" == "" ] && l=20

     tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs

}


使用足够长、足够复杂的密码,且定期更换;


7、Use Public Key Based Authentication

使用公钥认证


8、Disable Empty Passwords

9、Thwart SSH Crackers (Brute Force Attack)

google: ssh best practice

10、 Rate-limit Incoming Port # 22 Connections

限制ssh访问频度;

11、Use Log Analyzer

记录好日志,经常做日志分析;


用户登录信息获取:

/var/log/wtmp:用户成功登录的日志信息

last

/var/log/btmp: 用户登录尝试失败的日志信息

lastb


lastlog: 每个用户最近一次成功登录的信息;


bash编程的信号捕获:

kill -l

KILL无法捕捉;


trap 'COMMAND' SIGNAL, 


信号捕捉用于:在中途中止时做一些清理操作;


使用示例:

#!/bin/bash

#

trap 'echo "quit"; exit 5' INT


for i in {1..254}; do

       if ping -w 1 -c 1 172.16.254.$i &> /dev/null; then

        echo "172.16.254.$i is up."

       else

        echo "172.16.254.$i is down."

       fi

done







      本文转自开源殿堂 51CTO博客,原文链接:http://blog.51cto.com/kaiyuandiantang/1961104,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ssh 无密码登陆
ssh 无密码登陆 2012-03-01 14:42 9844人阅读 评论(0) 收藏 举报 ssh服务器server脚本shelllinux   一、单向无密码访问 单向无密码访问远程服务器操作比较简单,比如服务器A需要无密码访问服务器B(A–>B),那么只需要在服务器A生成密钥对,将生成的公钥上传到服务器B的相关用户目录下的.ssh目录中(没有的话手动创建,注意,它的目录权限是700),并将公钥文件名称改为authorized_keys(注意,这个文件的权限应该是644),请注意.ssh目录及authorized_keys文件的权限,权限不符,会使配置无效。
1062 0
ssh 免密码设置失败原因总结
先复习一下设置ssh免密码操作的步骤: 进入主目录 cd 生成公钥 ssh-keygen -t rsa -P '' (注:最后是二个单引号,表示不设置密码) 然后分发公钥到目标机器 ssh-copy-id -i ~/.
1279 0
ssh免密码登陆配置及注意事项
在配置hadoop完全分布式模式时,需设置ssh免密码登陆,研究查询一番,记录如下: 设置ssh免密码登陆,首先生成公私密钥,在当前用户主目录下(即/home/xxx,xxx为用户名),执行命令 执行上述命令后会在当前目录下生成 .
940 0
设置不输入密码ssh登录
在/etc/hosts文件下加入:   192.168.1.60 u60 #设置u60为主机名 在每个节点上创建RSA秘钥: # ssh-keygen -t rsa # 一直按确定键即可 # touch /root/.
809 0
ssh非交互式密码输入
ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码。 它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
1125 0
两个SSH2间免密码登录
OpenSSH登录SSH2.pdfSSH2免密码登录OpenSSH.pdfSSH2间免密码登录.pdf 以下针对的是ssh2,而不是ssh,也不是OpenSSH。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。
721 0
SSH2免密码登录精简详细说明
以下针对的是ssh2,而不是ssh。精简的意思是无多余步骤,详细是说关键细节都有提到。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。
757 0
SSH无密码验证登录的实现(转摘)
今天开始在集群中配置HADOOP, 三个节点,一个是NAME-NODE, 两个是DATA-NODE。 配置SSH无密码验证登陆时,不太成功。找了网上CASE。 原来是自建.ssh目录时,没有将权限设置为700,而AUTHORIZED_KEYS的权限要设置为600. 按以下文章配置后,一切OK。
985 0
获取cuteftp中的ssh密码
昨天拿到一个管理员的机器,分析他上面的文件时在Application Data目录找到了cuteftp的dat文件,迅速下过来导入到cuteftp里拿密码,上面全是内网ip的ftp连接,内网是一个大的网域,可以通过密码拿到更多的机器。
852 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载