標籤:tcp_wrapper、sudo、nsswitch、pam
下面介紹的是服務與安全管理的tcp_wrapper、sudo、nsswitch、pam
一、tcp_wrapper
1、tcp_wrapper基礎 --------------------tcp封裝器
tcp_wrapper依賴的庫檔案:libwrap.so
(1)、判斷是否受tcp_wrapper存取控制:動態連結(libwrap.so庫檔案)、靜態連結(strings命令)
動態連結至libwrap.so庫的應用程式:# ldd /PATH/TO/APP_FILE | grep libwrap
靜態庫檔案應用程式:# strings COMMAND
(2)、常見的基於tcp_wrapper存取控制的服務:sshd,vsftpd
幾種服務:openssh、http、mysql、vsftpd、nfs、samba
2、tcp_wrappers的設定檔 ----------------------/etc/hosts.allow、/etc/hosts.deny
格式:daemon_list : client_list [[[: option] : option] ...]
(1)、daemon_list --------------應用程式檔案名(/usr/sbin/*)
daemon_list的三種方式:單個程式檔案名稱、多個程式檔案名稱(逗號隔開)、所有應用程式(ALL)
(2)、client_list ------------3種方式
單個IP地址或主機名稱、網路地址、存取控制清單
client_list的四種存取控制清單:ALL、KNOWN、UNKNOWN、PARANOID
(3)、: option --------------3類選項
option的三類選項為:deny、allow、spawn
spawn:%c -------------------用戶端資訊
%s -------------------服務端資訊
例:
daemon_list:ALL -------------所有的應用程式(進程)
client_list:172.16.0.0/255.255.0.0
172.16.
ALL ------------所有的主機
KNOWN ----------能正常訪問的主機
UNKNOWN ---------不能正常訪問的主機
: option:deny:拒絕訪問規則,hosts.allow檔案中
allow:允許訪問規則,hosts.deny檔案中
spawn:產生、發起、執行
例:
vsftpd : 172.16.0.0/16 : allow ---------------/etc/host.allow(預設允許)
vsftpd : ALL EXCEPT 172.16. EXCEPT 172.16.67.1 ------------------/etc/hosts.deny(預設拒絕)
例:針對sshd、vsftpd服務進行記錄
sshd, vsftpd : ALL : spawn /bin/echo $(/bin/date) %c attempt login %s >> /var/log/tcpwrapper.log
二、sudo
1、sudo基礎 ---------------以root使用者身份執行
sudo的授權設定檔:/etc/sudoers
2、設定檔內容 ---------------/etc/sudoers
/etc/sudoers內容有兩類:、別名的定義、使用者規格(授權)
(1)、別名定義 --------------別名全大寫
格式:Alias_Type ALIASNAME = item1, item2, ...
Alias_Type:User_Alias、Host_Alias、Runas_Alias、Cmnd_Alias:
Alias_Type -------------使用駝峰式
ALIASNAME -------------使用全大寫
例:User_Alias USERADMINUSERS = tom, jerry, centos, suse, %myclass -----------------“%”在別名定義中,表示組。
Cmnd_Alias USERADMINCOMMANDS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod
(2)、使用者規格(授權項): -----------------編輯/etc/sudoers,每行只有一個授權
格式為:who where=(whom) what
格式各部分解釋如下:
who ----------授權的目標使用者(5種方式)
username ---------------單個使用者名稱稱
#uid ------------單個使用者UID
%groupname ------------指定組內的所有賬戶
%#gid -----------指定知道的GID的組,其內的所有使用者賬戶
user_alias -------------定義過的別名
where --------------授權的用戶端主機(3種)
ip/hostname ------------單個主機
Network Address --------------網路地址
host_alias -------------定義過的別名
whom -----------------真實身份,一般為root
what -------------授權啟動並執行命令
command -------------單個命令
directory ------------目錄下的所有命令
sudoedit ---------------授權可以執行sudo命令的使用者
cmnd_alias ----------定義過的別名
例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root
例:little ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/su ! /usr/bin/su root
註:visudo命令:-----------------編輯/etc/sudoers檔案,具有【文法錯誤修正】功能
(3)、sudo命令:----------------使用者授權
格式:sudo [option]... command
常用選項:
-u user --------------指定使用者身份
-l[l] [command] ------------------顯示能以sudo啟動並執行所有命令
(4)、授權中的標籤
PASSWD --------------要有密碼
NOPASSWD -------------可以沒有密碼
例:Cmnd_Alias USERADMINCOMMANDS = NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod
sudo的特殊命令:passwd、su、sudo、sudoedit
三、nsswitch
1、nsswitch基礎 ---------------名稱服務開關
名稱解析:將自然語言,解析為機器語言的數字記號。
解析:根據關鍵字尋找存放庫,找出與關鍵字相關的資訊。
通用架構:應用程式的調用介面
Linux中實現名稱解析的通用架構:庫(/lib64/libnss*, /usr/lib64/libnss*)
2、解析庫應用程式的設定檔 ----------/etc/nsswitch.conf
格式:db: store_format1 store_format2 ....
尋找鍵的返回狀態:(4種)success、notfound、unavail、tryagain
狀態傳回值的響應:return、continue
3、getent命令 ------------從名稱伺服器得到響應
格式:getent database [key]
四、pam
1、pam基礎 --------------通用的認證架構
Linux中實現pam的通用架構:庫(/lib64/security/*)
2、設定檔 -------------/lib64/security/*
pam的設定檔有兩種:全域設定檔、專用設定檔。其中,全域設定檔已經廢棄。
(1)、全域認證設定檔 -------------------/etc/pam.conf
格式:application type control module-path module-arguments
(2)、專用設定檔 ------------------/etc/pam.d/*APP_NAME*
格式:type control module-path module-arguments
type:
auth ---------------認證、授權
account ------------帳號管理,與認證無關
password ------------使用者修改密碼時,密碼的複雜度
session -------------附加操作
control:
required ----------------沒有被滿足,認證一定失敗,認證過程並不中斷
requisite ---------------沒有被滿足,認證一定失敗,立即中斷
sufficient ------------條件被滿足,認證成功,立即中斷
optional -------------不影響認證
include ----------------其他的設定檔包含到當前位置,類似複製
substack ---------------複製,並在子棧運行,不影響主棧
module-path ---------------可以是相對路徑、絕對路徑
module-arguments ------------預設模組參數
例:auth required pam_shells.so --------------------pam_shells.so模組的認證
3、pam_limits.so模組 -------------限制使用者會話過程中對各種系統資源的使用方式
格式:pam_limits.so [ change_uid ] [ conf=/path/to/limits.conf ] [ debug ] [ utmp_early ] [ noaudit ]
設定檔: --------------/etc/security/limits.conf、 /etc/security/limits.d/*
格式:<domain> <type> <item> <value>
doemain: ----------------使用者名稱/組名
username ---------------單個使用者名稱稱
%groupname/@groupname ------------指定組內的所有賬戶
type: ----------------軟/硬限制,不同於磁碟配額中的軟式節流和硬限制
hard:------------硬限制
soft:------------軟式節流
-:--------------任意
item:
core:-------------檔案大小 (KB)
date:--------------最大資料大小(KB)
fsize:---------------最大檔案大小(KB)
memlock:-------------最大可用記憶體空間(KB)
nofile:---------------最大可以開啟的檔案數量
rss:--------------最大可駐留空間(KB)
stack:-----------------最大堆棧空間(KB)
cpu:-----------------最大CPU使用時間(MIN)
nproc:-----------------最大運行進程數
as:--------------地址空間限制
locks:--------------最大鎖定檔案數目
nice:--------------nice值
maxlogins:--------------使用者可以登入到系統最多次數
value:-----------------具體值
例:-------------/etc/security/limits.conf
@student hard nproc 20
@faculty soft nproc 20
@faculty hard nproc 50
ftp hard nproc 0
@student - maxlogins 4
4、pam_listfile.so模組 ------------------------實現基於使用者/組、主機名稱/IP、終端的存取控制
格式:pam_listfile.so item=[tty|user|rhost|ruser|group|shell] sense=[allow|deny] file=/path/filename onerr=[succeed|fail] [ apply=[user|@group] ] [ quiet ]
常用選項:
item=[tty|user|rhost|ruser|group|shell]:----------------對哪些列出的目標或者條件採用規則
sense=[allow|deny]:----------在設定檔中找到合格項目時的控制方式。如果沒有找到合格項目,則一般驗證都會通過
file=/path/filename:--------------------指定設定檔的全路徑名稱
onerr=[succeed|fail]:-------------------當出現錯誤時的預設傳回值
apply=[user|@group]:----------------規則適用的使用者類型(使用者或者組)
quiet
例:auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ftpusers
例:auth required pam_listfile.so \
onerr=fail item=user sense=allow file=/etc/loginusers
5、pam_time.so模組 -------------------提供基於時間的控制,使用者只能在某個時間段內才能登入
格式:pam_time.so [ debug ] [ noaudit ]
常用選項:
debug:
noaudit:
設定檔:/etc/security/time.conf
格式:services;ttys;users;times
例:login ; tty* & !ttyp* ; !root ; !Al0000-2400
例:games ; * ; !waster ; Wd0000-2400 | Wk1800-0800
例:
# vim /etc/security/time.conf
login ; tty3 ; user1 ; al0100-0200 user1 1點到2點才能登入
login ; tty3 ; user1 ; all
sshd ; * ; * ; al0100-0200
tcp_wrapper、sudo、nsswitch、pam