su ,sudo,TCP_Wrappers的相關命令用法及PAM認證機構

來源:互聯網
上載者:User

標籤:linux

               su,sudo,TCP_Wrappers的相關命令用法及PAM認證機構 


su 切換身份:su –l  username –c  ‘command‘

sudo

  來自sudo包

  man 5 sudoers

  sudo能夠授權指定使用者在指定主機上運行某些命令。如果

未授權使用者嘗試使用 sudo,會提示聯絡管理員

  sudo可以提供日誌,記錄每個使用者使用sudo操作

  sudo為系統管理員提供設定檔,允許系統管理員集中地

系統管理使用者的使用許可權和使用的主機

 sudo使用時間戳檔案來完成類似“檢票”的系統,預設存

活期為5分鐘的“入場券”

 通過visudo命令編輯設定檔,具有語法檢查功能

visudo –c 檢查文法


sudo

設定檔:/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

%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 NAME1 = item1, item2, item3 : NAME2 =

item4, item5

樣本1:

Student  ALL=(ALL)  ALL

%wheel ALL=(ALL) ALL

樣本2:

student ALL=(root)    /sbin/pidof,/sbin/ifconfig

%wheel ALL=(ALL)  NOPASSWD: ALL


sudo樣本

樣本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


sudo樣本

樣本4

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 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/messages*


sudo命令

ls -l /usr/bin/sudo

sudo –i –u wang 切換身份

sudo [-u user] COMMAND

-V 顯示版本資訊等配置資訊

-u user  預設為root

-l,ll 列出使用者在主機上可用的和被禁止的命令

-v 再延長密碼有效期間限5分鐘,更新時間戳記

-k 清除時間戳記(1970-01-01),下次需要重新輸密碼

-K 與-k類似,還要刪除時間戳記檔案

-b 在後台執行指令

-p 改變詢問密碼的提示符號

樣本:-p ”password on %h for user %p:"


TCP_Wrappers介紹

Wieste Venema,IBM,Google

工作在第四層(傳輸層)的TCP協議

對有狀態串連的特定服務進行安全檢測並實現存取控制

以庫檔案形式實現

某進程是否接受libwrap的控製取決於發起此進程的程式在編

譯時是否針對libwrap進行編譯的

判斷服務程式是否能夠由tcp_wrapper進行存取控制的方法:

ldd /PATH/TO/PROGRAM|grep libwrap.so

strings PATH/TO/PROGRAM|grep libwrap.so

TCP_Wrappers的使用

設定檔:/etc/hosts.allow, /etc/hosts.deny

協助參考:man 5 hosts_access,man 5 hosts_options

檢查順序:hosts.allow,hosts.deny(預設允許)

注意:一旦前面規則匹配,直接生效,將不再繼續

基本文法:

[email protected]: client_list [ :options :option… ]

[email protected]格式

單個應用程式的二進位檔案名,而非服務名,例如vsftpd

以逗號或空格分隔的應用程式檔案名列表,如

:sshd,vsftpd

ALL表示所有接受tcp_wrapper控制的服務程式

主機有多個IP,可用@hostIP來實現控制

如:[email protected]

TCP_Wrappers的使用

用戶端Client_list格式

以逗號或空格分隔的用戶端列表

基於IP地址:192.168.10.1  192.168.1.

基於主機名稱:www.magedu.com  .magedu.com 較少用

基於網路/掩碼:192.168.0.0/255.255.255.0

基於net/prefixlen: 192.168.1.0/24(CentOS7)

基於網路組(NIS 域):@mynetwork

內建ACL:ALL,LOCAL,KNOWN,UNKNOWN,

PARANOID

EXCEPT用法:

樣本:vsftpd: 172.16. EXCEPT 172.16.100.0/24 EXCEPT

172.16.100.1


樣本

樣本:只允許192.168.1.0/24的主機訪問sshd

/etc/hosts.allow

sshd: 192.168.1.         

/etc/hosts.deny

sshd :ALL

樣本:只允許192.168.1.0/24的主機訪問telnet和vsftpd服務

/etc/hosts.allow

vsftpd,in.telnetd: 192.168.1.

/etc/host.deny

vsftpd,in.telnetd:  ALL


TCP_Wrappers的使用

[:options]選項:

協助:man 5 hosts_options

deny 主要用在/etc/hosts.allow定義“拒絕”規則

如:vsftpd: 172.16. :deny

allow 主要用在/etc/hosts.deny定義“允許”規則

如:vsftpd:172.16. :allow

spawn 啟動一個外部程式完成執行的操作

twist  實際動作是拒絕訪問,使用指定的操作替換當前服

務,標準I/O和ERROR發送到用戶端,預設至/dev/null

測試載入器:

tcpdmatch [-d] daemon[@host] client

-d 測試目前的目錄下的hosts.allow和hosts.deny


樣本

sshd: ALL :spawn echo "$(date) login  attempt  from  

%c  to  %s,%d" >>/var/log/sshd.log

說明:

在/etc/hosts.allow中添加,允許登入,並記錄日誌

在/etc/hosts.deny中添加,拒絕登入,並記錄日誌

%c 用戶端資訊

%s 伺服器端資訊

%d 服務名

%p 守護進程的PID

vsftpd: 172.16.  :twist /bin/echo “connection

prohibited”


PAM認證機制

PAM:Pluggable Authentication Modules

認證庫:文字檔,MySQL,NIS,LDAP等

Sun公司於1995 年開發的一種與認證相關的通用架構機制

PAM 是關注如何為服務驗證使用者的 API,通過提供一些動

態連結庫和一套統一的API,將系統提供的服務和該服務的

認證方式分開

使得系統管理員可以靈活地根據需要給不同的服務配置不

同的認證方式而無需更改服務程式

一種認證架構,自身不做認證


PAM認證機制

它提供了對所有服務進行認證的中央機制,適用於login,遠

程登入(telnet,rlogin,fsh,ftp,點對點通訊協定 (PPP)(PPP)),su等

應用程式中。系統管理員通過PAM設定檔來制定不同應用

程式的不同認證策略;應用程式開發人員通過在服務程式中使

用PAM API(pam_xxxx( ))來實現對認證方法的調用;而

PAM服務模組的開發人員則利用PAM SPI來編寫模組(主要是

引出一些函數pam_sm_xxxx( )供PAM介面庫調用),將不

同的認證機制加入到系統中;PAM介面庫(libpam)則讀取

設定檔,將應用程式和相應的PAM服務模組聯絡起來


PAM認證構架

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/07/B9/wKiom1nOO8fC0Du4AANNy7bfnDk015.png" title="pam.png" alt="wKiom1nOO8fC0Du4AANNy7bfnDk015.png" />


pam認證原理

PAM認證一般遵循這樣的順序:Service(服務)→PAM(配置文

件)→pam_*.so

PAM認證首先要確定那一項服務,然後載入相應的PAM的配

置檔案(位於/etc/pam.d下),最後調用認證檔案(位於

/lib/security下)進行安全認證



650) this.width=650;" src="https://s4.51cto.com/wyfs02/M00/A6/6B/wKioL1nOO6jQ_zznAAFbOCk5dH4870.png" title="pam1.png" alt="wKioL1nOO6jQ_zznAAFbOCk5dH4870.png" />


PAM認證機制

PAM認證過程:

1.使用者執行/usr/bin/passwd 程式,並輸入密碼

2.passwd開始呼叫PAM模組,PAM模組會搜尋passwd程式的

PAM相關設定檔案,這個設定檔案一般是在/etc/pam.d/裡

邊的與程式同名的檔案,即PAM會搜尋/etc/pam.d/passed

這個設定檔案

3.經由/etc/pam.d/passwd設定檔案的資料,取用PAM所提

供的相關模組來進行驗證

4.將驗證結果回傳給passwd這個程式,而passwd這個程式會

根據PAM回傳的結果決定下一個動作(重新輸入密碼或者通

過驗證)


PAM認證機制

PAM相關檔案

模組檔案目錄:/lib64/security/*.so

環境相關的設定:/etc/security/

主設定檔:/etc/pam.conf,預設不存在

為每種應用模組提供一個專用的設定檔:

/etc/pam.d/APP_NAME

注意:如/etc/pam.d存在,/etc/pam.conf將失效


PAM認證機制

通用設定檔/etc/pam.conf格式

application  type  control  module-path  arguments

專用設定檔/etc/pam.d/* 格式

type control  module-path  arguments

說明:

服務名(application)

telnet、login、ftp等,服務名字“OTHER”代表所有沒

有在該檔案中明確配置的其它服務

模組類型(module-type)

control  PAM庫該如何處理與該服務相關的PAM模組的成

功或失敗情況

module-path 用來指明本模組對應的程式檔案的路徑名

Arguments  用來傳遞給該模組的參數


PAM認證機制

模組類型(module-type)

Auth 帳號的認證和授權

Account 與帳號管理相關的非認證類的功能,如:用來限

制/允許使用者對某個服務的訪問時間,當前有效系統資源

(最多可以有多少個使用者),限制使用者的位置(例如:root用

戶只能從控制台登入)

Password 使用者修改密碼時密碼複雜度檢查機制等功能

Session 使用者擷取到服務之前或使用服務完成之後需要進

行一些附加的操作,如:記錄開啟/關閉資料的資訊,監視

目錄等

-type 表示因為缺失而不能載入的模組將不記錄到系統日

志,對於那些不總是安裝在系統上的模組有用

Control:

PAM庫如何處理與該服務相關的PAM模組成功或失敗情況

兩種方式實現:

簡單和複雜

簡單方式實現:一個關健詞實現

required :一票否決,表示本模組必須返回成功才能通過

認證,但是如果該模組返回失敗,失敗結果也不會立即通

知使用者,而是要等到同一type中的所有模組全部執行完畢

再將失敗結果返回給應用程式。即為必要條件

PAM認證機制

requisite :一票否決,該模組必須返回成功才能通過認證,

但是一旦該模組返回失敗,將不再執行同一type內的任何模

塊,而是直接將控制權返回給應用程式。是一個必要條件

sufficient :一票通過,表明本模組返回成功則通過身份認

證的要求,不必再執行同一type內的其它模組,但如果本模

塊返回失敗可忽略,即為充分條件

optional :表明本模組是可選的,它的成功與否不會對身份

認證起關鍵作用,其傳回值一般被忽略

include: 調用其他的設定檔中定義的配置資訊

複雜詳細實現:使用一個或多個“status=action”

[status1=action1 status2=action …]

Status:檢查結果的返回狀態

Action:採取行為 ok,done,die,bad,ignore,reset

ok  模組通過,繼續檢查

done 模組通過,返回最後結果給應用

bad 結果失敗,繼續檢查

die 結果失敗,返回失敗結果給應用

ignore 結果忽略,不影響最後結果

reset 忽略已經得到的結果


PAM認證機制

module-path: 模組路徑

相對路徑:

/lib64/security目錄下的模組可使用相對路徑

如:pam_shells.so、pam_limits.so

絕對路徑:

模組通過讀取設定檔完成使用者對系統資源的使用控制

/etc/security/*.conf

注意:修改PAM設定檔將馬上生效

建議:編輯pam規則時,保持至少開啟一個root會話,以防止

root身分識別驗證錯誤

Arguments  用來傳遞給該模組的參數

user/share/doc/pam-*

rpm -qd pam

man –k pam_

man 模組名 如man rootok

《The Linux-PAM System  Administrators‘ Guide》


PAM模組樣本

模組:pam_shells

功能:檢查有效shell

man pam_shells

樣本:不允許使用/bin/csh的使用者本地登入

vim /etc/pam.d/login

auth required pam_shells.so

vim /etc/shells

去掉 /bin/csh

useradd –s /bin/csh testuser

testuser將不可登入

tail /var/log/secure

模組:pam_securetty.so

功能:只允許root使用者在/etc/securetty列出的安全終端上

登陸

樣本:允許root在telnet登陸

vi /etc/pam.d/login

#auth required pam_securetty.so #將這一行加上注釋

或者/etc/securetty檔案中加入

pts/0,pts/1…pts/n


模組:pam_nologin.so

功能:如果/etc/nologin檔案存在,將導致非root使用者不能登陸

,如果使用者shell是/sbin/nologin 時,當該使用者登陸時,會顯

示/etc/nologin.txt檔案內容,並拒絕登陸

塊:pam_limits.so

功能:在使用者層級實現對其可使用的資源的限制,例如:可

開啟的檔案數量,可啟動並執行進程數量,可用記憶體空間

修改限制的實現方式:

(1) ulimit命令,立即生效,但無法儲存

-n   最多的開啟的檔案描述符個數

-u   最大使用者進程數

-S   使用 `soft‘(軟)資源限制

-H   使用 `hard‘(硬)資源限制

(2) 設定檔:/etc/security/limits.conf,

/etc/security/limits.d/*.conf

設定檔:每行一個定義;

<domain>        <type>  <item>  <value>

Username 單個使用者

@group 組內所有使用者

*  所有使用者

<type> 限制的類型

Soft 軟式節流,普通使用者自己可以修改

Hard 硬限制,由root使用者設定,且通過kernel強制生效

- 二者同時限定

<item> 限制的資源

nofile 所能夠同時開啟的最大檔案數量,預設為1024

nproc 所能夠同時啟動並執行進程的最大數量,預設為1024

<value> 指定具體值


樣本:pam_limits.so

限制使用者最多開啟的檔案數和運行進程數

/etc/pam.d/system-auth

session     required      pam_limits.so

vim /etc/security/limits.conf

apache  – nofile 10240 apache使用者可開啟10240個檔案

student  hard nproc 20 不能運行超過20個進程

su ,sudo,TCP_Wrappers的相關命令用法及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.