tcp_wrapper,sudo,nsswitch與pam安全解析

來源:互聯網
上載者:User

標籤:tcp   wrapper   sudo   

  tcp_wrapper作為tcp協議的一種封裝機制,主要適用於允許或拒絕某個或某段IP地址對本機訪問,之前講過的關於使用者控制項的防火牆應用工具iptables也可以實現這一功能,iptables可以針對所有的應用程式服務進行限制,而txp_wrapper這類的封裝器只能針對於sshd以及vsftpd服務;

  判斷一個應用程式是否受tcp_wrapper管制,只需要查看他是否具有libwrap.so這個庫即可;

  tcp_wrapper的相關設定檔有/etc/hosts.allow,/etc/hosts.deny

  /etc/hosts.allow:針對於允許訪問的IP地址,但也可以寫入拒絕訪問的IP地址;優先順序高;

  /etc/hosts.deny:針對於拒絕訪問的IP地址,但也可以寫入允許訪問的IP地址;優先順序低;

  設定檔格式:

    daemon_list:client_list [option]

  daemon_list:應用程式檔案列表,如ssh服務,其檔案名稱為sshd;

  client_list:允許或拒絕的IP或IP段;不能使用首碼格式的IP地址,如172.16.72.1/16,如果有掩碼則必須寫成172.16.72.1/255.255.255.0的形式;也可以寫成IP段的形式,如172.16.,表示172.16這個網段的所有IP地址;

  option:allow,允許訪問;

       deny,拒絕訪問;

       spawn:產生,發起,執行;

  在/etc/hosts.allow中允許172.16.72.2主機訪問172.16.72.6主機的ssh服務

  650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/07/F3/wKiom1nW6RbRO18aAABM0CU2Zhs214.png-wh_500x0-wm_3-wmp_4-s_4163834149.png" title="QQ20171006102116.png" alt="wKiom1nW6RbRO18aAABM0CU2Zhs214.png-wh_50" />

  650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/07/F3/wKiom1nW6TSwfPczAABMFWVkv3o120.png-wh_500x0-wm_3-wmp_4-s_270424539.png" title="QQ20171006102227.png" alt="wKiom1nW6TSwfPczAABMFWVkv3o120.png-wh_50" />

  在/etc/hosts.allow中允許172.16.72.2的主機訪問,在/etc/hosts.deny中拒絕所有主機訪問sshd,vsftpd服務;

  650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/07/F3/wKiom1nW6wzz26mQAABOBeJp77s211.png-wh_500x0-wm_3-wmp_4-s_2500912492.png" title="QQ20171006103019.png" alt="wKiom1nW6wzz26mQAABOBeJp77s211.png-wh_50" />

  650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/07/F3/wKiom1nW6yrTGuhCAABhaarITDs910.png-wh_500x0-wm_3-wmp_4-s_4020171114.png" title="QQ20171006103049.png" alt="wKiom1nW6yrTGuhCAABhaarITDs910.png-wh_50" />

  172.16.72.1想要訪問172.16.72.6的ssh服務

  650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/07/F4/wKiom1nW62jTga48AAAN_pTkN48669.png-wh_500x0-wm_3-wmp_4-s_113295364.png" title="QQ20171006103126.png" alt="wKiom1nW62jTga48AAAN_pTkN48669.png-wh_50" />

  172.16.72.1想要訪問172.16.72.6的vsftpd服務

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A6/A5/wKioL1nW66HDJ_nrAAAdVIq8Vtg256.png-wh_500x0-wm_3-wmp_4-s_1029767150.png" title="QQ20171006103351.png" alt="wKioL1nW66HDJ_nrAAAdVIq8Vtg256.png-wh_50" />

  172.16.72.2想要訪問172.16.72.6的ssh服務

  650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A6/A5/wKioL1nW686j7RHIAAAa9Rtihbw974.png-wh_500x0-wm_3-wmp_4-s_2374630914.png" title="QQ20171006103449.png" alt="wKioL1nW686j7RHIAAAa9Rtihbw974.png-wh_50" />

  172.16.72.2想要訪問172.16.72.6的vsftpd服務

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/07/F4/wKiom1nW7FjyKA_lAAA-EyKNJx0066.png-wh_500x0-wm_3-wmp_4-s_3236881818.png" title="QQ20171006103551.png" alt="wKiom1nW7FjyKA_lAAA-EyKNJx0066.png-wh_50" />

  使用EXCEPT關鍵字,在/etc/hosts.allow中排除172.16.72.2以外的IP地址的訪問;

  650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/A6/A5/wKioL1nW7dvSsaTRAABSU6-3ihA341.png-wh_500x0-wm_3-wmp_4-s_1186684728.png" title="QQ20171006104332.png" alt="wKioL1nW7dvSsaTRAABSU6-3ihA341.png-wh_50" />

  650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/07/F4/wKiom1nW7kKQMGOyAAAbavwMugk380.png-wh_500x0-wm_3-wmp_4-s_58888858.png" title="QQ20171006104401.png" alt="wKiom1nW7kKQMGOyAAAbavwMugk380.png-wh_50" />

  172.16.72.1訪問:

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/07/F4/wKiom1nW7l3TirHWAAAPFXmxb2c463.png-wh_500x0-wm_3-wmp_4-s_1063471258.png" title="QQ20171006104421.png" alt="wKiom1nW7l3TirHWAAAPFXmxb2c463.png-wh_50" />


  sudo:

  在生產環境中,使用root使用者作為常用使用者是非成危險的操作,容易被別人利用root使用者進行某種破環性的操作,所以在工作當中,使用普通使用者進行管理,在需要使用root使用者時,使用su或者sudo命令臨時切換root許可權就是一個較為安全的操作;

  su切換使用者,完全切換以及非完全切換;

  完全切換:su - username

  非完全切換:su username

  暫時擷取root許可權,當執行完命令後返回bash介面:su -c ‘COMMAND‘

  雖然su命令可以協助我們切換到root使用者下執行,但是這樣也不利於系統的安全性操作,假如一名營運人員被分配到的工作是管理網路方面的配置,但是如果他使用的是su -c這樣的操作模式,他就不僅僅能對網路設定檔進行操作了,許可權幾乎可以進行任何操作,所以在真正的生產環境中,使用的幾乎都是配置指定命令的sudo;

  sudo命令,可以根據/etc/sudoers設定檔中的配置資訊,指定哪個使用者可以借用sudo命令使用在root許可權下能夠使用的那些命令;

  在/etc/sudoers設定檔中,一行只能有一個授權

  其格式為:

    who where=(whom) what

    user client=(runas) COMMANDS

  sudo命令:

    sudo [option]... command

     -u user:以指定的使用者身份運行命令;

     -l [command]:列表顯示目前使用者能以sudo的方式運行

     的所有命令;

     -k:清空緩衝,再一次使用sudo就需要輸入密碼;

    sudo -k

    (第一次執行sudo輸入密碼後,會有緩衝儲存300秒,這樣300秒內執行sudo就不需要輸入密碼)

  /etc/sudoers編寫格式:

  who:

   user:使用者名稱;

   #uid:指定使用者的uid;

   %group:指定組;

   %#gid:指定組的gid;

   user_alias:事先定義好的使用者別名;

  在設定檔中定義別名:

  Alias_Type:

   User_Alias:設定使用者別名;

   Host_Alias:設定sudo範圍別名;

   Cmnd_Alias:設定命令別名;

   Runas_Alias:一般為root;

  設定別名:

   Alias_Type NAME=item1,item2....

   NAME必須都為大寫;

   650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/07/F4/wKiom1nXAIaySJMnAAA5CJSVMmQ176.png-wh_500x0-wm_3-wmp_4-s_2434870388.png" title="QQ20171006120155.png" alt="wKiom1nXAIaySJMnAAA5CJSVMmQ176.png-wh_50" />

  

  where:

   ALL:表示所有主機皆可用;

   ip/hostname:單個主機;

   Network Address:網路地址;

   host_alias事先定義過的主機的別名;

  

  whom:授權使用者後續命令的運行著的真實身份,通常是root;

  

  what:此次授權能夠執行的命令;

   command:單個命令授權;

   directory:指定目錄下所有的命令;

   sudoedit:特殊命令,授權其他使用者可以執行sudo命令,並且可以編輯/etc/sudoers檔案;

   cmnd_alias:事先定義過的命令別名;


  樣本:設定wjq使用者管理整個系統中的使用者密碼

  650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/07/F4/wKiom1nW-5SCa2N3AAAadAmpgKM817.png-wh_500x0-wm_3-wmp_4-s_3736021549.png" title="QQ20171006114049.png" alt="wKiom1nW-5SCa2N3AAAadAmpgKM817.png-wh_50" />

  650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/A6/A6/wKioL1nW-3qCW61XAABUj_T8gu4055.png-wh_500x0-wm_3-wmp_4-s_1460837522.png" title="QQ20171006114141.png" alt="wKioL1nW-3qCW61XAABUj_T8gu4055.png-wh_50" />

  中,wjq使用者可以修改root密碼,這種操作在現實環境中是不被允許的;

  在設定檔中應設定為passwd後不允許跟隨參數root,passwd命令後必須跟隨參數;

  如:

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/A6/A6/wKioL1nW_FCyKl4kAAAdw_17QMM423.png-wh_500x0-wm_3-wmp_4-s_3622888222.png" title="QQ20171006114421.png" alt="wKioL1nW_FCyKl4kAAAdw_17QMM423.png-wh_50" />

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/07/F4/wKiom1nW_SWT89pGAAAnwKfQ0X0518.png-wh_500x0-wm_3-wmp_4-s_3382659434.png" title="QQ20171006114732.png" alt="wKiom1nW_SWT89pGAAAnwKfQ0X0518.png-wh_50" />

  650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/A6/A6/wKioL1nW_O_BYDoXAAAiKtGNKTM900.png-wh_500x0-wm_3-wmp_4-s_1297089928.png" title="QQ20171006114754.png" alt="wKioL1nW_O_BYDoXAAAiKtGNKTM900.png-wh_50" />

  類似於passwd這類的可以對root使用者進行修改的特殊命令還有su,sudo等,這兩個命令一旦授權就必須考慮好怎樣排除root登入的情況,避免普通使用者使用其進行root登入操作;需要注意的是sudoedit,可以使普通使用者修改/etc/sudoers設定檔;

  如:su命令限制

  650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/07/F4/wKiom1nW_0iTLU4QAAAk6kCTf_c448.png-wh_500x0-wm_3-wmp_4-s_1435775128.png" title="QQ20171006115626.png" alt="wKiom1nW_0iTLU4QAAAk6kCTf_c448.png-wh_50" />

  650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A6/A6/wKioL1nW_yjzh3gJAAAZcW5qf_E901.png-wh_500x0-wm_3-wmp_4-s_2043795411.png" title="QQ20171006115723.png" alt="wKioL1nW_yjzh3gJAAAZcW5qf_E901.png-wh_50" />

  650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/07/F4/wKiom1nW_4nw4bL8AAAaFfkScy0049.png-wh_500x0-wm_3-wmp_4-s_2763186969.png" title="QQ20171006115744.png" alt="wKiom1nW_4nw4bL8AAAaFfkScy0049.png-wh_50" />


  nsswitch與pam:

   nsswitch:名稱服務開關,進行名稱解析,將數字記號轉化為電腦能夠識別的語言;

   名稱解析,根據特定的資訊尋找某個已經設定好的存放庫,查看存放庫中是否有符合該關鍵字的信   息;如passwd存放庫,查看使用者相關資訊,host存放庫,查看指定網域名稱或指定IP地址的關聯資訊等;

   存放庫的類型有很多種,如檔案,關聯型資料庫,非關聯型資料庫,LDAP;

   nsswitch的通用架構為上層應用程式提供統一的介面,將資料轉換,從而才能訪問下層不同檔案系   統的存放庫,若是沒有中介層的作用,上層應用程式想要訪問下層不同的檔案系統則需要編寫對應文   件系統的程式,而這樣的工作量太大,並不適應於當前環境;

   Linux中實現名稱解析的通用架構是通過庫來實現的:

   /lib64/libnss*<-->/usr/lib64/libnss*

   解析庫的配置是由/etc/nsswitch.conf設定檔進行配置的

   格式為:

   db: store_format1 store_format2...

   如

   650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/A6/A6/wKioL1nXCN7BPqddAAAmg4LUKlY572.png-wh_500x0-wm_3-wmp_4-s_4191386925.png" title="QQ20171006123844.png" alt="wKioL1nXCN7BPqddAAAmg4LUKlY572.png-wh_50" />

   對passwd,shadow,group,host等進行設定;

   尋找對應庫中的關鍵字的資訊,使用命令getent

   650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/A6/A6/wKioL1nXCcvTClj6AAAm_gFZXWo701.png-wh_500x0-wm_3-wmp_4-s_1413341853.png" title="QQ20171006124244.png" alt="wKioL1nXCcvTClj6AAAm_gFZXWo701.png-wh_50" />

   passwd庫中的關鍵字只用使用者名稱以及uid

   650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/A6/A6/wKioL1nXCgniWDCcAAA4-j7qo9U002.png-wh_500x0-wm_3-wmp_4-s_2047701909.png" title="QQ20171006124347.png" alt="wKioL1nXCgniWDCcAAA4-j7qo9U002.png-wh_50" />

  

   pam:

    pluggable authentication modules 插入式認證模組

    通用的認證架構;

    pam認證的功能模組亦是通過庫來實現,pam的庫都儲存在/lib64/security(CentOS7)

    設定檔:

     全域認證設定檔:/etc/pam.conf

     格式:

      application type control module-path module-options

     為每一種應用所提供的專用的設定檔:/etc/pam.d/*

     格式:

      type control module-path module-options

     如:

      650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A6/A6/wKioL1nXEPbijkGoAAA8HGiv8vQ824.png-wh_500x0-wm_3-wmp_4-s_1487295095.png" title="QQ20171006131319.png" alt="wKioL1nXEPbijkGoAAA8HGiv8vQ824.png-wh_50" />

     type:

       auth:賬戶的認證授權配置有關;

       account:表示賬戶類介面,主要負責賬戶合法性檢查,確認帳號是否到期,是否有許可權登            錄系統等;

       session:服務開始前,服務結束後需要進行的附加操作;

       password:修改密碼後,根據密碼複雜度進行的相應操作;

     control:

       require:隱性的一票否決,若有條目未被滿足,不立刻中斷認證而是繼續查看條目,直到            條目結束才中斷認證;

       requisite:顯性的一票否決,若有條目未被滿足則立刻中斷認證;

       sufficient:當本條目滿足時,若該條目之前的所有條目都被滿足了,則整個棧立即終止並            立即返回認證成功的訊號;如果本條目的驗證失敗,還需要繼續參考其他的條目規            則;一票通過;沒有一票否決;會當做optional對待

       optional:無足輕重,不管成功還是失敗都不影響全域;

       include:將其他的設定檔中的流程棧包含在當前位置,就好像把其他的設定檔的配置            內容複寫到當前檔案

       substack:運行其他設定檔的流程,但與include不同的是其在子棧中運行,其運行結果            不影響主棧;

      status:

       user_unknown:使用者未知,無法尋找到;

       success:成功後返回什麼結果,通常為ok;

       default:預設情況下返回什麼結果;

      action:返回的動作;ok,N,bad,ignore,die(一票否決),done(一票成功)

       如:

       650) this.width=650;" src="https://s5.51cto.com/wyfs02/M01/07/F5/wKiom1nXFGHDaa7xAAAn1peDaRM807.png-wh_500x0-wm_3-wmp_4-s_2059377276.png" title="QQ20171006132636.png" alt="wKiom1nXFGHDaa7xAAAn1peDaRM807.png-wh_50" /> 

      

     module-path:相對路徑,絕對路徑,/lib64/security/*


     module-arguments:預設的模組參數;

  

  

    


tcp_wrapper,sudo,nsswitch與pam安全解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.