Linux学习日志(十五)
2016-05-16 02:25
681 查看
加密解密及CA
加密方式:对称加密、公钥加密、单向加密 加密、解密 明文:plaintext,cleartext -->密文 -->
对称加密:
加密算法+口令 明文 --> 密文 字典攻击 加密方,解密方使用同一个口令 DES(56bits):数据加密标准 3DES AES(128bits):高级加密标准 Blowfish Twofish IDEA RC6 CAST5 Serpent 特性: 1.加密/解密使用统一口令 2.将原文分割成固定大小的数据块,对这些块进行加密 ECB,CBC 1.口令传输 2.密钥太多 密钥交换: 用户认证: 数据完整性:
密钥交换(IKE:Inernet Key Exchange):DH算法
非对称加密
加密算法:RSA,EIGmal,DSA 1.密钥交换 2.用户身份认证 单向加密: 抽取数据特征码: MD5,SHA1,SHA512,CRC-32(循环冗余校验码) 1.完整性, 消息认证算法:MAC(Message Authenntication Codes) CBC-MAC HMAC 雪崩效应 定长输出:
PKI:Pubile key Infrastucture 公钥基础设施
openssl gpg
openssl:套件,开源软件libcrypto:通用功能的加密库 libssl:用于实现TLX/SSL的功能 openssl: 多功能命令工具 生成密钥,创建数字证书,手动加密解密数据
加密解密技术常用的功能及算法:
对称加密:工具:gpg openssl enc 加密:openssl enc -des3 -a -salt -in /ets/fstab -out /tmp/fstab.cipher 解密:openssl enc -d -dec3 -a -salt -in /tmp/fstab.cipher -out 文件
单向加密:
特性:One-Way Collision-free: 算法 md5:128bits sha1:160bits sha512:512bits 工具:sha1sum,md5sum,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 公钥加密:公钥加密,私钥解密 密钥对: 公钥: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发证:自签署证书
用openssl实现私有CA
服务器端:1.配置文件/etc/pki/tls/openssl.cnf
(centos 5 需要更改)
2.生成密钥对儿:
# (umask 077; openssl genrsa -out private/cakey.pem 2048) 如果想查看公钥: # openssl rsa -in private/cakey.pem -pubout -text -noout
3.生成自签证书
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
4.创建需要的文件:
# touch index.txt serial crlnumber
5.接收到客户端的信息后
1)CA签署证书 签署:# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days DAYS 2) 将证书传回请求者 ##吊销证书: # openssl ca -revoke /path/to/somefile.crt
客户端端:
用openssl实现证书申请:
1.在主机上生成密钥,保存至应用此证书的服务的配置文件目录下, 例如:
# mkdir /etc/httpd/ssl # cd /etc/httpd/ssl # (umask 077; openssl genrsa -out httpd.key 1024)
2.生成证书签署请求:
# openssl req -new -key httpd.key -out httpd.csr
3.将请求文件发往CA;
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号端口 /etc/services 解析库,进程<->端口 ssh文本协议:字符通信
sshv1,sshv2
由于sshv1是居于CRC-32做MAC,因此,不安全,建议勿用 sshv2 基于双发主机协商选择最安全的MAC实现机制 加密机制和MAC机制是双方协商选定 基于DH实现密钥交换,基于RSA或DAS实现身份认证 客户端通过检查服务端的主机密钥来判断是否与其进一步通信
OpenSSH(C/S)
Server:监听tcp22 Client:程序 windows客户端:xmanager(xshell)、SecureCRT、putty、sshshellcilent
openssh客户端组件:
ssh ssh Username@HOST [command] ssh -l Username HOST [command] -p port:指定要连入端口 ssh认证机制: 基于口令 基于密钥 客户端在本地生成一对密钥 客户端将公钥复制到服务器,要登陆的用户的家目录下的隐藏目录.ssh中的一个名为authorized_keys或authorized_keys2中 配置过程: 1.生成密钥对,客户端 ssh-key -t rsa 生成的密钥默认保存至当前家目录下的.ssh下的id_rsa,公钥在id_rsa.pub 文件中 2.复制密钥至远程主机: ssh-copy-id -i 公钥文件 登陆用户@远程ip地址
相关配置文件:
配置文件 /etc/ssh/sshd_config 服务脚本 /etc/rc.d/init.d/sshd 脚本配置文件:/etc/sysconfig/sshd
查看config文件的帮助
man sshd_config ListernAddress 当前主机的监听地址 Protocol 协议版本 # HostKeys for protocol version 2 #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key 验证主机的公钥 #KeyRegenerationInterval 1h 密钥的使用时间 #ServerKeyBits 1024 密钥长度 #LogLevel INFO 日志级别 #LoginGraceTime 2m 登陆宽限期 #PermitRootLogin yes root是否可以登录 #StrictModes yes 严格模式,家目录 属主 属组 #MaxAuthTries 6 最多可以承受的次数 #MaxSessions 10 最大的连接数 PasswordAuthentication yes 是否使用用户名和密码的方式 Kerberos集中认证管理 X11Forwarding yes 是否转发图形窗口 AllowUsers user1 user2 用户白名单 Allowgroups 组白名单 DenyUser 用户黑名单
###使用ssh的最佳实践
1)only use ssh protocol 2 2)limit users SSh access Allowusers root vivek jerry 白名单 denyUser saroj anjali foo 黑名单 3)configure Idle Log out timeout Interval 配置空闲超时长。 ClientAliveCountMax 300 ClientAliveInterval 0 4)Firwall SSH Port # 22 使用iptables设置ssh服务安全访问策略 5)change ssh port and Limit IP binding port 300 Listaddress 192.168.1.5 ListenAddress 202.54.1.5 勿使用默认22端口 6)use Strong SSH passwords and passphrase genpasswd(){ local 1=$1 [ "$1" == "" ]&& 1=20 tr -dc A-Za-z0-9_</dev/urandom | head -c ${1} | xargs } 使用足够长足够复杂的密码,且定期更换。 7)use Public key Based AUthentication 使用公钥认证。 8)disable Empty password 9)thwart ssh crakers (Brute Force attack) google:ssh best practice 10)rate-limit incoming port # 22 COnnections 限制ssh访问频度 11)use log analyzer 记录好日志,经常做日志分析。
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的服务器端有以下项,则代表支持sftp Subsystem sftp /usr/libexec/openssh/sftp-server 用法: sftp[username@]HOST
用户登录信息获取
/var/log/wtmp:显示用户最近一次的登录信息,成功的 last /var/log/btmp:显示用户登录的信息,并尝试失败的 lastb lastlog:每个用户最近一次成功登陆的信息
bash编程的信号捕获
trap 陷阱 trap ‘command’ signal kill -l KILL无法捕捉 信号捕捉用于:在中途中止时做一些清理操作 使用失列 #!/bin/bash # Clean(){ echo "quit" return 5 } tarp 'echo "quit"; eixt 5' IN 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
相关文章推荐
- linux定时器流程自我总结
- C#在Linux上的开发指南
- 6.分析Linux内核创建一个新进程的过程
- Linux文件链接
- 慕课linux学习笔记(七)常用命令(4)
- Centos下快速搭建svn版本库
- zabbix 添加监控Linux Disk I/O 模板
- win7下硬盘安装fedora,linux的学习之路
- 嵌入式linux教程
- Linux下堆漏洞的利用机制
- Linux内核提权查询
- MySQL5.6主从复制的配置(CentOS-6.6+MySQL-5.6)(二)
- MySQL5.6源码编译安装(CentOS-6.6+MySQL-5.6)(一)
- linux ar命令
- CentOS7下配置QT环境常出现的问题
- Linux命令行下安装Maven与配置
- Linux驱动开发之 七 (不知道目录结构,何谈Linux)
- Linux下GCC相关知识点
- 在外网使用ssh连接内网中的多台Linux服务器
- linux多线程编程