Linux 第23天: (09月22日) Linux安全加密

Linux 第23天: (09月22日) Linux安全加密

 

 

 

本章內容
安全機制
對稱加密
不對稱加密
散列算法
PKI和CA
openssl
證書管理
gpg
ssh服務
dropbear
aide
sudo

 

 

加密需要
不加密流量的易受***性
密碼/數據嗅探
數據操作
驗證操作
相當於郵寄明信片
不安全的傳統協議
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協議的實現)

 

對稱加密算法
對稱加密:加密和解密使用同一個密鑰
DES:Data Encryption Standard,56bits
3DES:
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
特性:
1、加密、解密使用同一個密鑰,效率高
2、將原始數據分割成固定大小的塊,逐個進行加密
缺陷:
1、密鑰過多
2、密鑰分發
3、數據來源無法確認

 

非對稱加密算法
公鑰加密:密鑰是成對出現
公鑰:公開給所有人;public key
私鑰:自己留存,必須保證其私密性;secret key
特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然
功能:
數字簽名:主要在於讓接收方確認發送方身份
對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方
數據加密:適合加密較小數據
缺點:密鑰長,加密解密效率低下
算法:
RSA(加密,數字簽名),DSA(數字簽名),ELGamal

 

非對稱加密
基於一對公鑰/密鑰對
用密鑰對中的一個加密,另一個解密
實現加密:
接收者
生成公鑰/密鑰對:P和S
公開公鑰P,保密密鑰S
發送者
使用接收者的公鑰來加密消息M
將P(M)發送給接收者
接收者
使用密鑰S來解密:M=S(P(M))

 

非對稱加密
實現數字簽名:
發送者
生成公鑰/密鑰對:P和S
公開公鑰P,保密密鑰S
使用密鑰S來加密消息M
發送給接收者S(M)
接收者
使用發送者的公鑰來解密M=P(S(M))
結合簽名和加密
分離簽名

 

單向散列
將任意數據縮小成固定大小的“指紋”
任意長度輸入
固定長度輸出
若修改數據,指紋也會改變(“不會產生衝突”)
無法從指紋中重新生成數據(“單向”)
功能:數據完整性
常見算式
md5: 128bits、sha1: 160bits、sha224
sha256、sha384、sha512
常用工具
md5sum | sha1sum [ --check ] file
openssl、gpg
rpm -V

 

密鑰交換
密鑰交換:IKE(Internet Key Exchange )
公鑰加密:
DH (Deffie-Hellman):
DH:
1、A: a,p協商生成公開的整數a,大素數p
B: a,p
2、A:生成隱私數據:x (x<p ),計算得出a^x%p,發送給B
B:生成隱私數據:y,計算得出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:開源項目
三個組件:
openssl: 多用途的命令行工具
libcrypto: 加密算法庫
libssl:加密模塊應用庫,實現了ssl及tls
openssl命令:
兩種運行模式:交互模式和批處理模式
opensslversion:程序版本號
標準命令、消息摘要命令、加密命令
標準命令:
enc, ca, req, ...

 

openssl命令
對稱加密:
工具:opensslenc, gpg
算法:3des, aes, blowfish, twofish
enc命令:man enc
加密:
opensslenc-e -des3 -a -salt -in testfile
-out testfile.cipher
解密:
opensslenc-d -des3 -a -salt –in testfile.cipher
-out testfile
openssl?
單向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum…
openssldgst
dgst命令:man dgst
openssldgst-md5 [-hex默認] /PATH/SOMEFILE
openssldgst-md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code,單向加密的一種延伸應用,用於實現網絡通信中保證所傳輸數據的完整性機制
CBC-MAC
HMAC:使用md5或sha1算法
生成用戶密碼:
passwd命令:man sslpasswd
opensslpasswd-1 -salt SALT(最多8位)
opensslpasswd-1 –salt centos
生成隨機數:man sslrand
opensslrand -base64|-hex NUM
NUM: 表示字節數;-hex時,每個字符4位,出現的字符數爲NUM*2
公鑰加密:
算法:RSA, ELGamal
工具:gpg, opensslrsautl(man rsautl)
數字簽名:
算法:RSA, DSA, ELGamal
密鑰交換:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
生成密鑰對兒:man genrsa
生成私鑰:
opensslgenrsa-out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask077; opensslgenrsa-out key.pri–des 2048)
從私鑰中提取出公鑰:
opensslrsa-in PRIVATEKEYFILE –pubout–out PUBLICKEYFILE
隨機數生成器:僞隨機數字
鍵盤和鼠標
塊設備中斷
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數,非阻塞

 

OpenSSL
PKI:Public Key Infrastructure
CA
RA
CRL
證書存取庫
建立私有CA:
OpenCA
openssl
證書申請及簽署步驟:
1、生成申請請求
2、RA覈驗
3、CA簽署
4、獲取證書

 

創建CA和申請證書
創建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf

 

(1) 創建所需要的文件
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial

 

(2) CA自簽證書
生成私鑰
cd /etc/pki/CA/
(umask066; opensslgenrsa-out
/etc/pki/CA/private/cakey.pem2048)
創建CA和申請證書
生成自簽名證書
opensslreq-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: 證書的保存路徑

 

(3) 頒發證書
(a) 在需要使用證書的主機生成證書請求;
給web服務器生成私鑰
(umask066; opensslgenrsa-out
/etc/httpd/ssl/httpd.key2048)
生成證書申請文件
opensslreq-new -key /etc/httpd/ssl/httpd.key
-days 365 -out /etc/httpd/ssl/httpd.csr
(b) 將證書請求文件傳輸給CA
(c) CA簽署證書,並將證書頒發給請求者;
opensslca -in /tmp/httpd.csr–out
/etc/pki/CA/certs/httpd.crt -days 365
注意:默認國家,省,公司名稱必須和CA一致
創建CA和證書管理
(d) 查看證書中的信息:
opensslx509 -in /PATH/FROM/CERT_FILE -noout
-text|subject|serial|dates


(4) 吊銷證書
(a) 在客戶端獲取要吊銷的證書的serial
opensslx509 -in /PATH/FROM/CERT_FILE-noout
-serial -subject
(b) 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致
吊銷證書:
opensslca -revoke /etc/pki/CA/newcerts/
SERIAL.pem

 

創建CA和證書管理
(c) 生成吊銷證書的編號(第一次吊銷一個證書時才需要執行)
echo 01 > /etc/pki/CA/crlnumber
(d) 更新證書吊銷列表
opensslca -gencrl-out /etc/pki/CA/crl/ca.crl
查看crl文件:
opensslcrl-in /etc/pki/CA/crl/ca.crl
-noout-text

 

應用程序:RPM
文件完整性的兩種實施方式
被安裝的文件
MD5單向散列
rpm --verify package_name (or -V)
發行的軟件包文件
GPG公鑰簽名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
rpm --checksig pakage_file_name (or -K)

 

使用gpg實現對稱加密
對稱加密file文件
gpg-c file
ls file.gpg
在另一臺主機上解密file
gpg -o file -d file.gpg

 

使用gpg工具實現公鑰加密
在hostB主機上用公鑰加密,在hostA主機上解密
在hostA主機上生成公鑰/私鑰對
gpg--gen-key
在hostA主機上查看公鑰
gpg--list-keys
在hostA主機上導出公鑰到wang.pubkey
gpg-a --export -o wang.pubkey
從hostA主機上覆制公鑰文件到需加密的B主機上
scpwang.pubkeyhostB:
在需加密數據的hostB主機上生成公鑰/私鑰對
gpg--list-keys
gpg--gen-key
在hostB主機上導入公鑰
gpg--import wang.pubkey
gpg--list-keys
用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg
gpg-e -r wangxiaochunfile
file file.gpg
複製加密文件到hostA主機
scpfstab.gpghostA:
在hostA主機解密文件
gpg-d file.gpg
gpg-o file -d file.gpg
刪除公鑰和私鑰
gpg --delete-keys wangxiaochun
gpg --delete-secret-keys wangxiaochun

 

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
OpenSSH:
C/S
C: ssh, scp, sftp
Windows客戶端:
xshell, putty, securecrt, sshsecureshellclient
S: sshd

 

ssh客戶端
客戶端組件:
ssh, 配置文件:/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyCheckingno 首次登錄不顯示檢查提示
格式: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 sshremoteserver2

 

允許實現對遠程系統經驗證地加密安全訪問
當用戶遠程連接ssh服務器時,會複製ssh服務器/etc/ssh/ssh_host*key.pub(centos7.0默認是ssh_host_ecdsa_key.pub)文件中的公鑰到客戶機的~./ssh/know_hosts中。下次連接時,會比較兩處是否有不同。
ssh客戶端

 

基於key認證
基於密鑰的認證:
(1) 在客戶端生成密鑰對
ssh-keygen-t rsa[-P ''] [-f “/root/.ssh/id_rsa"]
#ssh-keygen–t rsa–P ‘’ -f “/root/.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中,代理被自動提供
否則運行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)

 

sftp命令
交互式文件傳輸工具
用法能和傳統的ftp工具相似
利用ssh服務實現安全的文件上傳和下載
使用ls cd mkdirrmdirpwdget put等指令,可用?獲取幫助信息。
sftp[user@]host
sftp> help

 

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:hostportsshserver
ssh–L 9527:telnetsrv:23 -N sshsrv
telnet 127.0.0.1 9527
當訪問本機的9527的端口時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23
datalocalhost:9527 localhost:XXXXXsshsrv:22 sshsrv:YYYYY telnetsrv:23
選項:
-f 後臺啓用
-N 不開遠程shell
-g 啓用網關功能


遠程轉發:
-R sshserverport:host:hostportsshserver
ssh–R 9527:telnetsrv:23 –N sshsrv
讓sshsrv偵聽9527端口的訪問,如有訪問,就加密後通過ssh服務轉發請求到本機ssh客戶端,再由本機解密後轉發到telnetsrv:23
Datasshsrv:9527 sshsrv:22 localhost:XXXXXlocalhost:YYYYYtelnetsrv:23


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

 

X 協議轉發
所有圖形化應用程序都是X客戶程序
能夠通過tcp/ip連接遠程X服務器
數據沒有加密機,但是它通過ssh連接隧道安全進行
ssh-X
user@remotehostgedit
remotehost主機上的gedit工具,將會顯示在本機的X服務器上
傳輸的數據將通過ssh連接加密

 

ssh服務器
服務器端:
sshd, 配置文件: /etc/ssh/sshd_config
常用參數:
Port
ListenAddressip
PermitRootLoginyes
ClientAliveInterval0
UseDNSyes
限制可登錄用戶的辦法:
AllowUsersuser1 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
[email protected]
15、dbclient-p 2222 [email protected]

 

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命令編輯配置文件,具有語法檢查功能

 

sudo
配置文件:/etc/sudoers, /etc/sudoers.d/
時間戳文件:/var/db/sudo
日誌文件:/var/log/secure
配置文件支持使用通配符glob:
?:前面的字符或詞可出現一次或無
* :前面的字符或詞出現零次或多次
[wxc]:匹配其中一個字符
[^wxc]:除了這三個字符的其它字符
\x : 轉義
`alpha` :字母示例:/bin/ls `alpha`*
配置文件規則有兩類;
1、別名定義:不是必須的
2、授權規則:必須的

 

sudoers
授權規則格式:
用戶登入主機=(代表用戶) 命令
示例:
rootALL=(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_TypeNAME = item1, item2, item3 : NAME = item4, item5
示例1:
Student ALL=(ALL) ALL
%wheelALL=(ALL)ALL
示例2:
student ALL=(root) /sbin/pidof,/sbin/ifconfig
%wheel ALL=(ALL) NOPASSWD: ALL

 

sudo示例
示例3
User_Alias NETADMIN= netuser1,netuser2
Cmnd_AliasNETCMD = /usr/sbin/ip
NETADMIN ALL=(root)NETCMD
示例4
User_AliasSYSADER=wang,mage,%admins
User_AliasDISKADER=tom
Host_Alias SERS=www.magedu.com,172.16.0.0/24
Runas_AliasOP=root
Cmnd_AliasSYDCMD=/bin/chown,/bin/chmod
Cmnd_AliasDSKCMD=/sbin/parted,/sbin/fdisk
SYSADER SERS= SYDCMD,DSKCMD
DISKADER ALL=(OP) DSKCMD
示例4
User_AliasADMINUSER = adminuser1,adminuser2
Cmnd_AliasADMINCMD = /usr/sbin/useradd, /usr/sbin/usermod, /usr/bin/passwd[a-zA-Z]*,
!/usr/bin/passwdroot
ADMINUSER ALL=(root) NOPASSWD:ADMINCMD,PASSWD:/usr/sbin/userdel
示例5
Defaults:wangrunas_default=tom
wangALL=(tom,jerry) ALL
示例6
wang192.168.175.136,192.168.175.138=(root) /usr/sbin/,!/usr/sbin/useradd
示例7
wangALL=(ALL) /bin/cat /var/log/message*

 

sudo命令
#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"

 

 

 

 


 

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