1. 程式人生 > >2.3 AIDE;sudu;TCP_Wrappers;PAM認證機制

2.3 AIDE;sudu;TCP_Wrappers;PAM認證機制

登錄 runas new 建立 屬性 ldap 修改 時間戳 all

AIDE

當一個***者進入了你的系統並且種植了×××,通常會想辦法來隱蔽這個×××
(除了×××自身的一些隱蔽特性外,他會盡量給你檢查系統的過程設置障礙),
通常***者會修改一些文件,比如管理員通常用ps -aux來查看系統進程,那
麽***者很可能用自己經過修改的ps程序來替換掉你系統上的ps程序,以使用
ps命令查不到正在運行的×××程序。如果***者發現管理員正在運行crontab
作業,也有可能替換掉crontab程序等等。所以由此可以看出對於系統文件或
是關鍵文件的檢查是很必要的。目前就系統完整性檢查的工具用的比較多的有
兩款:Tripwire和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
?修改配置文件
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
? 來自sudo包,man 5 sudoers
? sudo能夠授權指定用戶在指定主機上運行某些命令。如果未授權用戶嘗試使
用 sudo,會提示聯系管理員
? sudo可以提供日誌,記錄每個用戶使用sudo操作
? sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權
限和使用的主機
? sudo使用時間戳文件來完成類似“檢票”的系統,默認存活期為5分鐘的“入
場券”
? 通過visudo命令編輯配置文件,具有語法檢查功能
visudo –c 檢查語法
visudo -f /etc/sudoers.d/test

?配置文件:/etc/sudoers, /etc/sudoers.d/
?時間戳文件:/var/db/sudo
?日誌文件:/var/log/secure
?配置文件支持使用通配符glob:
?:任意單一字符

  • :匹配任意長度字符
    \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 ,CmndAlias
?別名格式::[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

?示例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

示例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.1.6,192.168.1.8=(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介紹

?工作在第四層(傳輸層)的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(默認允許)
註意:一旦前面規則匹配,直接生效,將不再繼續,留個終端,用於修改。

技術分享圖片

?基本語法:
?daemon_list@host: client_list [ :options :option… ]?Daemon_list@host格式
br/>?Daemon_list@host格式
?ALL表示所有接受tcp_wrapper控制的服務程序
?主機有多個IP,可用@hostIP來實現控制
br/>?以逗號或空格分隔的應用程序文件名列表,如:sshd,vsftpd
?ALL表示所有接受tcp_wrapper控制的服務程序
?主機有多個IP,可用@hostIP來實現控制

?客戶端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 激活一個執行命令

in.telnetd: ALL :spawn echo on " ‘date +%%F‘ "telnet login >> /data/telnet.log %在這裏不支持,要用兩個%,表示。

twist 實際動作是拒絕訪問,使用指定的操作替換當前服務,標準I/O和ERROR 發送到客戶端,默認至/dev/null

(替代命令)

in.telnetd: ALL:twist echo "forbidden telnet login"

?測試工具:
tcpdmatch [-d] daemon[@host] client
-d 測試當前目錄下的hosts.allow和hosts.deny

?sshd: ALL :spawn echo "$(date +%%F) 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認證機制

?認證庫:文本文件,MySQL,NIS,LDAP等
?Sun公司於1995 年開發的一種與認證相關的通用框架機制
?PAM 是關註如何為服務驗證用戶的 API,通過提供一些動態鏈接庫和一套統
一的API,將系統提供的服務和該服務的認證方式分開
?使得系統管理員可以靈活地根據需要給不同的服務配置不同的認證方式而無
需更改服務程序
?一種認證框架,自身不做認證

PAM認證機制
它提供了對所有服務進行認證的中央機制,適用於login,遠程登錄
(telnet,rlogin,fsh,ftp,點對點協議(PPP)),su等應用程序中。系統管理員
通過PAM配置文件來制定不同應用程序的不同認證策略;應用程序開發者通過
在服務程序中使用PAM API(pam_xxxx( ))來實現對認證方法的調用;而PAM服
務模塊的開發者則利用PAM SPI來編寫模塊(主要調用函數pam_sm_xxxx( )供
PAM接口庫調用,將不同的認證機制加入到系統中;PAM接口庫(libpam)則
讀取配置文件,將應用程序和相應的PAM服務模塊聯系起來

PAM架構

技術分享圖片

PAM認證機制

PAM相關文件
?模塊文件目錄:/lib64/security/*.so
?環境相關的設置:/etc/security/
?主配置文件:/etc/pam.conf,默認不存在
?為每種應用模塊提供一個專用的配置文件:/etc/pam.d/APP_NAME
?註意:如/etc/pam.d存在,/etc/pam.conf將失效

pam認證原理
?PAM認證一般遵循這樣的順序:Service(服務)→PAM(配置文件)→pam_*.so
?PAM認證首先要確定那一項服務,然後加載相應的PAM的配置文件(位於
/etc/pam.d下),最後調用認證文件(位於/lib/security下)進行安全認證
技術分享圖片

?PAM認證過程:
1.使用者執行/usr/bin/passwd 程序,並輸入密碼
2.passwd開始調用PAM模塊,PAM模塊會搜尋passwd程序的PAM相關設置文
件,這個設置文件一般是在/etc/pam.d/裏邊的與程序同名的文件,即PAM會
搜尋/etc/pam.d/passwd此設置文件
3.經由/etc/pam.d/passwd設定文件的數據,取用PAM所提供的相關模塊來進
行驗證
4.將驗證結果回傳給passwd這個程序,而passwd這個程序會根據PAM回傳的
結果決定下一個動作(重新輸入密碼或者通過驗證)

2.3 AIDE;sudu;TCP_Wrappers;PAM認證機制