安全和加密
不加密流量的易受攻擊性
密碼/數據嗅探
數據操作
驗證操作
相當于郵寄明信片
不安全的傳統協議
telnet、FTP、POP3等等;不安全密碼
http、smtp、NFS等等;不安全信息
Ldap、NIS、rsh等等;不安全驗證
NIST(美國國家標準與技術研究院)定義的安全屬性:
保密性:
數據保密性
隱私性
完整性:不可篡改
數據完整性
系統完整性
可用性
安全攻擊: STRIDE
Spoofing(假冒)、Tampering(篡改)、Repudiation(否認)、Information Disclosure(信息泄漏)、Denial of Service(拒絕服務)和 Elevation of Privilege(提升權限)
安全機制:
加密、數字簽名、訪問控制、數據完整性、認證交換、流量填充、路由控制、公證
安全服務:
認證
訪問控制
數據保密性
連接保密性
無連接保密性
選擇域保密性
流量保密性
數據完整性
不可否認性
設計基本原則
使用成熟的安全系統
以小人之心度輸入數據
外部系統是不安全的
最小授權
減少外部接口
缺省使用安全模式
安全不是似是而非
從STRIDE思考
在入口處檢查
從管理上保護好你的系統
常用安全技術
認證
授權
安全通信
審計
密碼算法和協議:
對稱加密
公鑰加密
單向加密
認證協議
Linux系統:OpenSSL, gpg(pgp協議的實現)
1、對稱加密
特性:
1、加密、解密使用同一個密鑰,效率高
2、將原始數據分割成固定大小的塊,逐個進行加密
算法:
DES:Data Encryption Standard,56bits
3DES:使用DES加密三次
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
缺陷:
1、密鑰過多
2、密鑰分發困難
3、數據來源無法確認
2、非對稱加密算法(公鑰加密)
公鑰:公開給所有人;public key
私鑰:自己留存,必須保證其私密性;secret key
特點:密鑰成對出現;用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
數字簽名:主要在于讓接收方確認發送方身份
對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰后發送給對方
數據加密:適合加密較小數據
缺點:密鑰長,加密解密效率低下
算法:RSA(加密,數字簽名),DSA(數字簽名),ELGamal
(1)實現數字簽名:使用自己的私鑰加密
發送者A
生成公鑰/私鑰對:P和S
公開公鑰P,保密私鑰S
使用自己的私鑰S來加密消息data
將S(data)發送給接收者B
接收者B
使用發送者A的公鑰P來解密data=P(S(data))
(2)實現加密:使用對方的公鑰加密
接收者B
生成公鑰/私鑰對:P和S
公開公鑰P,保密私鑰S
發送者A
使用接收者B的公鑰P來加密消息data
將P(data)發送給接收者A
接收者B
使用自己的公鑰S來解密:data=S(P(data))
3、單向加密
特點:
將任意數據縮小成固定大小的“指紋”
任意長度輸入
固定長度輸出
若修改數據,指紋也會改變(“不會產生沖突”)
無法從指紋中重新生成數據(“單向”)
功能:確保數據完整性
算法:md5: 128bits、sha1: 160bits、sha224sha256、sha384、sha512
4、密鑰交換:IKE( Internet Key Exchange )
公鑰加密:
DH (Deffie-Hellman):
1、A: a,p 協商生成公開的整數a, 大素數p
B: a,p
2、A:生成隱私數據 :x (x<p ),計算得出 a^x%p,發送給B
B:生成隱私數據 :y (y<p ),計算得出 a^y%p,發送給A
3、A:計算得出 (a^y%p)^x = a^xy%p,生成為密鑰
B:計算得出 (a^x%p)^y = a^xy%p, 生成為密鑰
CA和證書
PKI: Public Key Infrastructure
簽證機構:CA(Certificate Authority)
注冊機構:RA
證書吊銷列表:CRL
證書存取庫:
X.509:定義了證書的結構以及認證協議標準
版本號
主體公鑰
序列號
CRL分發點
簽名算法
擴展信息
頒發者
發行者簽名
有效期限
主體名稱
證書獲取
證書類型:
證書授權機構的證書
服務器
用戶證書
獲取證書兩種方法:
使用證書授權機構
生成簽名請求(csr)
將csr發送給CA
從CA處接收簽名
自簽名的證書
自已簽發自己的公鑰
安全協議
SSL: Secure Socket Layer
TLS: Transport Layer Security
1995:SSL 2.0 Netscape
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 RFC( Request For Comments ) 4346
2008:TLS 1.2 當前使用
2015: TLS 1.3
功能:機密性,認證,完整性,重放保護
兩階段協議,分為握手階段和應用階段
握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),并協商通信中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通過MasterSecret生成。
應用階段:在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信。
SSL/TLS
Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換
ChangeCipherSpec 協議:一條消息表明握手協議已經完成
Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告
Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等
HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理后,成為二進制形式傳輸
OpenSSL:開源項目
三個組件:
openssl: 多用途的命令行工具
libcrypto: 加密算法庫
libssl:加密模塊應用庫,實現了ssl及tls
openssl命令:
兩種運行模式:交互模式和批處理模式
openssl version:程序版本號
標準命令、消息摘要命令、加密命令
標準命令:enc, ca, req, …
注:查看支持的加密算法:openssl ?
1、對稱加密
enc命令:man enc
# 加密 openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
# 解密 openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
-e:加密
-d:解密
-des3:指明des3加密算法
-a:編碼為文本,可放于文件中,默認編碼為二進制文件
-salt [xxxx]:雜質,可手動指明字母或數字,默認隨機添加,最長8位
-in:輸入文件
-out:輸出文件
注:
回車后鍵入密碼
加密不會刪除源文件
2、非對稱加密(公鑰加密)
genrsa命令:man genrsa
# 生成私鑰 openssl genrsa {-out|>} /PATH/TO/PRIVATEKEY.FILE [-des] NUM 鍵入回車后設置私鑰密碼
# 提取公鑰 openssl rsa -in /PATH/TO/PRIVATEKEY.FILE -pubout -out /PATH/TO/PUBLICKEYFILE 鍵入回車后輸入私鑰密碼
-des:對私鑰進行des加密保護
NUM: 表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2
注:
生成的私鑰權限應僅自己有讀寫權限可使用以下命令,括號表示在子shell中運行生成私鑰,并設置其umask權限,此時生成的私鑰僅屬主有讀寫權限
(umask 077; openssl genrsa -out key.pri -des 2048)
3、單向加密
dgst命令:man dgst
# 計算文件特征碼 openssl dgst -md5 [-hex] filename
注:md5sum filename
4、生成用戶密碼:
passwd命令:man sslpasswd
# openssl passwd -1 -salt [xxxx] 密碼口令
-1:指明加密算法(1表示md5算法)
-salt [xxxx]:雜質,可手動指明字母或數字,默認隨機添加,最長8位
示例:openssl passwd -1 salt centos
openssl passwd -1 salt $(openssl rand -hex 4) 使用隨機數生成器結果作為雜質
5、生成隨機數:
sslrand命令:man sslrand
# openssl rand {-base64|-hex} NUM
-base64:使用base64編碼,所有文本均可
-hex:使用十六進制數字編碼使用,只使用0-f之間的字符進行編碼,默認
NUM: 表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2
注:默認生成的隨機數為二進制編碼
linux系統上的隨機數生成器
/dev/random:僅從熵池返回隨機數;隨機數用盡,將阻塞后面的進程,等待更多的隨機數生成
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞,偽隨機數不夠安全
熵池:運行中的內核在內存維護的地址空間,從中存儲大量的隨機數,開機時為空,剪切使用
來源:各種I/O中斷之間的時間間隔
鍵盤和鼠標:相鄰擊鍵間的時間差
塊設備中斷:硬盤IO中斷時間間隔
1、使用gpg實現對稱加密
在hostB主機加密,在hostA主機上解密;在同一臺主機上操作時無需密碼即可解密
加密:在hostB主機加密
gpg -c file 回車后輸入密碼
ls file.gpg
解密:在hostA主機上解密
gpg -o file -d file.gpg 回車后輸入密碼
-o:解密后保存在文件
2、使用gpg工具實現公鑰加密
在hostB主機上用hostA的公鑰加密,在hostA主機上解密
(1)在hostA主機上生成公鑰/私鑰對
gpg –gen-key 回車后選擇加密算法,密鑰長度,有效期,確認信息y/N,user_id,屬主郵箱,描述,是否接受,密鑰密碼
(2)在hostA主機上查看公鑰
gpg –list-keys
(3)在hostA主機上導出公鑰到keyA.pub
gpg -a –export -o keyA.pub
(4)從hostA主機上復制公鑰文件到需加密的B主機上
scp keyA.pub hostB:
(5)在hostB主機上導入hostA主機的公鑰
gpg –import keyA.pub
gpg –list-keys
(6)用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg
gpg -e -r user_id file
ls file.gpg
(7)復制加密文件到hostA主機
scp file.gpg hostA:
(8)在hostA主機解密文件
gpg -d file.gpg
gpg -o file -d file.gpg
-o:解密后保存在文件
(9)刪除公鑰和私鑰(公鑰與私鑰成對存在是,先刪除私鑰再刪除公鑰)
gpg –delete-secret-keys user_id 刪除該私鑰
gpg –delete-keys user_id 刪除該公鑰
PKI:Public Key Infrastructure 公共密鑰加密體系
CA
RA
CRL
證書存取庫
建立私有CA:
openssl
OpenCA:開源CA工具,基于openssl
注:在確定配置為CA的服務上生成一個自簽證書,并為CA提供所需要的目錄及文件即可
證書申請及簽署步驟:
1、生成申請請求
2、RA核驗
3、CA簽署
4、獲取證書
創建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.conf 其中定義了CA的各種配置
CA的配置:
/etc/pki/CA/ 工作目錄
新建:
/etc/pki/CA/serial 當前主機序列號碼
/etc/pki/CA/index.txt 已經頒發的證書索引
/etc/pki/CA/private/cakey.pem CA自己的私鑰
/etc/pki/CA/cacert.pem CA的自簽證書
存在:
/etc/pki/CA/private/ CA的私鑰放置目錄
/etc/pki/CA/newcerts/ 尚未簽署的證書放置處
/etc/pki/CA/certs/ 已經簽署的證書
/etc/pki/CA/crl/ 已經吊銷的證書
注:policy客戶端與CA之間標有match的選項必須相同,countryName,stateOrProvinceName,localityName
(1) 創建所需要的文件
(a) touch /etc/pki/CA/index.txt
(b) echo 01 > /etc/pki/CA/serial
(2) CA自簽證書
(a)生成私鑰
cd /etc/pki/CA/
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem [-des] 2048)
注:cakey.pem文件名必須與配置文件中對應,自定義文件名時需修改配置文件使其與之相同
(b)生成自簽證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新證書簽署請求
-x509: 專用于CA生成自簽證書
-key: 生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE : 證書的保存路徑
鍵入回車后輸入country name,state province name,local name,organzation name,organzation unit name,common name(hostname),mail address
(c)查看證書信息:
openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text|subject|serial|dates
(3) 申請證書
(a) 生成私鑰(以web服務為例)
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
(umask 066; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(b) 生成申請證書
openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
鍵入回車后輸入country name,state province name,local name,organzation name,organzation unit name,common name(hostname),mail address
(c) 提交申請證書
scp /etc/httpd/ssl/httpd.key CA:/etc/pki/CA/newcerts/
(4) 簽署證書
openssl ca -in /etc/pki/CA/newcerts/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
注:默認國家,省 ,公司名稱必須和CA一致,主機名hostmane.domain
/tmp/目錄下的證書申請文件簽署后即可刪除
頒發證書
scp /etc/pki/CA/certs/httpd.crt WEB:/etc/httpd/ssl/
(4) 吊銷證書
(a) 在客戶端獲取要吊銷的證書的serial
openssl x509 -in / PATH/FROM/CERT_FILE -noout -serial -subject
(b) 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致
吊銷證書: openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
注:其中SERIAL.pem要換成證書真正的序列號
(c) 生成吊銷證書的編號(第一次吊銷證書時才需要執行)
echo 01 > /etc/pki/CA/crlnumber
(d) 更新證書吊銷列表:openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl
查看crl文件: openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text
SSH
ssh: secure shell, protocol, 22/tcp, 安全的遠程登錄
OpenSSH: ssh協議的開源實現
dropbear:另一個開源實現
SSH協議版本
v1: 基于CRC-32做MAC,不安全;man-in-middle
v2:雙方主機協議選擇安全的MAC方式
基于DH算法做密鑰交換,基于RSA或DSA實現身份認證
兩種方式的用戶登錄認證:
基于password
基于key
OpenSSH: C/S架構
C:
Linux:openssh-clients:ssh, scp, sftp
Windows: xshell, putty, securecrt, sshsecureshellclient
S: openssh-server:sshd
ssh客戶端
客戶端組件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
ForwardX11Trusted yes 支持信任x11轉發
StrictHostKeyChecking no 首次登錄不顯示檢查提示
格式:ssh [user@] host [COMMAND]
ssh [-l user] host [COMMAND]
-p port:遠程服務器監聽的端口
-b:指定連接的源IP
-v:調試模式
-C:壓縮方式
-X: 支持x11轉發
-Y:支持信任x11轉發
-t: 強制偽tty分配
示例:ssh -t remoteserver1 ssh remoteserver2 其中: remoteserver1為跳板,remoteserver2為目標
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 存檔模式,相當于 rlptgo,但不保留ACL(-A)和SELinux屬性(-X)
sftp命令
交互式文件傳輸工具
用法能和傳統的ftp工具相似
利用ssh服務實現安全的文件上傳和下載
使用ls cd mkdir rmdir pwd get put等指令,可用?或help獲取幫助信息。
sftp [user@]host
sftp> help
兩種認證方式
1、基于password認證
允許實現對遠程系統經驗證地加密安全訪問
當用戶遠程連接ssh服務器時,會復制ssh服務器/etc/ssh/中的
ssh_host_rsa_key.pub(centos6)
ssh_host_ecdsa_key.pub(centos7)
到客戶機的~./ssh/know_hosts中。下次連接時,會比較兩處是否有不同。
2、基于key認證
(1) 在客戶端生成密鑰對
ssh-keygen -t {rsa|dsa} [-P 'passwd'] [-f “/root/.ssh/id_rsa|dsa"]
(2) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄,會自動創建.ssh/authorized_keys并將公鑰內容寫入
ssh-copy-id [-i /root/.ssh/id_rsa|dsa.pub] [user@]host
或先將公鑰文件id_rsa|dsa.pub復制至對應用戶家目錄下的.ssh/目錄下,再更名為authorized_keys
(3) 測試
注:
重設私鑰口令 ssh-keygen -p
驗證代理(authentication agent)保密解密后的密鑰,這樣口令就只需要輸入一次
在GNOME中,代理被自動提供(自動啟用ssh-agent),否則運行ssh-agent bash,鑰匙通過命令添加給代理ssh-add,僅當前shell有效
windows中基于key的驗證
xshell
新建會話、輸入名稱、協議、主機IP、端口號
連接、輸入用戶名、密碼、登陸
工具-新建用戶密鑰生成向導、選擇密鑰類型{DSA|RSA}、密鑰長度1024
輸入給用戶密鑰加密的密碼、保存為文件、完成
將公鑰上傳至服務器并更名為authorized_key
會話屬性、類別中選擇用戶身份驗證、選擇驗證方法為Public key、密鑰密碼、瀏覽選擇公鑰
secureCRT
工具、創建公鑰、選擇密鑰類型{RSA|DSA}、通行短語(密碼密鑰)、密鑰長度1024、選擇文件保存路徑
將公鑰上傳至服務器、轉換密鑰格式
點擊快速連接、輸入主機名、身份驗證方式為公鑰、屬性選擇使用證書、導入私鑰文件、導入公鑰文件
注:轉化為openssh兼容格式(適合SecureCRT,Xshell不需要轉化格式),并復制到需登錄主機上相應文件authorized_keys中,注意權限必須為600
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
SSH端口轉發
SSH 會自動加密和解密所有SSH客戶端與服務端之間的網絡數據。但是,SSH還能夠將其他TCP端口的網絡數據通過SSH接來轉發,并且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”(tunneling),這是因為SSH為其他TCP接提供了一個安全的通
道來進行傳輸而得名。例如,Telnet,SMTP,LDAP這些TCP應用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許SSH的連接,也能夠通過將TCP端口轉發來使用SSH進行通訊
SSH端口轉發能夠提供兩大功能:
加密 SSH Client 端至 SSH Server 端之間的通訊數據
突破防火墻的限制完成一些之前無法建立的 TCP 連接。
1、本地轉發: A主機借助AB主機的SSH通道,實現A與C之間有防火墻時的telnet通信
A: ssh -L A_port:C_IP:C_port -N B_IP 需要輸入B主機的密碼,不連接至B主機shell
選項:
-f 后臺啟用
-N 不開遠程shell
-g 啟用網關功能
A_port:自己指定
C_port:telnet服務端口23
示例:
A: telnet 127.0.0.1 A_port 需要輸入C主機的密碼,連接至C主機
WAN | LAN
|
hostA lo:A_port–>hostA IP:port –> | –> hostB IP:22–>hostB IP:port –> hostC IP:23
|
|
A本機訪問回環的telnet服務的指定端口,經ssh加密后轉發到B的ssh服務,解密后用telent轉發到C的telnet服務
以A主機的身份登陸到B主機,以B主機的身份登陸到C主機
2、遠程轉發: B主機借助AB主機的SSH通道,實現A與C之間有防火墻時的telnet通信
B: ssh -R A_port:C_IP:C_port -N A_IP 需要輸入A主機的密碼,連接至A主機shell
選項:
-f 后臺啟用
-N 不開遠程shell
-g 啟用網關功能
A_port:自己指定
C_port:telnet服務端口23
示例:
A: telnet 127.0.0.1 A_port 需要輸入C主機的密碼,連接至C主機
WAN | LAN
|
hostA IP:22 <– | <– hostB IP:port
hostA lo:A_port–>hostA IP:port –> | –> hostB IP:22–>hostB IP:port –> hostC IP:23
|
|
A本機訪問回環的telnet服務的指定端口,經ssh加密后轉發到B的ssh服務,解密后用telent轉發到C的telnet服務
以B主機的身份登陸到A主機,以B主機的身份登陸到C主機
3、動態轉發: C主機借助B主機做網絡代理訪問A主機
當用firefox訪問internet時,本機的1080端口做為代理服務器,firefox的訪問請求被轉發到sshserver上,由sshserver替之訪問internet
C: ssh -D C_port [root@]hostB 需要輸入B主機的密碼
C_port:自己指定
C: 在本機firefox-選項-高級-網絡-設置-手動設置代理-SOCKS Host:127.0.0.1:C_port
WAN | LAN
|
hostA IP:80 <– | <– hostB IP:22 <– hostC IP:port<–hostC lo:C_port
|
4、X協議轉發
所有圖形化應用程序都是X客戶程序,本機可以不啟動圖形界面
能夠通過tcp/ip連接遠程X服務器
數據沒有加密機,但是它通過ssh連接隧道安全進行
ssh -X user@remotehost gedit
remotehost主機上的gedit工具,將會顯示在本機的X服務器上
傳輸的數據將通過ssh連接加密
注:Xmanager Enterprise 5
打開xtart
輸入會話名、主機IP、協議ssh、用戶名、身份驗證password、命令8GNOME(Gnome-session)
運行
接受并保存
輸入密碼
ssh服務器
服務器端:
sshd, 配置文件: /etc/ssh/sshd_config
常用參數:
Port
ListenAddress ip
PermitRootLogin yes
ClientAliveInterval 0
UseDNS yes
限制可登錄用戶的辦法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups
ssh服務的最佳實踐
1、不要使用默認端口
2、禁止使用protocol version 1
3、限制可登錄用戶
4、設定空閑會話超時時長
5、利用防火墻設置ssh訪問策略
6、僅監聽特定的IP地址
7、基于口令認證時,使用強密碼策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8、使用基于密鑰的認證
9、禁止使用空密碼
10、禁止root用戶直接登錄
11、限制ssh的訪問頻度和并發在線數
12、做好日志,經常分析
編譯安裝dropbear示例
ssh協議的另一個實現:dropbear
安裝準備:
1、安裝開發包組:
2、ftp://172.16.0.1/pub/Sources/sources/dropbear/dropbear-2013.58.tar.bz2
安裝:
3、tar xf dropbear-2013.58.tar.bz2,
4、less INSTALL
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 root@127.0.0.1
15、dbclient -p 2222 root@127.0.0.1
AIDE
當一個入侵者進入了你的系統并且種植了木馬,通常會想辦法來隱蔽這個木馬(除了木馬自身的一些隱蔽特性外,他會盡量給你檢查系統的過程設置障礙),通常入侵者會修改一些文件,比如管理員通常用ps -aux來查看系統進程,那么入侵者很可能用自己經過修改的ps程序來替換掉你系統上的ps程序,以使用ps命令查不到正在運行的木馬程序。如果入侵者發現管理員正在運行crontab作業,也有可能替換掉crontab程序等等。所以由此可以看出對于系統文件或是關鍵文件的檢查是很必要的。目前就系統完整性檢查的工具用的比較多的有兩款:Tripwire和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 命令
1. sudo能夠授權指定用戶在指定主機上運行某些命令。如果未授權用戶嘗試使用 sudo,會提示聯系管理員
2. sudo可以提供日志,記錄每個用戶使用sudo操作
3. sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機
4.sudo使用時間戳文件來完成類似“檢票”的系統,默認存活期為5分鐘的“入場券”
5、通過visudo命令編輯配置文件,具有語法檢查功能
配置文件:/etc/sudoers, /etc/sudoers.d/
時間戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
?:前面的字符或詞可出現一次或無
* :前面的字符或詞出現零次或多次
[wxc]:匹配其中一個字符
[^wxc]:除了這三個字符的其它字符
\x : 轉義
[[alpha]] :字母 示例: /bin/ls [[alpha]]* 此處沒有冒號:冒號在此處有特殊用途
配置文件規則有兩類;
1、別名定義:不是必須的
2、授權規則:必須的
sudoers
授權規則格式:
用戶 登入主機=(代表用戶) 命令
示例:root ALL=(ALL) ALL
格式說明:
user: 運行命令者的身份
host: 通過哪些主機
(runas):以哪個用戶的身份
command: 運行哪些命令
別名
Users和runas:
username
#uid #代表UID,不表示注釋
%group_name
%#gid
user_alias|runas_alias
host:
ip或hostname 單個IP或主機名
network(/netmask) 某個網段的所有主機
host_alias
command:
command name 可以執行的的命令
directory 可以執行該目錄下的所有命令
sudoedit 授權用戶可以編輯sudoers文件
Cmnd_Alias
sudo別名和示例
別名有四種類型:User_Alias, Runas_Alias, Host_Alias,Cmnd_Alias
別名格式:[A-Z]([A-Z][0-9]_)* 大寫字母開頭,字母或數字組成
別名定義:Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
示例1:
Student
%wheel
ALL=(ALL) ALL
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 [a-zA-Z]*,
!/usr/bin/passwd root
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,
PASSWD:/usr/sbin/userdel
示例5
Defaults:wang runas_default=tom wang用戶的默認身份切換為ton
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/message* 會查看包括日志在內的所有的文件
sudo命令
ls -l /usr/bin/sudo
sudo -i -u wang 切換身份相當于 su
sudo [-u user] COMMAND
-V 顯示版本信息等配置信息
-u user 默認為root
-l,ll 列出用戶在主機上可用的和被禁止的命令
-v 再延長密碼有效期限5分鐘,更新時間戳
-k 清除時間戳,下次需要重新輸密碼
-K 與-k類似,還要刪除時間戳文件
-b 在后臺執行指令
-p 改變詢問密碼的提示符號
如 -p ”password on %h for user %p"
原創文章,作者:anonymous,如若轉載,請注明出處:http://www.www58058.com/49098
行與行之間的間距是不是太寬了?看起來太離散了,建議緊密一點哦。