隨着互聯網的高速普及和發展,已經完全成爲咱們生活中不可缺乏的一部分,它不只提高了咱們的工做效率,還成爲人與人溝通必不可少的橋樑。衆所周知,互聯網這把雙刃劍有時候也會給咱們帶來一些麻煩,而這些麻煩可大可小,在數據爲王的今天,面對各類安全隱患咱們應該如何應對呢?
算法
###############################################
數據庫
1、數據傳輸過程當中的安全隱患vim
2、如何解決數據傳輸過程當中的安全性安全
3、https保證數據安全傳輸bash
4、OpenSSL簡介服務器
5、openssl實現私有CA網絡
6、OpenSSH服務 ###############################################ssh
1、數據傳輸過程當中的安全隱患tcp
機密性ide
使用ftp、http、smtp、telnet這些協議進行傳輸的數據是明文,任何人監聽便可截獲數據,如圖:
完整性
數據傳輸過程當中別人篡改,如圖:
身份驗證
監聽者假裝PAUL身份與KEBO通訊,如圖:
2、如何解決數據傳輸過程當中的安全性
機密性
使用一種轉換規則將明文轉換爲密文傳輸,接收方使用一樣規則轉換將密文轉換爲明文,如圖:
轉換算法:密鑰(就算對方知道轉換算法,不知道祕鑰依然沒法還原plaintext)
對稱加密:加解密同一個密匙,算法計算速度快,安全性徹底依賴於密匙,
缺點:通訊對象不少的狀況下,沒法有效的對密鑰進行管理。
優勢:算法計算速度快。
常見類型有:
DES Data Encrption Standard 56bit(計算機暴力破解)
3DES 三次DES(當然能夠解決一部分現有問題)
AES 高級加密標準 128bit 密鑰
AES192 AES256 AES512 越長速度越慢,安全性越高
Blowfish
大小相同的數據庫(再進行加密)
完整性
發送方提取元數據特徵碼,而且附加在元數據後面,接收方接收到數據以後進行一樣的操做提取特徵碼,對比兩個特徵是否一致,來判斷傳輸過程當中元數據是否被修改如圖:
單向加密算法的特色:
一、輸入同樣,輸出必然相同
二、雪崩效應:輸入的微小改變,將會引發結果的巨大改變
三、定長輸出:不管原始數據多大,結果大小都是相同的(定長輸出)
四、不可逆:沒法根據特徵碼還原源數據
常見類型有:
MD4
MD5
SHA1
SHA192 SHA256 SHA384 輸出長度
CRC-32循環冗餘校驗碼校驗用的,輸入不同,有可能輸出同樣
身份驗證
非對稱加密算法中,發送方用本身的私鑰加密數據,能夠實現身份驗證,如圖:
非對稱加密算法的特色
一、公鑰來自於私,鑰公鑰加密私鑰解密。
二、拿別人公鑰成功解密可證實這我的的身份,由於只有加密者的公鑰能夠解密。
三、發送方用本身的私鑰加密數據,能夠實現身份驗證
缺點:公鑰加密算法不多用來加密數據,速度太慢,一般用來實現身份認證。
優勢:有效解決的對密鑰管理的問題。
證書頒發機構如何簽署證書
首先CA對證書申請者的姓名、地址、公鑰等相關數據提取特徵碼,以後CA用本身的私鑰對這段特徵碼進行加密,這段加密的特徵碼又稱數字簽名,申請者數據和CA的數據簽名共同組成證書。
證書如何確保公鑰的可靠性:
一、接收方有CA的證書,所以能夠獲得可靠的CA公鑰。
二、接收方使用CA公鑰解密發送方證書中的特徵碼。
三、若是能夠機密,則能夠確認此證書確實是CA簽署的(信任具備傳遞性)。
四、接收方對證書中數據部分提取特徵碼,對比與機密特徵碼是否一致。
五、若是一致則說明姓名、地址、公鑰等信息徹底可靠。
機密性+完整性+身份驗證
PAUL收到數據,用對稱祕鑰機密實現機密性,用KOBE公鑰機密特徵碼實現其身份驗證,對元數據從新提取特徵碼,對比機密解密出來的特徵碼是否一致實現完整性。
註釋:以上全部內容稱爲PKI,目前流行的TLS/SSL均使用 x509證書格式。
PKI的第二種實現叫作OpenGPG,也是一種證書管理機制。
3、https保證數據安全傳輸
Secure Socket Layer
它是https得以實現的一個基礎,它自己只是一個庫,應用層和傳輸層之間,當應用層(http)數據到達傳輸層(tcp)以前,調用SSL加密數據,今後http搖身一變成爲https,smtp成爲smtps,衆多明文協議均可以經過調用SSL實現密文傳輸,可是https和http仍然是兩種徹底不一樣的協調,雖然他們上層的功能是同樣的。
https通訊過程
4、OpenSSL簡介
爲網絡通訊提供安全及數據完整性的一種安全協議,囊括了主要的密碼算法、經常使用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用,OpenSSL是SSL的開源實現。
文件結構
libcrpto 通用加密庫
libssl TLS/SSL的實現
基於會話的、實現了身份認證、數據機密性和會話完整性的TLS/SSL庫
opensll 多用途命令行工具
實現私有證書頒發機
加解密數據
提取文件特徵碼
生成用戶的密碼串
5、openssl實現私有CA
建立CA
一、修改配置文件vim /etc/pki/tls/openssl.cnf 如圖:
三、生成自簽證書
三、準備目錄
mkdir certs newcerts crl touch index.txt touch serial echo 01 > serial
客戶端證書頒發請求
每一種應用都有本身的證書,剛纔的祕鑰是CA用的,此處用同一臺機器模擬客戶端,如圖:
CA簽署證書
一、簽署此證書後傳送給客戶端
查看數據庫是否簽署成功
6、OpenSSH服務
openssh是telnet的開源密文實現,telnet爲TCP/23號端口,ssh爲TCP/22號端口,OpenSSH即便軟件,又是協議,常見版本有sshv一、sshv1,因v1沒法有效拒絕中間人***,因此目前v2版較爲常見。
ssh --> telnet如何實現認證加密
一、基於口令的認證(登陸普通用戶,再su到root)
二、基於祕鑰的認證
配置文件
客戶端 ssh /etc/ssh/ssh_config
服務器 sshd /etc/ssh/sshd_config
基於口令的認證
遠程登陸
以非登錄的方式執行遠程主機命令
基於祕鑰的認證
一、生成一對密鑰
命令默認建立路徑和文件
二、使用ssh-copy-id 工具公鑰傳輸至服務器端某用戶的家目錄下的.ssh/authorized_keys文件中,再次登陸無需密碼。
三、使用scp手動完成複製公鑰至目標主機操做,在沒有ssh-copy-id命令狀況下使用,如圖:
總結:
一、密碼應該常常換;切足夠複雜
二、使用非默認端口
三、限制登陸客戶地址
四、禁止管理員直接登陸
五、使用基於祕鑰的認證
六、僅容許有限用戶登錄
七、禁止使用版本1