摘要:但是,還能夠將其他端口的網絡數據通過鏈接來轉發,并且自動提供了相應的加密及解密服務。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許的連接,也能夠通過將端口轉發來使用進行通訊端口轉發能夠提供兩大功能加
博文參考
http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082利用openssl建立私有CA,完成證書頒發和管理 openssl配置文件中關于CA的配置段介紹
openssl的配置文件為/etc/pki/tls/openssl.cnf,其中定義了openssl完成CA工作時的相關屬性定義
建立私有CA在確定配置為CA的服務器上生成一個自簽證書,為CA提供所需的目錄及文件即可 步驟: <1>生成CA自己的私鑰,而在openssl的配置文件中定義了私鑰存放的位置為/etc/pki/CA/private/cakey.pem <2>為CA提供工作所需要的目錄及文件: ` mkdir /etc/pki/CA/{certs,crl,newcerts} 注意:如果目錄不存在才創建 touch /etc/pki/CA/{serial,index.txt} echo 01 >>/etc/pki/CA/serial 創建兩個CA工作需要用到的文件,serial為存放證書編號的文件,并且要給該文件提供一個初始的編號,標號必須是2位數字。 index.txt文件用于存放簽署過的證書的索引 (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 ) <3>生成CA自己的自簽證書,而在openssl的配置文件中,也定義了自簽證書的存放位置為/etc/pki/CA/cacert.pem 發起簽署CA證書的請求 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 表示發起CA證書簽署請求, -new表示這是一個新申請的簽署請求 -x509 表示這是自簽證書,該選項只有在CA為自己生成自簽證書時使用 -key指明私鑰的存放路徑 -out 標明所生成的請求的文件存放路徑,如果是自簽證書,將直接生成簽署過的證書,如果不是自簽證書,則將生成的簽署請求文件發送給CA服務器,由CA服務器根據請求文件生成證書文件 -days 指明申請的證書的有效期限為多少天 命令執行后會要求填入一些信息: 國家代碼:CN 省份:beijing 城市:beijing 公司名:nwc 部門:ops 持有者名稱:ca.nwc.com(注意:此處最好與此CA服務器的主機名保持一致) 管理員的郵件地址:nwc@nwc.com另一個主機建立CA申請請求,CA進行簽署頒發證書
某服務器需要用到證書進行安全通行時,需要向CA服務器請求簽署證書: 步驟: <1>在需要使用證書的服務器上建一個目錄,生成私鑰(真實環境中建議將該目錄建在需要用到證書的服務的相關目錄下,便于管理) <2>生成簽署請求 openssl req -new -key /testdir/testssl/mykey.private -out /testdir/testssl/mykey.csr -days 365 表示生成證書簽署請求,使用的私鑰文件路徑為/testdir/testssl/mykey.private,生成的簽署請求的文件為/testdir/testssl/mykey.csr,申請的證書有效期為365天 執行命令后會要求填入一些信息: 國家、身份、城市、單位、部門、持有者、管理員郵箱等 注意:持有者要寫成主機名, 否則可能造成后期用戶訪問時,提示證書與訪問的主機名不一致,此處應為www.nwc.com <3>將生成的請求文件拷貝到CA服務器上 <4>在CA服務器上進行簽署,生成證書,在openssl的配置文件中,定義了簽署完成的證書的存放位置為/etc/pki/CA/certs/目錄下 openssl ca -in /tmp/mykey.csr -out /etc/pki/CA/certs/mykey.crt -days 365 表示簽署證書,-in指明請求簽署文件的路徑,-out指明生成的證書的路徑,-days表示簽署多少天 命令執行后,會讓確認兩次,確認好了之后,即完成了簽署的動作,生成了簽署過后的證書 <5>將簽署的證書發給請求方證書的吊銷
<1>在客戶端獲取要吊銷的證書的serial openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject <2>在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致 吊銷證書: openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem <3>生成吊銷證書的編號(第一次吊銷一個證書時才需要執行) echo 01 > /etc/pki/CA/crlnumber <4>更新證書吊銷列表 openssl ca -gencrl -out /etc/pki/CA/crl/ca.crl 查看crl文件: openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text利用gpg實現加解密 gpg實現對稱加密
<1>對稱加密file文件 gpg -c file ls file.gpg <2>在另一臺主機上解密file gpg -o file -d file.gpggpg實現公鑰加密
在hostB主機上用公鑰加密,在hostA主機上解密 <1>在hostA主機上生成公鑰/私鑰對 gpg –gen-key <2>在hostA主機上查看公鑰 gpg –list-keys <3>在hostA主機上導出公鑰到nwckey.pub gpg -a –export -o nwckey.pub <4>從hostA主機上復制公鑰文件到需加密的B主機上 scp nwckey.pub HOST_B:/PATH/TO/SOMEWHERE <5>在需加密數據的hostB主機上生成公鑰/私鑰對 gpg –list-keys gpg –gen-key <6>在hostB主機上導入公鑰 gpg –import nwckey.pub gpg –list-keys <7>用從hostA主機導入的公鑰,加密hostB主機的文件file,生成file.gpg gpg -e -r nwc file file file.gpg <8>復制加密文件到hostA主機 scp file.gpg HOST_A:/PATH/TO/SOMEWHERE <9>在hostA主機解密文件 gpg -d file.gpg gpg -o file -d file.gpg <10>刪除公鑰和私鑰 gpg –delete-keys nwc gpg –delete-secret-keys nwcssh服務 SSH協議的基本概念
SSH:Secure Shell 監聽在TCP協議的22號端口 SSH協議版本: sshv1:基于CRC-32做MAC,因此不安全,建議勿用 sshv2:基于雙方主機協商選擇最安全的MAC實現機制,建議使用。 sshv2基于DH實現秘鑰交換,基于RSA或DSA實現身份認證 客戶端通過檢查服務器端的主機秘鑰來判定是否與其進一步通信 服務端程序為:openssh-server,配置文件為/etc/ssh/sshd_config 客戶端程序為:openssh-client,配置文件為/etc/ssh/ssh_config`SSH服務器端的相關配置
配置文件:/etc/ssh/sshd_config 服務腳本:/etc/rc.d/init.d/sshd 服務腳本配置文件:/etc/sysconfig/sshd 獲取關于服務配置文件的幫助:man sshd_config /etc/ssh/sshd_config配置文件中相關指令說明:(#開始的相關選項表示使用的是默認值) Port 22 指明ssh服務監聽的端口 ListenAddress IP_ADDR 表示監聽的地址,可出現多次 0.0.0.0表示當前主機的所有地址 Protocol 2 表示支持的ssh協議版本,建議是2 SyslogFacility AUTHPRIV 表示日志記錄的設施,要想知道該設置的具體日志放在哪里,則查看rsyslog的配置文件/etc/rsyslog.conf文件中的相關定義,此處相當于日志存在/var/log/secure日志中 LogLevel INFO 表示定義記錄的日志級別 PermitRootLogin yes|no 是否允許管理員以ssh登錄 MaxAuthTries 6 表示認證時的重試次數,為此數字的一半,超過次數后會被鎖定一定時間 MaxSessions 10 表示支持的最大的ssh會話的個數 AcceptEnv 接受的環境變量參數 AllowUsers 接受那些用戶使用ssh,做用戶白名單,只要不在此名單內的用戶,都不允許登錄 如:AllowUsers nwc1 nwc2 nwc3 root AllowGroups 接受那些用戶組使用ssh,組的白名單 DenyUsers 不允許那些用戶使用ssh,用戶黑名單 DenyGroups 不允許那些用戶組使用ssh,組黑名單 白名單和黑名單不要同時使用 X11Forwarding yes|no 是否轉發圖形窗口 #KeyRegenerationInterval 1h 密鑰的使用時間 #ServerKeyBits 1024 密鑰長度 #LoginGraceTime 2m 登陸寬限期 #PermitRootLogin yes root是否可以登錄 #StrictModes yes 嚴格模式,家目錄 屬主 屬組 PasswordAuthentication yes 是否使用用戶名和密碼的方式 Kerberos集中認證管理 使用SSH服務的最佳配置方案: 1)僅適用sshv2版本 2)限定僅允許哪些用戶訪問ssh服務 Allowusers root vivek jerry 白名單 DenyUser saroj anjali foo 黑名單 3)配置空閑會話超時長 ClientAliveCountMax 0 ClientAliveInterval 300 4)使用iptables設置ssh服務安全訪問策略 5)改變默認的端口和監聽的IP port 300 ListenAddress 192.168.1.5 ListenAddress 202.54.1.5 勿使用默認22端口 6)使用強密碼 生成隨機密碼的函數示例: genpasswd(){ local 1=$1 [ "$1" == "" ]&& 1=20 tr -dc A-Za-z0-9_ 用戶登錄信息的獲取/var/log/wtmp 用戶成功登錄的日志信息,也可直接用last命令顯示 /var/log/btmp 用戶失敗登錄的日志信息,也可用lastb命令顯示 lastlog 每個用戶最近一次成功登錄的信息基于SSH的客戶端相關工具客戶端的命令:ssh ssh [OPTIONS] USERNAME@HOST [COMMAND] 常見選項:(如果不提供USERNAME,則會以當前系統上的用戶,作為登錄遠程主機的用戶,如果遠程主機上的用戶不存在,則無法連接) -p PORT 指定登錄的端口(如果遠程主機的ssh服務修改了默認監聽的端口,則需要用-p指定端口),在生產環境中建議將SSH監聽的端口改掉 COMMAND 表示不登錄對方主機,在遠程主機執行命令,然后結果返回本機后退出 -b:指定連接的源IP -v:調試模式 -C:壓縮方式 -X: 支持x11轉發 -Y:支持信任x11轉發 ForwardX11Trusted yes -t: 強制偽tty分配 ssh -t remoteserver1 ssh remoteserver2配置基于秘鑰方式進行SSH登錄SSH的認證機制: 基于口令 基于秘鑰: 客戶端在本地生成一對秘鑰,客戶端將公鑰復制到服務器端,要登錄的用戶的家目錄下的隱藏目錄.ssh目錄下一個名為authorized_keys或authorized_keys2文件中,這樣即可實現無需密碼登錄ssh服務端 配置過程: <1>生成秘鑰對 ssh-keygen -t rsa -P "" 生成的秘鑰默認保存至當前用戶家目錄下的.ssh目錄的id_rsa文件中,公鑰在id_rsa.pub文件中 -P 表示不指定使用秘鑰文件時的密碼,否則以后每次使用秘鑰登錄時,都要輸入秘鑰文件的密碼 <2>復制秘鑰至遠程主機 ssh-copy-id -i /PATH/TO/公鑰文件 USERNAME@HOST 表示將本機的公鑰文件復制到哪個遠程主機的哪個用戶基于ssh的復制文件命令:scpscp SRC1 SRC2 … DEST 常用選項有: -r 當源是目錄時,實現遞歸復制 -p 復制時,保留源文件的復制和修改時間戳以及權限 -q 復制時靜默模式 -C: 壓縮數據流 -P PORT 指定服務器端的端口(如果遠程主機的ssh服務修改了默認監聽的端口,則需要用-P指定端口) 分兩種情況: <1>源文件在本機,目標為遠程: scp /PATH/TO/FILE1… USERNAME@HOST:/PATH/TO/SOMEWHERE 注意:源文件為目錄時,要使用-r 選項,實現遞歸復制;多個源時,目標要是目錄 <2>源文件在遠程,目標為本機: scp USERNAME@HOST:/PATH/TO/FILE… /PATH/TO/SOMEWHERE 注意:源文件為目錄時,要使用-r 選項,實現遞歸復制,多個源時,目標要是目錄基于ssh的ftp協議的命令:sftp查看openssh是不是支持sftp,查看openssh的配置文件/etc/ssh/sshd_config里面,是否有 Subsystem sftp /usr/libexec/openssh/sftp-server 這一行的定義,如果有,則證明支持sftp 用法:sftp USERNAME@HOST 指明以哪個用戶登錄哪個主機的ftp服務器,登錄后可利用help獲取ftp命令的使用格式rsync命令(比scp更快,只復制不同的文件,對于相同的文件不復制)基于ssh和rsh服務實現高效率的遠程系統之間復制文件 使用安全的shell連接做為傳輸方式 rsync –av /etc server1:/tmp 復制目錄和目錄下文件(源路徑后面沒有/) rsync –av /etc/ server1:/tmp 只復制目錄下文件(原路徑后面有/) 常見選項: -n 模擬復制過程 -v 顯示詳細過程 -r 遞歸復制目錄樹 -p 保留權限 -t 保留時間戳 -g 保留組信息 -o 保留所有者信息 -l 把符號鏈接文件做為符號文件進行復制(默認) -L 將軟鏈接文件指向文件復制 -a 存檔模式,相當于 –rlptgoD,但不保留ACL( -A)和SELinux屬性(-X)SSH的端口轉發<1>什么是SSH端口轉發? SSH 會自動加密和解密所有 SSH 客戶端與服務端之間的網絡數據。但是, SSH 還能夠將其他 TCP 端口的網絡數據通過 SSH 鏈接來轉發,并且自動提供了相應的加密及解密服務。這一過程也被叫做“隧道”( tunneling),這是因為 SSH 為其他 TCP 鏈接提供了一個安全的通道來進行傳輸而得名。例如, Telnet, SMTP, LDAP 這些 TCP 應用均能夠從中得益,避免了用戶名,密碼以及隱私信息的明文傳輸。而與此同時, 如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許SSH 的連接,也能夠通過將 TCP 端口轉發來使用 SSH 進行通訊 <2>SSH 端口轉發能夠提供兩大功能: 加密 SSH Client 端至 SSH Server 端之間的通訊數據 突破防火墻的限制完成一些之前無法建立的 TCP 連接 <3>本地轉發 ssh -L localport:host:hostport sshserver 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 選項: -f 后臺啟用 -N 不開遠程shell -g 啟用網關功能 <4>遠程轉發: -R sshserverport:host:hostport 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 <5>動態端口轉發: 當用firefox訪問internet時,本機的1080端口做為代理服務器, firefox的訪問請求被轉發到sshserver上,由sshserver替之訪問internet 在本機firefox設置代理socket proxy:127.0.0.1:1080 #ssh -D 1080 root@sshserverdropbear提供ssh服務ssh協議的另一個實現: dropbear
編譯安裝dropbear準備: <1>安裝開發包組:yum groupinstall "Development Tools" -y <2>下載源碼包,假設為dropbear-2013.58.tar.bz2 安裝: <3> 解壓:tar xf dropbear-2013.58.tar.bz2 <4> 查看安裝的幫助手冊:less INSTALL <5> 切換到解壓后的目錄,并執行./configure <6> make,指定要安裝那些工具:make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" <7> make install,指定安裝的工具: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 #前臺運行(因為本機有SSH,為了避免端口沖突,手動指定其運行在2222端口) dropbear -p :2222 #后臺運行 客戶端訪問: <14> ssh -p 2222 root@127.0.0.1 <15> dbclient -p 2222 root@127.0.0.1aide監控文件安全性 aide是什么AIDE(Advanced Intrusion Detection Environment高級入侵檢測環境)是一個入侵檢測工具,主要用途是檢查文件的完整性,審計計算機上的那些文件被更改過了。 AIDE能夠構造一個指定文件的數據庫,它使用aide.conf作為其配置文件。 AIDE數據庫能夠保存文件的各種屬性,包括:權限(permission)、索引節點序號(inode number)、所屬用戶(user)、所屬用戶組(group)、文件大小、最后修改時間(mtime)、創建時間(ctime)、最后訪問時間(atime)、增加的大小以及連接數。 AIDE還能夠使用下列算法: sha1、 md5、 rmd160、 tiger,以密文形式建立每個文件的校驗碼或散列號. 這個數據庫不應該保存那些經常變動的文件信息,例如:日志文件、郵件、 /proc文件系統、用戶起始目錄以及臨時目錄AIDE安裝及其配置文件安裝:yum install aide 其配置文件為/etc/aide.conf (指定對哪些文件進行哪些種類的檢測) 配置文件相關的定義:[root@localhost ~]# cat /etc/aide.conf @@define DBDIR /var/lib/aide //定義aide的數據庫文件 @@define LOGDIR /var/log/aide //定義aide的日志文件 database=file:@@{DBDIR}/aide.db.gz //定義aide比對時使用的數據庫文件 database_out=file:@@{DBDIR}/aide.db.new.gz //定義aide創建數據庫時的數據文件 //創建好比對數據庫后,數據庫的名稱默認就是new,如果要比對,需要將new去掉,然后利用去掉new后的數據進行驗證 #p: permissions //定義文件權限的檢測 #i: inode: //定義文件inode號的檢測 #n: number of links //定義文件鏈接數的檢測 #u: user //定義文件所屬主的檢測 #g: group //定義文件所屬組的檢測 #s: size //定義文件大小的檢測 #b: block count //定義文件占用塊數量的檢測 #m: mtime //定義文件內容修改時間的檢測 #a: atime //定義文件訪問時間的檢測 #c: ctime //定義文件修改時間的檢測 #S: check for growing size #acl: Access Control Lists //定義文件acl權限的檢測 #selinux SELinux security context //定義selinux的檢測 #xattrs: Extended file attributes //定義文件xattrs屬性的檢測 #md5: md5 checksum //定義MD5校驗檢測 #sha1: sha1 checksum //定義SHA1校驗檢測 #sha256: sha256 checksum //定義SHA256校驗檢測 #sha512: sha512 checksum #R: p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5 //定義一個檢測項目的組,組名為R,檢測的內容為后面各個多帶帶屬性的集合 #L: p+i+n+u+g+acl+selinux+xattrs //支持自定義的檢測項目組 #E: Empty group #>: Growing logfile p+u+g+i+n+S+acl+selinux+xattrs ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger NORMAL = R+rmd160+sha256 /opt NORMAL //定義檢測的文件路徑,及對其采用哪種方式的檢測,后面NORMAL為定義的一個檢測項目的集合 /usr NORMAL /root NORMAL !/usr/src //路徑前面帶!表示不檢測 !/usr/tmp使用流程初始化默認的AIDE的庫: /usr/local/bin/aide –init 生成檢查數據庫(建議初始數據庫存放到安全的地方) cd /var/lib/aide mv aide.db.new.gz aide.db.gz 檢測: /usr/local/bin/aide –check 更新數據庫 aide –updatesudo相關內容 sudo的基礎概念
[root@centos7 ~]# echo aa > /testdir/file1
[root@centos7 ~]# echo cc > /testdir/file2<1> sudo能夠授權指定用戶在指定主機上運行某些命令。 如果未授權用戶嘗試使用 sudo,會提示聯系管理員 <2>sudo可以提供日志,記錄每個用戶使用sudo操作 <3>sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機 <4>sudo使用時間戳文件來完成類似“檢票”的系統,默認存活期為5分鐘的“入場券” <5>通過visudo命令編輯配置文件,具有語法檢查功能,用visudo -c 可檢查配置文件語法sudo命令本身:sudo [-u user] COMMAND -V 顯示版本信息等配置信息 -u user 默認為root -l,ll 列出用戶在主機上可用的和被禁止的命令 -v 再延長密碼有效期限5分鐘,更新時間戳 -k 清除時間戳,下次需要重新輸密碼(當用戶使用sudo時,會要求輸入用戶密碼,用戶密碼默認5分鐘內有效,如果使用sudo -k則可以讓密碼立即失效,下次使用sudo又要使用密碼) -K 與-k類似,還要刪除時間戳文件 -b 在后臺執行指令 -p 改變詢問密碼的提示符號 如 -p ”password on %h for user %p sudo –i –u nwc切換身份sudo的配置文件(/etc/sudoers)配置文件: /etc/sudoers, /etc/sudoers.d/ 時間戳文件: /var/db/sudo 日志文件: /var/log/secure配置文件支持使用通配符glob:
? :前面的字符或詞可出現一次或無 * :前面的字符或詞出現零次或多次 [nwc]:匹配其中一個字符 [^nwc]:除了這三個字符的其它字符 x : 轉義 [[alpha]] :字母 示例: /bin/ls [[alpha]]*配置文件規則有兩類;
別名定義:不是必須的 授權規則:必須的一個sudo條目:
who which_host=(runas) command 在命令前可以使用標簽NOPASSWD:就可以讓用戶在使用該命令時不用輸入密碼 格式說明: user: 運行命令者的身份 host: 通過哪些主機 (runas):以哪個用戶的身份 command: 運行哪些命令別名機制:類似組的概念,組里面多個角色
who:User_alias which_host:Host_alias runas:Runas_alias command:Cmnd_alias 別名必須全部而且只能全部使用大寫英文字母的組合 用戶別名:User_alias 別名 = 后面可以是: 用戶名 用戶UID,用#引用 組名,用%引用 組的GID,用%#引用 還可以包含其他已經定義的用戶別名 主機別名:Host_Alias 別名 = 后面可以是: 主機名 IP 網絡地址 其他已經定義的主機別名 以哪個身份運行:Run_Alias 別名 = 后面可以是: 用戶名 %組名 其他已經定義的runas別名 命令別名:Cnmd_Alias 別名 = 后面可以是: 命令路徑(一般為絕對路徑) 目錄(此目錄內的所有命令) 其他已定義的命令別名sudo示例:例如:以nwc用戶以root身份運行useradd,usermod命令
先visudo nwc ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod 當nwc用的時候格式為:sudo /usr/sbin/useradd newbee例如:nwc ALL=(root)NOPASSWD:/usr/sbin/useradd,/usr/sbin/usermod
表示nwc在使用useradd和usermod時都不需要輸入密碼例如:nwc ALL=(root) NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod
表示nwc在使用useradd時不要密碼,usermod要密碼例如:
定義一個用戶組別名 User_Alias USERADMIN = nwc,%newbee,%nwc 組內包含nwc用戶,newbee組和nwc組內的所有用戶 定義一個命令組別名 Cmnd_Alias ADMINCOMMAND = /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root 表示定義useradd、userdel命令,passwd命令后必須跟字符,且不能對root進行passwd命令。 添加條目: USERADMIN ALL=(root) NOPASSWD:ADMINCOMMAND 表示USERADMIN別名內的所有用戶,在所有主機上,以root身份,不需要密碼,執行ADMINCOMMAND內的所有命令例如:
nwc ALL=(ALL) ALL %wheel ALL=(ALL) ALL 表示nwc用戶可以在任意主機上,以任意身份運行任意命令,wheel組類的用戶可以在任意主機上,以任意身份運行任意命令? 例如: nwc ALL=(root) /sbin/pidof,/sbin/ifconfig %wheel ALL=(ALL) NOPASSWD: ALL 表示nwc用戶可以在任意主機上以root身份運行/sbin/pidof,/sbin/ifconfig命令 wheel組類的用戶可以在任意主機上,以任意身份無需密碼運行任意命令例如:
User_Alias NETADMIN=user1,user2 Cmnd_Alias NETCMD = /usr/sbin/ip NETADMIN ALL=( root) NETCMD 表示定義一個用戶別名NETADMIN,該別名內包含用戶user1,user2 定義一個命令別名NETCMD,包含命令/usr/sbin/ip NETADMIN內的用戶能夠在任意主機上,以root身份,運行NETCMD定義的命令,也就是user1和user2能在任意主機上以root身份運行ip命令例如:
User_Alias SYSADER=nwc,user1,%admins User_Alias DISKADER=tom Host_Alias SERS=www.nwc.com,10.1.32.0/24 Runas_Alias OP=root Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk SYSADER SERS=(OP) SYDCMD,DSKCMD 表示定義一個用戶別名SYSADER,包含用戶nwc,user1,和admins組內的所有用戶 定義一個用戶別名DISKADER,包含用戶tom 定義主機別名SERS包含主機名為www.nwc.com的這臺主機和10.1.32.0/24這個網絡內的所有主機 定義一個運行身份的別名OP,包含身份是root 定義一個命令別名SYDCMD,包含命令/bin/chown,/bin/chmod 定義一個命令別名DSKCMD,包含命令/sbin/parted,/sbin/fdisk 定義SYSADER用戶別名的用戶,在SERS定義的主機上,以root身份,運行SYDAMD和DSKCMD定義的命令,也就是nwc、user1和admins組內的所有用戶,能夠在www.nwc.com這臺主機和10.1.32.0/24這個網絡內的所有主機上,以root身份運行/bin/chown,/bin/chmod,/sbin/parted,/sbin/fdisk命令例如:
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 表示定義一個ADMINUSER的用戶別名,包括adminuser1和adminuser2 定義一個ADMINCMD命令別名,包括useradd、usermod命令,passwd命令后面跟字母開頭的字符串,但不能執行passwd root,也就是不能對root改密 定義允許adminuser1和adminuser2用戶能夠在所有主機上,不用輸入密碼執行useradd、usermod、和passwd定義的相關命令,但是需要密碼執行userdel命令例如
Defaults:nwc runas_default=tom nwc ALL=(tom,jerry) ALL 表示授權nwc用戶在所有主機上以tom或Jerry身份,運行所有命令 上面的Defaults 表示當nwc用sodu執行命令時,如果不用-u指明以誰的身份,則默認以tom的身份執行命令例如
nwc 10.1.32.68,10.1.32.22 = (root) /usr/sbin/,!/usr/sbin/useradd 表示授權nwc用戶在10.1.32.68和10.1.32.22主機上以root身份執行/user/sbin/下的所有命令,但是不包括useradd命令例如
nwc ALL=(ALL) /bin/cat /var/log/message* 表示授權nwc用戶在所有主機上,以任意身份,運行cat /var/log/message*命令 注意,此種方式是非常危險的,因為用戶可以利用命令 cat /var/log/message /etc/shadow ….因為*代表任意字符,故后面可以跟上任何文件
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26964.html
摘要:但是,還能夠將其他端口的網絡數據通過鏈接來轉發,并且自動提供了相應的加密及解密服務。而與此同時,如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許的連接,也能夠通過將端口轉發來使用進行通訊端口轉發能夠提供兩大功能加 博文參考 http://www.178linux.com/48542 https://segmentfault.com/a/1190000010279082 利用op...
閱讀 1875·2021-09-28 09:36
閱讀 2425·2021-09-08 09:35
閱讀 3066·2019-08-30 15:53
閱讀 1553·2019-08-30 14:08
閱讀 664·2019-08-29 18:40
閱讀 2842·2019-08-29 13:57
閱讀 2702·2019-08-29 13:55
閱讀 680·2019-08-26 13:45