OPenSSL
OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用.
SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成為Internet上保密通訊的工業標準。
SSL能使用戶/服務器應用之間的通信不被攻擊者竊聽,并且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在于它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立于SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商及服務器認證工作。在此之后應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
傳輸層協議:TCP,UDP,SCTP.傳輸層協議的每一種都會提供端口,端口是用來標識進程地址的,但是端口卻是由內核上的傳輸層協議所提供,所以每一個進程所啟動時,要想通過某地址與其他主機通信,他要向內核注冊申請使用某端口,而且一旦注冊使用以后他是獨占使用的
進程間通信有多種方式,在同一主機上的進程間通信可以借助內核間的很多機制實現,如IPC機制,message queue(消息隊列),shm(共享內存),semerphor(旗語)等等…
不同主機上的進程間通信用的最多的是早些時候tcp/ip協議中所研發的一種機制叫做基于socket的通信機制,socket是成對出現的;即ip+port.ip+port只是用來描述標識單個主機上的進程地址的,如果要真正產生通信他應該是兩個主機上發進程間進行通訊,即客戶端有ip+port服務端有ip+port(cip:port<–>sip:port)
兩個主機間的進程通訊的時候發起的一方應該知道接收方的地址,而這個地址包含了ip和端口,那如何能得知地址呢.所以為了解決這樣的問題,互聯網名稱地址解析機構就首先做出了假定(套接字通信在基于CS模式時服務器端要處于監聽模式:所謂監聽模式就表示打開ip和端口隨時等待客戶端請求),這就叫做監聽模式;
監聽模式:LISTEN機制
監聽模式指的是無論有沒有人訪問他都要打開自己的進程,可以讓他監聽在某個ip+port上
SSL:secure sockets layer(安全的套接字層)
如果http協議調用了ssl協議,那么他就變成了https(http –>ssl–>https)
網絡通信安全的目標是什么:
保密性:confidentiality 完整性:integrity 通信雙方在實現通信時整個通信報文不能產生信息丟失,一旦信息丟失就基于其他機制讓接收方知道. 可用性:availability 通信雙方所產生的信息應當對授權實體可用,即加了密的數據對方最起碼能夠解密
網絡安全通訊的攻擊類型:
威脅保密性的攻擊:竊聽,通信量分析 威脅完整性的攻擊:更改,偽裝,重放,否認 威脅可用性攻擊:拒絕服務(DoS)
為了實現安全目標并防范攻擊,就需要提供一些機制來完成抵御攻擊保證安全,這需要從很多層面來保證.這些層面主要是從兩個層面來說;技術和服務
解決方案:
技術:加密和解密,服務:(用來抵御攻擊而提供的服務,也即使為了實現上述安全目標而特地設計的安全服務)
加密和解密:(技術)
傳統加密方法:替代加密方法,置換加密方法 現代加密方法:現代塊加密方法
服務:
認證機制 訪問控制機制
在互聯網通訊時通訊方如何與被通訊方安全交換密鑰:密鑰算法和協議就是為了解決密鑰交換的服務
加密和解密以及實現服務功能當中所用到的密鑰算法和協議:常見的有四大類;
對稱加密: 常見的加密方式有:DES,3DES,AES,Blowfish,Twofish,TDEA,RC6,CAST5 特性: 加密和解密使用同一個密鑰 將原始數據分割成為固定大小的塊,逐個進行加密 缺陷: 密鑰過多 密鑰分發困難 公鑰加密:密鑰成對存在,分為公鑰和與之配對的私鑰. 公鑰:從私鑰中提取產生;可公開給所有人;pubkey 私鑰:通過工具創建,使用者自己留存,必須保證其私密性;secret key; 特點: 用公鑰加密的數據只能使用與之配對的私鑰解密;反之亦然 用途: 數字簽名:主要作用在于讓接收方確認發送方的身份 密鑰交換:發送方用對方的公鑰加密一個對稱密鑰,并發送給對方;以實現密鑰交換 加密和發送過程:假如說A要和B進行通信,第一步A先生成一段數據,為了保證這段數據安全無誤保密的送達給B,A要先用加密算法 計算出這段數據的特征碼. 第二步A會用自己的私鑰加密這段特征碼并將結果附加在數據后面. 第三步A生成一個臨時的對稱密鑰,并使用這個對稱密鑰加密整段數據(特征碼+數據). 第四步A會獲取到B的公鑰,并用B的公鑰加密剛才的臨時性對稱密鑰,并附加在整段數據的后面,然后整體發送給B. 解密過程:第一步B先用自己的私鑰去解密A發送過來的整段數據后面的對稱密鑰. 第二步用對稱密鑰解密A使用臨時對稱密鑰加密的整段內容(數據+特征碼). 第三步用A的公鑰解密特征嗎,如果能解密的話A的身份得到了驗證. 第四步B用同樣的對稱加密算法去計算數據的特征碼并與解密出來的特征碼記性比較, 如果兩個特征碼相同,數據完整性得到了驗證.所以這種手段保證了保密性和完整性同時也完成了身份驗證. 數據加密 公鑰加密當中常用的算法:RSA,DSA,ELGamal DSS:數字簽名標準 DSA:僅能實現簽名,而不能實現加解密 RSA:既能簽名,又能實現加解密 單向加密:提取數據指紋,只能加密,不能解密. 特性:定長輸出,雪崩效應 功能:主要實現完整性驗證 算法: md5:消息摘要算法,5是版本號,128位定長輸出 sha1:安全的哈希算法,1是版本號,160位定長輸出 sha224,sha256,sha384,sha512 密鑰交換:互聯網密鑰交換;常見的實現方法有兩種; 公鑰加密 DH算法
PKI:公鑰基礎設施:由四個組件組成
簽證機構:CA 注冊機構:RA 證書吊銷列表:CRL 證書存取庫:CB
證書
x509v3:定義了證書的結構以及認證協議標準
定義的證書應該有以下內容組成 證書版本號 序列號 簽名算法ID 發行者的名稱 有效期限 主體名稱 主體公鑰 發行者的唯一標識 主體的唯一標識 擴展 發行者的簽名
SSL:安全套接字層:由網景公司1994年發布,他的1.0版本從來沒有公開過,2.0版本在1995年發布,因為存在數個安全漏洞被3.0版本取代,而3.0在1991年發布,3.0版本被谷歌發現嚴重漏洞已經被禁用,目前處于臨危狀態,目前建議使用TLS1.2版本. TLS:傳輸層安全:由IETF1999年發布,2006年發布1.1版本
TLS采用了分層設計: 最底層:基礎算法原語的實現 第二層:各種算法的實現 第三層:組合算法實現的半成品 第四層:用各種組件拼裝而成的各種成品密碼學協議軟件
開源協議的實現:OpenSSL
linux系統實現上述的方案有兩種:OpenSSL(ssl協議和加密解密庫的實現),GPG(pgp協議的實現)
OpenSSL由三部分組成:
libencrypto:用于實現加密和解密的庫 libssl:用于實現ssl通信安全機制的庫 openssl多用途命令行工具
SSL會話主要三步:
客戶端向服務器端索要并驗正證書; 雙方協商生成"會話密鑰" ====此前兩步被成為握手階段==== 雙方采用"會話密鑰"進行加密通信
在這三步操作當中,以HTTPD為例首先是客戶端通過瀏覽器向服務器發送加密通信請求,這個加密通信請求就成為clienthello 的過程;也就是SSL握手過程的第一階段;
SSL握手過程
第一階段clienthello:在clienthello過程,客戶端主要完成以下幾個操作;
向服務器發送自己支持的協議版本,比如TLS1.2 客戶端生成的一個隨機數,稍后用于生成一個會話密鑰 發送自己支持的各種加密算法,比如AES(對稱加密算法),RSA(公鑰加密算法)... 發送自己支持的壓縮算法
第二階段:serverhello:服務器端在收到客戶端的請求之后要向客戶端發出回應;回應主要有以下內容;
確認使用的加密通信協議版本,比如TLS1.2 服務器端生成一個隨機數,稍后用于生成"會話密鑰" 確認使用的加密方法 服務器證書
第三階段:客戶端收到服務器端的serverhello以后給出的回應;
驗證服務器證書;在確認無誤后取出其公鑰;(發證機構,證書簽名,證書完整性,證書持有者,證書有效期,吊銷列表) 發送以下信息給服務器端 一個隨機數:用于服務器公鑰加密 編碼變更通知:表示通信雙方都用商定好的密鑰進行通信;即隨后的信息都將用雙方商定好的加密方法和密鑰發送. 客戶端握手結束通知:
第四階段:收到客戶端發來的第三個隨機數pre-master-key后,計算生成本次會話所有用到的"會話密鑰";向客戶端發送如下信息;
編碼變更通知:表示通信雙方都用商定好的密鑰進行通信;即隨后的信息都將用雙方商定好的加密方法和密鑰發送. 服務器端握手結束通知
OpenSSL的應用
它的組件:libcrypto,libssl主要由開發者使用,openssl;多用途命令行工具.
openssl:眾多子命令,分為三類:標準命令,消息摘要(dgst子命令),加密命令(enc子命令)
標準命令:
消息摘要(dgst子命令)
加密命令(enc子命令)
對稱加密:
工具:openssl enc 支持的算法:3des,aes,blowfish..
enc命令
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -out fstab -in fstab.ciphertext
單向加密:
工具:opssl dgst dgst,md5sum,sha1sum,…
dgst命令:計算文件特征碼
~]# openssl dgst -md5 /path/to/somefile
生成用戶密碼的命令:
工具:passwd,openssl passwd
~]# openssl passwd -1 -salt SALT
生成隨機數:
工具:openssl rand
~]# openssl rand -hex NUM ~]# openssl rand -base NUM
公鑰加密:三種功能;
加密解密: 算法:RSA,ELGamal 工具:openssl rsautl,gpg 數字簽名: 算法:RSA,DSA,ELGamal 工具:openssl tsasutl,gpg 密鑰解密: 算法:DH
如何生成密鑰:
生成私鑰:~]# (umask 077; openssl genrsa -out /path/to/private_key_file num_bits) 提出公鑰:~]# openssl rsa -in /path/from/frivate_key_file -pubout
linux系統上的隨機數生成器:
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞 /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞; 偽隨機數不安全 熵池中隨機數的來源: 硬盤io中斷時間間隔; 鍵盤io中斷時間間隔;
CA:公共信任的CA,私有CA
建立私有CA: openssl,OpenCA
openssl命令:
配置文件:/etc/pki/tls/openssl.cof
構建私有CA:
在確定配置為CA的服務上生成一個自簽證書,并為CA提供所需要的目錄及文件即可; 步驟: 1)生成私鑰: ~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) 2)生成自簽證書: ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 -new:生成新證書簽署請求 -x509:生成自簽格式證書,專用于創建私有CA時使用 -key:生成請求時用到的私有文件路徑 -out:生成的請求文件路徑;如果自簽證操作,將直接生成簽署過的證書 -days:證書的有效時長,單位是day 3)為CA提供所需的目錄及文件 ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} ~]# touch /etc/pki/CA/{serial,index.()txt} ~]# echo 01 > /etc/pki/CA/serial
要用到證書進行安全通信的服務器,需要向CA請求簽署證書
步驟:(以httpd為例)
1)用到證書的主機生成證書簽署請求 ~]# mkdir /etc/httpd/ssl ~]# cd /etc/httpd/ssl ~]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 2)生成證書簽署請求 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365 3)將請求通過可靠方式發送給CA主機 ~]# scp 4)在CA主機上簽署證書 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 查看證書中的信息: ~]# openssl -x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
吊銷證書:
步驟:
1)客戶端獲取要吊銷的證書的serial(序列號)(在使用證書的主機上執行) ~]# openssl -x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject 2)CA端主機吊銷證書 先根據客戶端提交的serial和subject信息,對比其本機數據庫index.txt中存儲的是否一致 吊銷: # openssl ca -revoke /etc/pki/CA /newcerts/SERIAL.pem 其中的SERIAL要換成證書真正的序列號; 3)生成吊銷證書的吊銷編號(第一次吊銷證書時執行) #echo 01 > /etc/pki/CA/crlnumber 4)更新證書吊銷列表 # openssl ca -gencrl -out thisca.crl 查看crl文件: # openssl crl -in /path/from/crl_file.crl -noout -text
過程示例:
構建私有CA
1)主機生成私鑰: ~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) 2)生成自簽證書: ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 -new:生成新證書簽署請求 -x509:生成自簽格式證書,專用于創建私有CA時使用 -key:生成請求時用到的私有文件路徑 -out:生成的請求文件路徑;如果自簽證操作,將直接生成簽署過的證書 -days:證書的有效時長,單位是day 3)為CA提供所需的目錄及文件 ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} ~]# touch /etc/pki/CA/{serial,index.txt} ~]# echo 01 > /etc/pki/CA/serial
要用到證書進行安全通信的服務器,需要向CA請求簽署證書(以httpd為例)
1)用到證書的主機生成證書簽署請求 ~]# mkdir /etc/httpd/ssl ~]# cd /etc/httpd/ssl ~]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 2)生成證書簽署請求 ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 3655 3)將請求通過可靠方式發送給CA主機 ~]# scp 4)在CA主機上簽署證書 ~]# openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 3655 查看證書中的信息: ~]# openssl -x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
在CA主機簽署證書
將證書發送給申請方,放在其對應的服務目錄中
SSH
安全的shell協議,代替傳統的不安全的遠程登錄,默認監聽在tcp協議的22號端口,SSH協議的開源實現是基于OpenSSH這個軟件,提供SSH服務的另外一個軟件是dropbear,這是一個第三方提供的軟件,沒有rpm包,需要手動編譯安裝.
openssh
客戶端:ssh,scp,sftp 服務端:sshd
ssh命令
格式: 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 -t 10.1.249.190 ssh 10.1.249.191 注意:當初次使用ssh命令連接至一個目標主機時,系統會把這個目標主機的信息保存至當前本機的連接用戶的家目錄的known_hosts文件中, 這個文件的作用是,當目標主機的信息發生了變化的時候會拒絕連接,比如偽裝ip ,登錄的時候會發出警告提示,()此次連接的IP和之前連接的ip不是同一臺主機). 此種機制的實現是基于密鑰對兒實現的,如果刪除此文件即可連接.
ssh基于key的認證方式
(1) 在客戶端生成密鑰對 ssh-keygen -t rsa [-P ''] [-f “/root/.ssh/id_rsa"] #ssh-keygen –t rsa –P ‘’ -f “/root/.ssh/id_rsa” #ssh-keygen (2) 把公鑰文件傳輸至遠程服務器對應用戶的家目錄 ssh-copy-id [-i [identity_file]] [user@]host (3) 測試 (4) 轉化為openssh兼容格式(適合SecureCRT, Xshell不需要轉化格式),并復制到需登錄主機上相應文件authorized_keys中,注意權限必須為600 ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys (5)重設私鑰口令: #ssh-keygen –p
注意:如果在設定密鑰密碼的時候為密鑰設定了密碼的話,每次登錄遠程主機都要輸入密鑰密碼.可以使用驗證代理的方式解決此問題,如下;
驗證代理( authentication agent)保密解密后的密鑰
這樣口令就只需要輸入一次 在GNOME中,代理被自動提供 否則運行ssh-agent bash 鑰匙通過命令添加給代理 #ssh-add
SSH端口轉發
什么是SSH端口轉發? SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。 但是, SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發 ,并且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道” ( tunneling),這是因為 SSH 為其他 TCP 鏈接提供了一個安全的通 道來進行傳輸而得名。例如, Telnet, SMTP, LDAP 這些 TCP 應用均 能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此 同時, 如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許 SSH 的連接,也能夠通過將 TCP 端口轉發來使用 SSH 進行通訊 ? SSH 端口轉發能夠提供兩大功能: ? 加密 SSH Client 端至 SSH Server 端之間的通訊數據 ? 突破防火墻的限制完成一些之前無法建立的 TCP 連接。
本地轉發:
-L localport:host:hostport sshserver ssh –L 9527:server1:23 -N server2 telnet 127.0.0.1 9527 當訪問本機的9527的端口時,被加密后轉發到server2的ssh服務,再解密被轉發到server1:23 data<-->localhost:9527<-->localhost:XXXXX<-->server2:22<-->server2:YYYYY<-->server1:23 選項: -f 后臺啟用 -N 不開遠程shell -g 啟用網關功能
遠程轉發:
-R sshserverport:host:hostport sshserver ssh –R 9527:server1:23 –N server2 讓server2偵聽9527端口的訪問,如有訪問,就加密后轉發請求到本機ssh服務,再由本機解密后轉發到serve1:23 Data<-->server2:9527<-->server2:22<-->localhost:XXXXX<-->localhost:YYYYY<-->server1:23
動態端口轉發
當用firefox訪問internet時,本機的1080端口做為代理服務器, firefox的訪問請求被轉發到sshserver上,由sshserver替之訪問internet 在本機firefox設置代理proxy:127.0.0.1:1080 #ssh -D 1080 root@sshserver
ssh服務器
服務器端:
sshd, 配置文件: /etc/ssh/sshd_config 常用參數: Port ListenAddress ip PermitRootLogin yes ClientAliveInterval 0 UseDNS yes 限制可登錄用戶的辦法: AllowUsers user1 user2 user3 DenyUsers AllowGroups DenyGroup 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、做好日志,經常分析
示例:設置可登錄用戶白名單;編輯配置文件]# vim /etc/ssh/sshd_config.添加白名單信息;
用戶登錄信息獲取:
/var/log/wtmp:用戶成功登錄的日志信息 ]# last /var/log/btmp:用戶登錄嘗試失敗的日志信息 ]# lastb lastlog:每個用戶最近一次成功登錄的信息
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)
sftp命令:基于ssh的ftp協議
交互式文件傳輸工具 用法能和傳統的ftp工具相似 利用ssh服務實現安全的文件上傳和下載 使用ls cd mkdir rmdir pwd get put等指令,可用?獲取幫助信息。 sftp [user@]host sftp> help
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文件系統、用戶起始目錄以及臨時目錄.
如何使用AIDE:
安裝AIDE
yum install aide
修改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 --up
切換身份
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、授權規則:必須的 授權規則格式: 用戶 登入主機=(代表用戶) 命令 示例: root ALL=(ALL) ALL 格式說明: user: 運行命令者的身份 host: 通過哪些主機 (runas):以哪個用戶的身份 command: 運行哪些命 別名: Users和runas: username #uid %group_name %#gid user_alias|runas_alias host: ip或hostname network(/netmask) host_alias command: command name directory sudoedit 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 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 [a-zA-Z]*, !/usr/bin/passwd root ADMINUSER ALL=(root) NOPASSWD:ADMINCMD, PASSWD:/usr/sbin/userd 示例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/message* 命令語法選項: #ls -l /usr/bin/sudo sudo –i –u wang 切換身份 sudo [-u user] COMMAND -V 顯示版本信息等配置信息 -u user 默認為root -l,ll 列出用戶在主機上可用的和被禁止的命令 -v 再延長密碼有效期限5分鐘,更新時間戳 -k 清除時間戳,下次需要重新輸密碼 -K 與-k類似,還要刪除時間戳文件 -b 在后臺執行指令 -p 改變詢問密碼的提示符號 如 -p ”password on %h for user %p"
原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/58166