加密和安全

本章內容 

• 安全機制 

• 對稱和非對稱加密 

• 散列算法 

• gpg • PKI和CA 

• openssl 

• 證書管理

 • ssh服務和dropbear 

• aide 

• Sudo 

• TCP Wrappers 




 安全機制

•安全機制 :加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證 

•安全服務: 認證 訪問控制 數據保密性 連接保密性 無連接保密性 選擇域保密性 流量保密性 數據完整性 不可否認性


對稱和非對稱加密

對稱加密:加密和解密使用同一個密鑰,依賴於算法和密鑰,但其安全性依賴於密鑰而非算法:

常見的算法 DES:3DES     AES     IDEA     RC6     CAST5     Blowfish

非對稱加密:採用的是公鑰加密算法,當然還需要另一個密鑰解密,這個密鑰成爲私鑰,兩者統稱爲密鑰對兒。

私鑰:secret key,僅允許個人使用

公鑰:pubilc key,公開給所有人獲取

 公鑰是從私鑰中提取而來的;使用公鑰加密的數據,只能使用於此公鑰配對兒的私鑰解密,反之亦然。

用處:

(1),身份認證:私鑰擁有者用自己的私鑰加密的數據,只要用其公鑰能解密,即可認證其身份;

(2),密鑰交換:與被通信方通信之前,首先獲取到對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,併發送給對方;

(3),數據加密

 算法:    RSA(加密,數字簽名)      DSA(數字簽名)     ELGamal


散列算法

單向散列

• 任意長度輸入 

• 固定長度輸出

• 功能:數據完整性 

• 常見算式 md5: 128bits 、    sha1: 160bits 、    sha224 sha256 、    sha384 、    sha512 

• 常用工具 

• md5sum | sha1sum [ --check ] file

• openssl、gpg 

• rpm -V

 (在linux系統上常用的加密工具有兩個:openssl 和gpg,pgp是一個協議,而gpg是實現這個協議的一個軟件,因此說gpg是pgp的實現) 


密鑰交換
雙方通過交換密鑰數據加密解密;密鑰交換有兩種:

 公鑰加密:將公鑰加密後通過網絡傳輸到對方進行解密,這種方式還有很大可能被截取破解,不常用;

 DH:雙方共有一些參數,共同協商加密算法,除此之外雙方還有屬於自己的私有參數,通過共有的參數,私有參數和算法信息來進行加密,然後雙方將計算後的結果進行交換,交換完成後再和屬於自己私有參數進行特殊算法,經過雙方計算後的結果是相同的,而這個結果就是密鑰

如:

A有p和g兩個參數,A還有一個屬於自己的私有參數x;

B有p和g兩個參數,B還有一個屬於自己的私有參數y;

A和B有相同的加密算法即

A:p^X%G

B:p^Y%G

然後上方交換計算後的結果,此時A拿到B的P^Y%G,B拿到A的P^X%G,雙方再和自己的私有參數進行相同的算法,即:A;對P^Y%G,再求X次方(P^X%G)^X=P^XY%G     B:(P^X%G)再求Y次方得(P^X%G)^y=P^XY%G 最後A和B的結果是一樣的

注意:整個過程中對於第三方人員來說只能獲取p,g兩個值,AB雙方交換的是經過計算後的值,因此這種加密方式是很安全的。


  一次加密通信過程


發送者
1,使用單向加密算法提取生成數據的特徵碼;

2,使用自己的私鑰加密特徵碼附加在數據後面;

3,生成用於對稱加密的臨時密鑰;

4,用此臨時密鑰加密數據和已經使用私鑰加密後的特徵碼;

5,使用接收方的公鑰加密此臨時密鑰;附加在對稱加密後的數據後方;

接收方

1,使用自己的私鑰解密加密的臨時密鑰;從而獲得對稱密鑰;

2,使用對稱密鑰解密對稱加密的數據和私鑰加密的特徵密文;從而獲得數據和特徵密文;

3,使用發送方的公鑰解密特徵碼密文,從而獲得從計算機生成的特徵碼;

4,使用與對方同樣的單向加密算法計算數據的特徵碼,並與解密而來的進行比較;


數字證書

 在雙方通訊過程中,數據的加密解密依賴於對方的公鑰,因此就需要一種可靠機制能夠保證公鑰數據的安全性,這種機制就是CA,CA是一個證書頒發機構,這個機構負責證書的頒發,誰需要就去CA購買,買完之去後驗證證書就可以了。那麼我們如何知道或確定一個證書就是正規的CA頒發的呢?

我們來捋一捋:A要給B進行通信,A將自己的公鑰發給了B,那B就需要知道A發過來的公鑰是否爲正規的CA頒發的,A在獲得CA給其頒發的證書時會在證書上面蓋一個戳,那因此我們就需要通過驗證戳的真實性來驗證A的公鑰的合法性,所以上面的關鍵所在就是驗證CA所蓋的戳了,那怎麼驗證呢?解鈴還須繫鈴人,我們可以通過驗證CA自身的證書就可以了,那CA 的證書又是從哪裏獲得呢?答:從操作系統上獲得的,也就是系統發行商會把這些CA證書做進操作系統裏,在需要時可以直接進行比對,如果操作系統中沒有固話的這些CA證書,那麼就可以說該CA證書是不合法的。

  CA只是PKI的一個組成部分,PKI包括:

簽證機構:CA,相當於我們辦理×××時的公安局(真正頒發證件的機構)

註冊機構:RA,相當於我們辦理×××時的派出所(幫你拍照信息錄入的機構)

證書吊銷列表:CRL,相當於我們證件丟失時掛失的內容

證書存取庫:當別人去請求認證時的資料庫

證書通常有兩類用途:用戶證書和主機證書(入httpd)

 

數字證書的獲取

獲取證書的方法有兩種:向RA註冊申請,或者自己建立私有CA,向RA註冊申請CA是需要花錢購買的通常用於企業生產環境當中,以滿足業務的需求;但有時我們僅僅是用於企業內部自身使用或者個人測試使用,因此我們沒有必要花錢購買CA證書,而OpenSSL工具以滿足我們創建私有CA的需求

使用OpenSSL構建私有CA的步驟:

1,生成私鑰

2,生成自簽署證書;

  1)私鑰用於簽發證書時,向證書添加數字簽名的使用;

  2)證書:每個通信方都導入此證書至“受信任的證書頒發機構”;

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

工作目錄:/etc/pki/CA


 建立私有CA

 1,生成私鑰文件/etc/pki/CA/private/cakey.pem 絕對路徑

#(umask 066:openssl genrsa-out /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 )

2生成自簽證書

#openssl req -new -x509 -key /etc/pki/CA/pri/vate/cakey.pem -out/etc/pki/CA/cacert.pem -days 365   

其中:

 -new:生成新的證書籤署請求;

 -key:私鑰文件路徑,用於提取公鑰;

 -days N:證書有效時長,單位爲“天”;

 -out:輸出文件保存位置;

 -x509:直接輸出自簽署的證書文件,通常只有構建CA時才這麼有用;


3,提供輔助文件

# touch /etc/pki/CA/index.txt

#echo 01>/etc/pki/CA/serial

  

 給節點頒發證書

1,節點申請證書

在證書申請的主機上進行如下步驟:

(1)生成私鑰;

(2)生成證書籤署請求;


注意

(a)其中的subject信息部分,要與CA的保持一致;

(b)Common Name要使用此主機在通信真實使用名字;

(3)把請求發送給CA


2,CA簽發證書

(1)驗證請求者信息

(2)簽署證書;

#openssl ca -in /PATH/FORM/CSR_FILE-out /PATH/TO/CAR_FILE -days N

 (3)把簽署好的證書發送給請求者。


吊銷證書;

1,獲取吊銷證書的序列號;

#openssl  x509 -in /PATH/FROM/CRT_FILE-noout-serial -subjiect


2實現證書吊銷

(1)吊銷證書

#openssl ca -revoke /PATH/FROM/CRT_FILE

(2)生成吊銷證書的編號

#echo 01>/etc/pkie/CA/crlnumber

(3)更新證書吊銷列表

#openssl crl -gencrl -out THISCA.crl


實驗一:CA中心部署(以centos7作爲根CA,centos6作爲子CA,centos5作爲app)

根ca

  cd /etc/pki/CA/ 進入工作目錄

   接着提供輔助文件

  touch index.txt     建立數據庫

  echo 00 > serial    生成序列號

  

  (umask 066;openssl genrsa -out private/cakey.pem -des3 2048)    生成私鑰  橙色陰影中-des3意思就是用des3加密一下,執行後的結果配口令

  ls private/    可以查看一下私鑰文件,此步驟非必須

  

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300    私鑰中提取公鑰(申請證書)  *橙色陰影裏寫的是相對路徑 

-key 後跟私鑰文件路徑,用於提取公鑰     -out 後接文件:輸出指定文件名,-out /etc/pki/CA/cacert.pem   就是輸出文件保存位置,並指定文件名。

image.png**

  sz cacert .pem 拷到物理機上

   到 此 CA 就 創 建 好 了    


繼續


子ca

 cd /etc/pki/CA/  

 touch index.txt

 echo 00 > serial

(umask 066;openssl genrsa -out private/cakey.pem -des3 2048)    服務商生成的私鑰

openssl req -new -key private/cakey.pem -out subca.csr   生成請求文件 (找CA中心申請

image.png


scp subca.csr [email protected]:/etc/pki/CA   複製到那邊(根ca)去,請求文件發給CA

scp  /文件路徑、文件   用戶名@ip地址  :/  /

image.png

根ca

  openssl ca -in subca.csr -out certs/subca.crt -days 3650     簽署,CA中心簽名

  scp certs/subca.crt [email protected]:/etc/pki/CA/cacert.pem    複製到子ca那裏

  再 yes一下


app(centos5)

   (umask 066;openssl genrsa -out rhel5.key 1024)  生成私鑰

   openssl req -new -key rhel5.key -out rhel5.csr  生成請求文件  生成請求文件以.csr結尾

   scp rhel5.csr [email protected]:/etc/pki/CA


子ca

  openssl ca -in rhel5.csr -out certs/rhel5.crt -days 365   籤一下

  scp certs/rhel5.crt [email protected]:/root



SSH 

• ssh: secure shell, protocol, 22/tcp, 安全的遠程登錄

• 具體的軟件實現:

 OpenSSH: ssh協議的開源實現,CentOS默認安裝

 dropbear:另一個開源實現

• SSH協議版本 

v1: 基於CRC-32做MAC,不安全;man-in-middle 

v2:雙方主機協議選擇安全的MAC方式 基於DH算法做密鑰交換,基於RSA或DSA實現身份認證 

• 兩種方式的用戶登錄認證: 基於password 基於key


Openssh軟件組成 

• OpenSSH介紹 

• 相關包: openssh openssh-clients openssh-server 

• 工具: 基於C/S結構 Client: ssh, scp, sftp,slogin 

Windows客戶端: xshell, putty, securecrt, sshsecureshellclient

Server: sshd


ssh客戶端 

• 客戶端組件: 

ssh, 配置文件:/etc/ssh/ssh_config 

    Host PATTERN 

        StrictHostKeyChecking no 首次登錄不顯示檢查提示 

• 格式:

ssh [user@]host [COMMAND] 

ssh [-l user] host [COMMAND] 

-p port:遠程服務器監聽的端口 

-b:指定連接的源IP 

-v:調試模式 

-C:壓縮方式 

-X: 支持x11轉發 

-Y:支持信任x11轉發 ForwardX11Trusted yes 

-t: 強制僞tty分配 

ssh -t remoteserver1 ssh remoteserver2          ssh 連接remoteserver2通過連接remoteserver1實現,比如A要和C連接,則A連接B,B連接C



ssh客戶端

• 允許實現對遠程系統經驗證地加密安全訪問 

• 當用戶遠程連接ssh服務器時,會複製ssh服務器/etc/ssh/ssh_host*key.pubCentOS7默認是 ssh_host_ecdsa_key.pub)文件中的公鑰到客戶機的~./ssh/know_hosts中。下次連接時,會自動 匹配相應私鑰,不能匹配,將拒絕連接


ssh服務登錄驗證 

• ssh服務登錄驗證方式: 用戶/口令 基於密鑰 

• 基於用戶和口令登錄驗證 

– 1 客戶端發起ssh請求,服務器會把自己的公鑰發送給用戶 

– 2 用戶會根據服務器發來的公鑰對密碼進行加密 

– 3 加密後的信息回傳給服務器,服務器用自己的私鑰解密,如果密碼正確 ,則用戶登錄成功

ssh服務登錄驗證 

• 基於密鑰的登錄方式

 – 1 首先在客戶端生成一對密鑰(ssh-keygen) 

– 2 並將客戶端的公鑰ssh-copy-id 拷貝到服務端 

– 3 當客戶端再次發送一個連接請求,包括ip、用戶名 

– 4 服務端得到客戶端的請求後,會到authorized_keys中查找,如果有響應的IP和用戶,就會 隨機生成一個字符串,例如:acdf 

– 5 服務端將使用客戶端拷貝過來的公鑰進行加密,然後發送給客戶端 

– 6 得到服務端發來的消息後,客戶端會使用私鑰進行解密,然後將解密後的字符串發送給服務端 

– 7服務端接受到客戶端發來的字符串後,跟之前的字符串進行對比,如果一致,就允許免密碼登錄

image.png


基於key認證 

• 基於密鑰的認證: 

• (1) 在客戶端生成密鑰對 ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"] 

• (2) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄 ssh-copy-id [-i [identity_file]] [user@]host 

• (3) 測試 

• (4) 在SecureCRT或Xshell實現基於key驗證 在SecureCRT工具—>創建公鑰—>生成Identity.pub文件 轉化爲openssh兼容格式(適合SecureCRT,Xshell不需要轉化格式),並複製到需登錄主機上相應文件 authorized_keys中,注意權限必須爲600,在需登錄的ssh主機上執行: ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys

• (5)重設私鑰口令: ssh-keygen –p 

• (6)驗證代理(authentication agent)保密解密後的密鑰 

• 這樣口令就只需要輸入一次 

• 在GNOME中,代理被自動提供給root用戶 

• 否則運行ssh-agent bash 

• (7)鑰匙通過命令添加給代理 ssh-add


scp命令 

• scp命令: 

• scp [options] SRC... DEST/ 

• 兩種方式: scp [options] [user@]host:/sourcefile /destpath scp [options] /sourcefile [user@]host:/destpath

 • 常用選項:

 -C: 壓縮數據流 

-r: 遞歸複製 

-p: 保持原文件的屬性信息 

-q: 靜默模式 

-P PORT: 指明remote host的監聽的端口


rsync命令 

• 基於ssh 和rsh服務實現高效率的遠程系統之間複製文件 

• 使用安全的shell連接做爲傳輸方式 

• rsync –av /etc server1:/tmp 複製目錄和目錄下文件 

• rsync –av /etc/ server1:/tmp 只複製目錄下文件 

• 比scp更快,只複製不同的文件 

• 選項:

-n 模擬複製過程 

-v 顯示詳細過程 

-r 遞歸複製目錄樹 

-p 保留權限 

-t 保留時間戳 

-g 保留組信息 

-o 保留所有者信息 

-l 將軟鏈接文件本身進行復制(默認) 

-L 將軟鏈接文件指向的文件複製 

-a 存檔,相當於–rlptgoD,但不保留ACL(-A)和SELinux屬性( - X )

例如  把6上的magescp.txt文件拷貝到7的root下   rsync  -選項(看想保留什麼權限) magescp.txt root @c7:/root/

rsync可以保證兩個文件同步

sftp命令 

• 交互式文件傳輸工具 

• 用法和傳統的ftp工具相似 

• sftp user@ip地址  利用ssh服務實現安全的文件上傳和下載

• 使用ls cd mkdir rmdir pwd get put等指令,可用?或help獲取幫助信息 sftp [user@]host sftp> help


PSSH

批量操作工具


用法:PSSH [選項]命令[…]

-h 執行命令的遠程主機列表,文件內容格式[user@]host[:port]

-H 執行命令主機,主機格式 user@ip:port

-l 遠程機器的用戶名
-p 一次最大允許多少連接
-P 執行時輸出執行信息
-o 輸出內容重定向到一個文件
-e 執行錯誤重定向到一個文件
-t 設置命令執行超時時間
-A 提示輸入密碼並且把密碼傳遞給ssh(如果私鑰也有密碼也用這個參數)
-O 設置ssh一些選項
-x 設置ssh額外的一些參數,可以多個,不同參數間空格分開
-X 同-x,但是隻能設置一個參數
-i 顯示標準輸出和標準錯誤在每臺host執行完畢後其他工具

pssh -h host.txt -l root -o /tmp/uptime uptime    在host.txt中列出的服務器上,遠程執行uptime命令,並將執行結果輸出到/tmp/uptime目錄下

其中相關參數說明

-h host.txt  指定服務器列表host.txt文件

-root 指定遠程用戶爲root

-o /tmp/uptime 指定遠程命令執行結果輸入到/tmp/uptime目錄下

uptime指定遠程執行命令


PSCP把文件並行的複製到多個主機上,注意是從服務器端給客戶端送文件

pscp的使用參數大多和pssh一致


基本使用方法

pscp  -h   ip文件  本地文件  遠程目錄

舉例:將本機的/tmp/i.txt文件複製到host.txt列出的主機上的/tmp目錄

pscp -h host.txt -l root /tmp/i.txt/tmp


SSH端口轉發 

• SSH端口轉發 SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是, SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,並且自動提 供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這 是因爲 SSH 爲其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例 如,Telnet,SMTP,LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名, 密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火牆限制 了一些網絡端口的使用,但是允許 SSH 的連接,也能夠通過將 TCP 端口轉 發來使用 SSH 進行通訊 

• SSH 端口轉發能夠提供兩大功能: 

• 加密 SSH Client 端至 SSH Server 端之間的通訊數據 

•突破防火牆的限制完成一些之前無法建立的 TCP 連接


SSH端口轉發 

• 本地轉發: 

-L localport:remotehost:remotehostport sshserver 

• 選項: 

-N 是不執行遠端命令,在只是端口轉發時這條命令很有用處

 -C是進行數據壓縮,

-f是後臺操作,只有當提示用戶名密碼的時候才轉向前臺。

-g啓用網關功能 是允許遠端主機連接本地轉發端口。

-R表明是將遠端主機端口映射到本地端口。

-L,則是將本地端口映射到遠端主機端口

• 示例 ssh –L 9527:telnetsrv:23 -N sshsrv telnet 127.0.0.1 9527 當訪問本機的9527的端口時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23 data   localhost:9527   localhost:XXXXX   sshsrv:22   sshsrv:YYYYY   telnetsrv:23


本地端口轉發圖

  




           無標題.png

假定host1是本地主機,host2是遠程主機。由於種種原因,這兩臺主機之間無法連通。但是,另外還有一臺host3,可以同時連通前面兩臺主機。因此,很自然的想法就是,通過host3,將host1連上host2。

 ssh -L 2121:host2:21 host3  host3是踏板地址,host2是服務器地址,2121是本地端口
命令中的L參數一共接受三個值,分別是"本地端口(2121):目標主機:目標主機端口(21)",它們之間用冒號分隔。這條命令的意思,就是指定SSH綁定本地端口2121,然後指定host3將所有的數據,轉發到目標主機host2的21端口(假定host2運行FTP,默認端口爲21)。
  這樣一來,我們只要連接host1的2121端口,就等於連上了host2的21端口。

"本地端口轉發"使得host1和host3之間彷彿形成一個數據傳輸的祕密隧道,因此又被稱爲"SSH隧道"。

: centos5 centos6 centos7 

  
   
   
   
   
   
  

:


• 遠程轉發: -R sshserverport:remotehost:remotehostport sshserver 

• 示例: ssh –R 9527:telnetsrv:23 –N sshsrv 讓sshsrv偵聽9527端口的訪問,如有訪問,就加密後通過ssh服務轉發請求到本 機ssh客戶端,再由本機解密後轉發到telnetsrv:23 Data   sshsrv:9527   sshsrv:22   localhost:XXXXX   localhost:YYYYY   telnetsrv:23


遠程端口轉發圖

無標題2.png


遠程端口轉發實驗

實驗2:smtp(郵件)轉發

c6:[root@centos6(nanyibo) ~]# ssh -R 9527:192.168.190.7:25 -fN 192.168.190.5



c5:telnet 127.0.0.1 9527

mail from:[email protected]
rctp to:[email protected]
data
hello world
.
quit

image.png

image.png

接着在踏板機上(centos6)

image.png

centos5    telnet 127.0.0.1 9527

centos7  mail 一下接一下郵件


• 動態端口轉發: 

• 當用firefox訪問internet時,本機的1080端口做爲代理服務器,firefox的訪問請求被轉發到 sshserver上,由sshserver替之訪問internet 在本機firefox設置代理socket proxy:127.0.0.1:1080 ssh -D 1080 root@sshserver

科學上網實驗圖(動態端口轉發圖)

                               無標題3.png



centos7上搭一個網橋

yum -y install httpd

cd  /var/www/html/

vim index.html

image.png

image.png

image.png

image.png

image.png

X 協議轉發 

• 所有圖形化應用程序都是X客戶程序 

• 能夠通過tcp/ip連接遠程X服務器 • 數據沒有加密機,但是它通過ssh連接隧道安全進行 

• ssh -X user@remotehost gedit remotehost主機上的gedit工具,將會顯示在本機的X服務器上 傳輸的數據將通過ssh連接加密


ssh服務器 

• 服務器端:

sshd, 配置文件: /etc/ssh/sshd_config 

• 常用參數:

 – Port – ListenAddress ip

 – LoginGraceTime 2m 

– PermitRootLogin yes 

– StrictModes yes 

– MaxAuthTries 6

 – MaxSessions 10 同一個連接最大會話 

– PubkeyAuthentication yes

– PermitEmptyPasswords no

 – PasswordAuthentication yes

• GatewayPorts no

 • ClientAliveInterval (單位 : 秒 )

 • ClientAliveCountMax (默認 3 ) 

• UseDNS yes 

• GSSAPIAuthentication yes 提高速度可改爲no 

• MaxStartups 未認證連接最大值,默認值10

• Banner /path/file 

• 限制可登錄用戶的辦法: AllowUsers user1 user2 user3 

                                       DenyUsers 

                                       AllowGroups

                                       DenyGroups


ssh服務的最佳實踐 

• 要使用默認端口 

• 禁止使用protocol version 1 

• 限制可登錄用戶 

• 設定空閒會話超時時長 

• 利用防火牆設置ssh訪問策略 

• 僅監聽特定的IP地址 

• 基於口令認證時,使用強密碼策略 tr -dc A -Za -z0 -9_ < /dev/urandom | head -c 30| xargs 

• 使用基於密鑰的認證 

• 禁止使用空密碼 

• 禁止root用戶直接登錄 

• 限制ssh的訪問頻度和併發在線數 

• 做好日誌,經常分析


編譯安裝dropbear示例 

• ssh協議的另一個實現:dropbear 

• 安裝準備: 

• 1、安裝開發包組: 

• 2、下載dropbear-2017.75.tar.bz2 

• 3、tar xf dropbear-2017.75.tar.bz2 

• 4、less INSTALL README 

• 5、./configure 

• 6、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 

• 7、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

• 啓動ssh服務: 

• 8、ls /usr/local/sbin/ /usr/local/bin/ 

• 9、/usr/local/sbin/dropbear -h 

• 10、mkdir /etc/dropbear 

• 11、dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 

• 12、dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key 

• 13、dropbear -p :2222 -F –E #前臺運行 dropbear -p :2222 #後臺運行 

• 客戶端訪問: 

• 14、ssh -p 2222 [email protected] 

• 15、dbclient -p 2222 [email protected]



AIDE

• AIDE(Adevanced Intrusion Detection Environment) 

• 高級***檢測環境)是一個***檢測工具,主要用途是檢查文件的完整性,審 計計算機上的那些文件被更改過了。 

• AIDE能夠構造一個指定文件的數據庫,它使用aide.conf作爲其配置文件。 AIDE數據庫能夠保存文件的各種屬性,包括:權限(permission)、索引節點 序號(inode number)、所屬用戶(user)、所屬用戶組(group)、文件大小、最 後修改時間(mtime)、創建時間(ctime)、最後訪問時間(atime)、增加的大小 以及連接數。AIDE還能夠使用下列算法:sha1、md5、rmd160、tiger,以密 文形式建立每個文件的校驗碼或散列號. 

• 這個數據庫不應該保存那些經常變動的文件信息,例如:日誌文件、郵件、 /proc文件系統、用戶起始目錄以及臨時目錄.


• 安裝 yum install aide 

• 修改配置文件 vim /etc/aide.conf (指定對哪些文件進行檢測) 

/test/chameleon R 

/bin/ps R+a 

/usr/bin/crontab R+a 

/etc PERMS !/etc/mtab #

“!”表示忽略這個文件的檢查 

R=p+i+n+u+g+s+m+c+md5 權限+索引節點+鏈接數+用戶+組+大小+最後一 次修改時間+創建時間+md5校驗值

NORMAL = R+rmd60+sha256

• 初始化默認的AIDE的庫: /usr/local/bin/aide --init 

• 生成檢查數據庫(建議初始數據庫存放到安全的地方) cd /var/lib/aide mv aide.db.new.gz aide.db.gz 

• 檢測: /usr/local/bin/aide --check 

• 更新數據庫 aide --update



更改身份 

• su 切換身份:su –l username –c ‘command‘ 

• sudo • 來自sudo包 • man 5 sudoers 

• sudo能夠授權指定用戶在指定主機上運行某些命令。如果未授權用戶嘗試使用 sudo,會提示 聯繫管理員 

• sudo可以提供日誌,記錄每個用戶使用sudo操作 • sudo爲系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機 

• sudo使用時間戳文件來完成類似“檢票”的系統,默認存活期爲5分鐘的“入場券” 

• 通過visudo命令編輯配置文件,具有語法檢查功能 visudo –c 檢查語法

• 配置文件: /etc /sudoers, /etc /sudoers.d / 

• 時間戳文件: /var /db /sudo 

• 日誌文件: /var/log/secure 

• 配置文件支持使用通配符glob : ? :任意單一字符 * :匹配任意長度字符 [wxc]:匹配其中一個字符 [!wxc]:除了這三個字符的其它字符 \x : 轉義 [[alpha]] :字母 示例: /bin/ls [[alpha]]* 

• 配置文件規則有兩類; 

1、別名定義:不是必須的 

2、授權規則:必須的

• 授權規則格式: 

用戶 登入主機=(代表用戶) 命令 

• 示例: root ALL=(ALL) ALL 

• 格式說明: user: 運行命令者的身份 

                   host: 通過哪些主機 (runas):以哪個用戶的身份 

                   command: 運行哪些命令

• 別名有四種類型:User_Alias, Runas_Alias, Host_Alias ,Cmnd_Alias 

• 別名格式:[A-Z]([A-Z][0-9]_)* 

• 別名定義: Alias_Type NAME1 = item1, item2, item3 : NAME2 = item4, item5 

• 示例1: Student ALL=(ALL) ALL %wheel ALL=(ALL) ALL 

• 示例2: student ALL=(root) /sbin/pidof,/sbin/ifconfig 

               %wheel ALL=(ALL) NOPASSWD: ALL

• 示例 3 User_Alias NETADMIN= netuser1,netuser2       

            Cmnd_Alias NETCMD = /usr /sbin /ip   

            NETADMIN ALL= (root ) NETCMD 

• 示例 4 User_Alias SYSADER=wang,mage,%admins 

            User_Alias DISKADER=tom 

            Host_Alias SERS=www.magedu.com,172.16.0.0/24 

            Runas_Alias OP=root

            Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod

            Cmnd_Alias DSKCMD=/sbin/parted,/sbin /fdisk 

            SYSADER SERS= SYDCMD,DSKCMD 

            DISKADER ALL=(OP) DSKCMD

            User_Alias ADMINUSER = adminuser1,adminuser2 

            Cmnd_Alias ADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd [azA-Z]*, 

             !/usr/bin/passwd root 

             ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel 

• 示例5 

Defaults:wang runas_default=tom 

wang ALL=(tom,jerry) ALL

 • 示例6 

wang 192.168.175.136,192.168.175.138=(root)

 /usr/sbin/,!/usr/sbin/useradd 

 示例7 

• wang ALL=(ALL) /bin/cat /var/log/messages*


sudo命令 

• ls -l /usr/bin/sudo 

• sudo –i –u wang 切換身份 

• sudo [-u user] COMMAND 

-V 顯示版本信息等配置信息 

-u user 默認爲root -l,

ll 列出用戶在主機上可用的和被禁止的命令 

-v 再延長密碼有效期限5分鐘,更新時間戳 

-k 清除時間戳(1970-01-01),下次需要重新輸密碼 

-K 與-k類似,還要刪除時間戳文件 

-b 在後臺執行指令 

-p 改變詢問密碼的提示符號 

示例:-p ”password on %h for user %p:"



TCP_Wrappers

• 配置文件:/etc/hosts.allow, /etc/hosts.deny

 • 幫助參考:man 5 hosts_access,man 5 hosts_options 

• 檢查順序:hosts.allow,hosts.deny(默認允許) 注意:一旦前面規則匹配,直接生效,將不再繼續 

• 基本語法: – daemon_list@host: client_list [ :options :option… ] 

• Daemon_list@host格式

 – 單個應用程序的二進制文件名,而非服務名,例如vsftpd 

– 以逗號或空格分隔的應用程序文件名列表,如:sshd,vsftpd 

– ALL表示所有接受tcp_wrapper控制的服務程序 

– 主機有多個IP,可用@hostIP來實現控制 

如:[email protected]

• 客戶端Client_list格式 

– 以逗號或空格分隔的客戶端列表 

– 基於IP地址:192.168.10.1 192.168.1. 

– 基於主機名:www.magedu.com .magedu.com 較少用 

– 基於網絡/掩碼:192.168.0.0/255.255.255.0 

– 基於net/prefixlen: 192.168.1.0/24(CentOS7) 

– 基於網絡組(NIS 域):@mynetwork 

– 內置ACL:ALL,LOCAL,KNOWN,UNKNOWN,PARANOID 

• [:options]選項: 

• 幫助:man 5 hosts_options 

            deny 主要用在/etc/hosts.allow定義“拒絕”規則 如:vsftpd: 172.16. :deny 

            allow 主要用在/etc/hosts.deny定義“允許”規則 如:vsftpd:172.16. :allow 

            spawn 啓動一個外部程序完成執行的操作 

            twist 實際動作是拒絕訪問,使用指定的操作替換當前服務,標準I/O和 ERROR發送到客戶端,默認至/dev/null 

• 測試工具: 

tcpdmatch [-d] daemon[@host] client 

-d 測試當前目錄下的hosts.allow和hosts.deny

示例

• sshd: ALL :spawn echo "$(date) login attempt from %c to %s,%d" >>/var/log/sshd.log 

• 說明: 

– 在/etc/hosts.allow中添加,允許登錄,並記錄日誌 

– 在/etc/hosts.deny中添加,拒絕登錄,並記錄日誌

 – %c 客戶端信息 

– %s 服務器端信息

 – %d 服務名 

– %p 守護進程的PID

 • vsftpd: 172.16. :twist /bin/echo “connection prohibited”






























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章