日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux之加密和安全

發(fā)布時間:2023/12/15 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux之加密和安全 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

加密和安全

安全機(jī)制

信息安全防護(hù)的目標(biāo)

保密性 Confidentiality
完整性 Integrity
可用性 Usability
可控制性 Controlability
不可否認(rèn)性 Non-repudiation

安全防護(hù)環(huán)節(jié)

物理安全:各種設(shè)備/主機(jī)、機(jī)房環(huán)境
系統(tǒng)安全:主機(jī)或設(shè)備的操作系統(tǒng)
應(yīng)用安全:各種網(wǎng)絡(luò)服務(wù)、應(yīng)用程序
網(wǎng)絡(luò)安全:對網(wǎng)絡(luò)訪問的控制、防火墻規(guī)則
數(shù)據(jù)安全:信息的備份與恢復(fù)、加密解密
管理安全:各種保障性的規(guī)范、流程、方法

安全

Spoofing 假冒
Tampering 篡改
Repudiation 否認(rèn)
Information Disclosure 信息泄漏
Denial of Service 拒絕服務(wù)
Elevation of Privilege 提升權(quán)限

安全設(shè)計基本原則

使用成熟的安全系統(tǒng)
以小人之心度輸入數(shù)據(jù)
外部系統(tǒng)是不安全的
最小授權(quán)
減少外部接口
缺省使用安全模式
安全不是似是而非
從STRIDE思考
在入口處檢查
從管理上保護(hù)好你的系統(tǒng)

安全算法

常用安全技術(shù)

認(rèn)證
授權(quán)
審計
安全通信

加密算法和協(xié)議

對稱加密
公鑰加密
單向加密
認(rèn)證協(xié)議

對稱加密算法:
加密和解密使用同一個密鑰
特性:
1、加密、解密使用同一個密鑰,效率高
2、將原始數(shù)據(jù)分割成固定大小的塊,逐個進(jìn)行加密
缺陷:
1、密鑰過多
2、密鑰分發(fā)
3、數(shù)據(jù)來源無法確認(rèn)

非對稱加密算法
公鑰加密:密鑰是成對出現(xiàn)

公鑰:公開給所有人;public key
私鑰:自己留存,必須保證其私密性;secret key

特點:用公鑰加密數(shù)據(jù),只能使用與之配對的私鑰解密;反之亦然
功能:

數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方身份
對稱密鑰交換:發(fā)送方用對方的公鑰加密一個對稱密鑰后發(fā)送給對方
數(shù)據(jù)加密:適合加密較小數(shù)據(jù)

缺點:密鑰長,加密解密效率低下
算法:
RSA(加密,數(shù)字簽名)
DSA(數(shù)字簽名)
ELGamal
數(shù)字簽名

Shell中可以使用

sha256sum 計算文件的哈希值,從而和網(wǎng)上下載提供的哈希值對比,如果相同證明該文件未被篡改過。

使用gpg實現(xiàn)對稱加密
對稱加密file文件需輸入兩次密碼

gpg -c file
ls file.gpg

在另一臺主機(jī)上解密file 指定解密后文件名并解密

gpg -o file -d file.gpg

使用gpg工具實現(xiàn)公鑰加密密鑰生成后在家目錄下.gnupg目錄中
在hostB主機(jī)上用公鑰加密,在hostA主機(jī)上解密
在hostA主機(jī)上生成公鑰/私鑰對

gpg --gen-key

在hostA主機(jī)上查看公鑰

gpg --list-keys

在hostA主機(jī)上導(dǎo)出公鑰到martinhe.pubkey

gpg -a --export -o martinhe.pubkey

從hostA主機(jī)上復(fù)制公鑰文件到需加密的B主機(jī)上

scp marinthe.pubkey hostB

在需加密數(shù)據(jù)的hostB主機(jī)上生成公鑰/私鑰對

gpg --list-keys
gpg --gen-key

在hostB主機(jī)上導(dǎo)入公鑰

gpg --import martinhe.pubkey
gpg --list-keys

用從hostA主機(jī)導(dǎo)入的公鑰,加密hostB主機(jī)的文件file,生成file.gpg

gpg -e -r martinhe file
file file.gpg

復(fù)制加密文件到hostA主機(jī)

scp fstab.gpg hostA:

在hostA主機(jī)解密文件

gpg -d file.gpg
gpg -o file -d file.gpg

刪除公鑰和私鑰:先刪除導(dǎo)入的A公鑰,再刪除本機(jī)的私鑰,最后刪除本機(jī)的公鑰

gpg --delete-keys martinhe
gpg --delete-secret-keys chengge
gpg --delete-keys chengge

CA和證書
PKI:Public Key Infrastructure

簽證機(jī)構(gòu):CA(Certificate Authority)
注冊機(jī)構(gòu):RA
證書吊銷列表:CRL
證書存取庫:

X.509:定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn)

版本號
序列號
簽名算法
頒發(fā)者
有效期限
主體名稱
主體公鑰
CRL分發(fā)點
擴(kuò)展信息
發(fā)行者簽名

證書獲取
證書類型:

證書授權(quán)機(jī)構(gòu)的證書
服務(wù)器
用戶證書

獲取證書兩種方法:
? 使用證書授權(quán)機(jī)構(gòu)

生成證書請求(csr)
將證書請求csr發(fā)送給CA
CA簽名頒發(fā)證書

? 自簽名的證書

自已簽發(fā)自己的公鑰

SSL/TLS

HTTPS結(jié)構(gòu)

HTTPS工作過程

OpenSSL
OpenSSL:開源項目

三個組件:

openssl:多用途的命令行工具,包openssl
libcrypto:加密算法庫,包openssl-libs
libssl:加密模塊應(yīng)用庫,實現(xiàn)了ssl及tls,包nss

openssl命令:

兩種運行模式:交互模式和批處理模式
openssl version:程序版本號
標(biāo)準(zhǔn)命令、消息摘要命令、加密命令
標(biāo)準(zhǔn)命令:enc, ca, req, ...

openssl命令
對稱加密:

工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish

enc命令:

幫助:man enc
加密:-a 指定加密基于base64編碼(不指定生成機(jī)密文件內(nèi)為亂碼):每6位分割,不足6位后面補(bǔ)零

openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher

解密:解密時如果不指定輸出文件,則在屏幕打印解密文件內(nèi)容

openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
openssl ?

用于校驗本地文件是否被篡改,可提前生成校驗文件然后保存下來

md5sum sohu.txt > sohu.txt.md5
md5sum -c|--check sohu.txt

單向加密:

工具:md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst

dgst命令:

幫助:man dgst
openssl dgst -md5 [-hex默認(rèn)] /PATH/SOMEFILE
openssl dgst -md5 testfile

md5sum /PATH/TO/SOMEFILE

MAC: Message Authentication Code,單向加密的一種延伸應(yīng)用,用于實現(xiàn)
網(wǎng)絡(luò)通信中保證所傳輸數(shù)據(jù)的完整性機(jī)制

CBC-MAC
HMAC:使用md5或sha1算法

生成用戶密碼:

passwd命令:
幫助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos

生成隨機(jī)數(shù):

幫助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字節(jié)數(shù),使用-hex,每個字符為十六進(jìn)制,相當(dāng)于4位二進(jìn)制,
出現(xiàn)的字符數(shù)為NUM*2
openssl rand -base64 12 | grep -o "[[:alnum:]]{9}"
可用于生成9位隨機(jī)字母數(shù)字的字串

公鑰加密:

算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)

數(shù)字簽名:

算法:RSA, DSA, ELGamal

密鑰交換:

算法:dh
DSA:Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:

生成密鑰對兒:man genrsa
生成私鑰

openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa –out test.key –des3 ) 生成私鑰的同時使用des3對稱口令加密-平時不加口令,前提確保密鑰安全
openssl rsa -in test.key –out test2.key 將加密key解密

從私鑰中提取出公鑰

openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
openssl rsa –in test.key –pubout –out test.key.pub

隨機(jī)數(shù)生成器:偽隨機(jī)數(shù)字

鍵盤和鼠標(biāo),塊設(shè)備中斷
/dev/random:僅從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,阻塞
/dev/urandom:從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,會利用軟件生成偽隨機(jī)
數(shù),非阻塞

PKI:Public Key Infrastructure

CA
RA
CRL
證書存取庫

建立私有CA:

OpenCA
openssl

證書申請及簽署步驟:

1、生成申請請求
2、RA核驗
3、CA簽署
4、獲取證書

創(chuàng)建CA和申請證書

創(chuàng)建私有CA:

openssl的配置文件:/etc/pki/tls/openssl.cnf
三種策略:match匹配、optional可選、supplied提供
match:要求申請?zhí)顚懙男畔⒏鶦A設(shè)置信息必須一致
optional:可有可無,跟CA設(shè)置信息可不一致
supplied:必須填寫這項申請信息,

1、創(chuàng)建所需要的文件

touch /etc/pki/CA/index.txt 生成證書索引數(shù)據(jù)庫文件
echo 01 > /etc/pki/CA/serial 指定第一個頒發(fā)證書的序列號

2、 CA自簽證書

生成私鑰
cd /etc/pki/CA/
(umask 066; openssl genrsa -out private/cakey.pem 2048)

生成自簽名證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem

選項說明:

-new:生成新證書簽署請求
-x509:專用于CA生成自簽證書
-key:生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保存路徑

3、頒發(fā)證書

在需要使用證書的主機(jī)生成證書請求
給web服務(wù)器生成私鑰

(umask 066; openssl genrsa –out /data/test.key 2048)

生成證書申請文件

openssl req -new -key /data/test.key -out /data/test.csr

將證書請求文件傳輸給CA
CA簽署證書,并將證書頒發(fā)給請求者

openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 100
注意:默認(rèn)要求 國家,省,公司名稱三項必須和CA一致

查看證書中的信息:

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates
openssl ca -status SERIAL 查看指定編號的證書狀態(tài)

4、吊銷證書

在客戶端獲取要吊銷的證書的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

在CA上,根據(jù)客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,
吊銷證書:

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

指定第一個吊銷證書的編號,注意:第一次更新證書吊銷列表前,才需要執(zhí)行

echo 01 > /etc/pki/CA/crlnumber

更新證書吊銷列表

openssl ca -gencrl -out /etc/pki/CA/crl.pem

查看crl文件:

openssl crl -in /etc/pki/CA/crl.pem -noout -text

實驗:私有CA建立和證書申請,寫成腳本


1 創(chuàng)建CA /etc/pki/tls/openssl.cnf 此文件為CA配置文件

cd /etc/pki/CA
touch index.txt 數(shù)據(jù)庫文件
echo 0F > serial 證書序列號-16進(jìn)制數(shù)
(umask 066;openssl genrsa -out private/cakey.pem 4096 ) 創(chuàng)建根CA私鑰 長度4096 保證權(quán)限為600
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
req:證書申請
-new:新的證書
-x509:自簽名
-key:提交自己的私鑰
-out:生成證書文件
-days:有效期3650天 私鑰自簽名證書
此三項必填(填寫國家、省會,公司名稱),城市,部門名稱,主機(jī)名稱,郵箱可寫可不寫。
openssl x509 -in cacert.pem -noout -text 查看證書內(nèi)容

2 在客戶端生成證書申請

(umask 066;openssl genrsa -out test.key 1024) 生成私鑰
openssl req -new -key test.key -out test.csr 利用私鑰生成證書申請csr文件,其中填寫三項必須和上面一致。
scp test.csr 192.168.36.7:/data

3 在根CA給客戶端頒發(fā)證書

openssl ca -in /data/test.csr -out certs/test.crt -days 100 頒發(fā)證書
同一個證書申請csr如果向重復(fù)頒發(fā)證書文件,需要把index.txt.attr文件里的字段唯一性檢查改為no

4 吊銷證書

在客戶端獲取要吊銷的證書的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

在CA上,根據(jù)客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,吊銷證書:

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

指定第一個吊銷證書的編號,注意:第一次更新證書吊銷列表前,才需要執(zhí)行

echo 01 > /etc/pki/CA/crlnumber

更新證書吊銷列表

openssl ca -gencrl -out /etc/pki/CA/crl.pem

查看crl文件:

openssl crl -in /etc/pki/CA/crl.pem -noout -text

#!/bin/bash # #--------------------------------------- #Author: MartinHe #Date: 2019-04-19 #FileName: CA_create.sh #URL: https://blog.51cto.com/5033330 #Desciption: The test Scirpt #Copyright(c) 2019 All rights reserved #---------------------------------------# 根CA創(chuàng)建函數(shù),內(nèi)部定義自行修改 creatCA () {expect<<EOF spawn openssl req -new -x509 -key $DIR/private/cakey.pem -out $DIR/cacert.pem -days 3650 expect { "Country Name" { send "CN\n";exp_continue } "State or Province Name" { send "beijing\n";exp_continue } "Locality Name" { send "beijing\n";exp_continue } "Organization Name" { send "martinhe\n";exp_continue }"Organizational Unit Name" { send "m36\n";exp_continue} "Common Name" { send "ca.martinhe.com\n";exp_continue } "Email Address" { send "admin@martinhe.com\n" } }expect eof EOF}# 使用私鑰生成證書申請csr文件,內(nèi)部定義自行修改 applyCA () {expect<<EOF spawn openssl req -new -key ./${KEY}.key -out ./${KEY}.csr expect { "Country Name" { send "CN\n";exp_continue } "State or Province Name" { send "beijing\n";exp_continue } "Locality Name" { send "haidian\n";exp_continue } "Organization Name" { send "martinhe\n";exp_continue } "Organizational Unit Name" { send "m36_devops\n";exp_continue} "Common Name" { send "m36.martinhe.com\n";exp_continue } "Email Address" { send "m36@martinhe.com\n" ;exp_continue } "A challenge password" { send "\n";exp_continue } "An optional company name" { send "\n" } } expect eof EOF}BC="\e[1;32m" EC="\e[0m"PS3="Please choose a num which one you want to do: "DIR="/etc/pki/CA"select menu in createCA applyCA awardCA quit;docase $menu increateCA) touch $DIR/{index.txt,serial} echo 01 > $DIR/serial (umask 066;openssl genrsa -out $DIR/private/cakey.pem 4096) &> /dev/nullcreatCA;;applyCA)echo -e "${BC}please input a private key name: ${EC}\c";read KEY(umask 066;openssl genrsa -out ${KEY}.key 1024)applyCAecho -e "${BC}please input the CA server IP: ${EC}\c"; read IPscp ${KEY}.csr ${IP}:;;awardCA)echols /root/*.csrechoecho -e "${BC}please input the csr name to ward(such as test): ${EC}\c";read CSRopenssl ca -in /root/${CSR}.csr -out $DIR/certs/$CSR.crt -days 100;;quit)echo you input is $REPLYbreak;;*)echo -e "${BC}Wrong choose,stupid!!!${EC}"esac done

轉(zhuǎn)載于:https://blog.51cto.com/5033330/2380672

總結(jié)

以上是生活随笔為你收集整理的Linux之加密和安全的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。