1 基本介紹
sudo
來自sudo包
man 5 sudoers
sudo 能夠授權(quán)指定 用戶在指定主機(jī)上運(yùn)行某些命令 。 如果未授權(quán)用用 嘗試使用 sudo ,會提示聯(lián)系管理員
sudo 可以提供日志,記錄每個用戶使用sudo 操作
sudo 為系統(tǒng)管理員提供配置文件,允許系統(tǒng)管理員集中地管理用戶的使用權(quán)限和使用的主機(jī)
sudo 使用時間戳文件來完成類似“檢票”的 系統(tǒng),默認(rèn) 存活期為5 分鐘的 “入場券”
通過visudo 命令編輯配置文件,具有語法檢查功能
visudo –c 檢查語法
配置文件 /etc/suders,/etc/suduers.d
時間戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
?:任意單個一字符
*: 匹配任意長度字符
配置文件規(guī)則兩類:
1 別名定義:不是必須的
2 授權(quán)規(guī)則:必須的
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
who 運(yùn)行命令的身份 user
where 通過哪些主機(jī) host
(whom) 以哪個用戶的身份,runas
which 運(yùn)行那些命令 command
配置項
users hosts=(RunAs) commands
users
username
#uid
user_alias
%group_name
%#gid
hosts
ip
hostname
netaddr
command
command name
directory
sudoedit
Alias_Type NAME=item1,item2...
Name 必須要全大寫
Alias_Type
User_Alias
Host_Alias
Runas_Alias
Which_Alias
普通用戶使用sudo命令,需要在命令的前面加 sudo,并且要與sudo的配置文件中的定義格式必須完全一致
定義guest用戶能夠訪問/var/log/message*的文件但是有不能其他文件
guest ALL=(ALL) /bin/cat /var/log/messsage* !/bin/cat/ message* *
2 tcp_wrapper
工作在第四層(傳輸層)的TCP 協(xié)議
對有狀態(tài)連接的 特定 服務(wù)進(jìn)行安全檢測并實(shí)現(xiàn)訪問控制
以庫文件形式實(shí)現(xiàn)
某進(jìn)程是否接受libwrap 的控制取決于發(fā)起此進(jìn)程的程序在編譯時是否針對libwrap 進(jìn)行編譯的
判斷服務(wù)程序是否能夠由tcp_wrapper 進(jìn)行訪問控制的方法:
ldd /PATH/TO/PROGRAM|grep libwrap.so
strings PATH/TO/PROGRAM|grep libwrap.so
配置文件 /etc/hosts.allow /etc/hosts.deny
基本用法
daemon_list@host: client_list [ :options :option… ]
option
deny: 主要用在 /etc/hosts.allow 定義"拒絕"規(guī)則 如:vsftpd:172.16.:deny
allow:主要用在/etc/hosts.deny定義"允許"規(guī)則 如:vsftpd:172.16.: allow
spawn: 啟動一個外部程序完成執(zhí)行的操作
twist 實(shí)際動作是拒絕訪問,使用指定的操作替換當(dāng)前服務(wù),標(biāo)準(zhǔn)I/O和ERROR發(fā)送到客戶端默認(rèn)至/dev/null
tcpdmatch [-d] daemon[@host] client,如果在生產(chǎn)中,測試需要先寫到其他文件中,然后使用-d 來調(diào)用
-d 測試當(dāng)前目錄下的hosts.allow和hosts.deny文件
定義訪問或拒絕的事件的時候使用到一些特殊字符,需要用到轉(zhuǎn)義
例如:
sshd:ALL: spawn echo "$(date +%%F) login attempt from %c to %s,%d" >>/var/log/sshd.log
僅開放本機(jī)兩個IP 地址中的一個地址172.18.0.X 上綁定的sshd 和vsftpd 服務(wù)給172.18.0.0/16 網(wǎng)絡(luò)中除了172.18.0.0/24 網(wǎng)絡(luò)中的主機(jī)之外的所有主機(jī),但允許172.18.0.100 訪問, 每次的用戶訪問都要記錄于日志文件中注:其中X 為學(xué)號
allow
vsftpd@172.18.0.23,sshd@172.18.0.23:172.18. EXCEPT 172.18.0. EXCEPT 172.18.0.100:spawn echo "$(date +%%F) login attempt from %c to %s,%d" >> /var/log/sshd.log
deny
vsftpd,sshd@172.18.0.23:172.18.0.
vsftpd,sshd@all:all
編寫腳本/root/bin/checkip.sh ,每5 分鐘檢查一次,如果發(fā)
現(xiàn)通過ssh 登錄失敗次數(shù)超過10 次,自動將此遠(yuǎn)程IP 放入Tcp
Wrapper的黑名單中予以禁止防問
#!/bash
declare -a dos
while :;do
dos=(`awk '$0 ~ /Failed/{ip[$(NF-3)]++}END{for(i in ip){if(ip[i]>10)print i}}' /var/log/secure `)
for i in ${dos[@]};do
[ `iptables -L -n | grep "\<$i\>" | wc -l` -ge 1 ] && { echo $i;continue; }
iptables -A INPUT -s $i -j REJECT
done
sleep 5m
done
3 PAM 認(rèn)證機(jī)制
PAM:Pluggable Authentication Modules
認(rèn)證庫:文本文件,MySQL ,NIS ,LDAP等 等
Sun 公司于1995 年開發(fā)的 一種 與 認(rèn)證 相關(guān)的通用框架 機(jī)制
PAM 的 是關(guān)注如何為服務(wù)驗(yàn)證用戶的 API, , 通過提供一些動態(tài)鏈接庫和一套統(tǒng)一的API ,將系統(tǒng)提供的服務(wù)和該服務(wù)的認(rèn)證方式分開
使得系統(tǒng)管理員可以靈活地根據(jù)需要給不同的服務(wù)配置不同的認(rèn)證方 式而無需更改服務(wù)程序
一種認(rèn)證框架,自身不做認(rèn)證
PAM相關(guān)文件
模塊文件目錄: /lib64/security/
環(huán)境相關(guān)的設(shè)置:/etc/security/
主配置文件 /etc/pam.conf,默認(rèn)不存在
為每一種應(yīng)用模塊提供一個裝用的配置文件: /etc/pam.d/app_name
注意:/etc/pam.d/存在 /etc/pam.conf將失效
/etc/pam.d/文件的配置格式
module_type control module args
module_type: auth(賬號認(rèn)證和授權(quán)),password(密碼規(guī)則),session(會話資源),account(系統(tǒng)資源)
control:required(一票否決,但是還有檢查),sufficient(一票通過),requisite(一票通過,后面不用檢查),include(包含其他文件的同type的模塊選者),optional(可選項,參考)
具體使用請自行查看
/user/share/doc/pam-*
rpm -qd pam
man –k pam_
man 名 模塊名 如 如man rootok
《The Linux-PAM System Administrators' Guide》
1 、限制centos 用戶只能夠在工作時間通過ssh 遠(yuǎn)程連接本機(jī)
使用pam_time.so
添加一行sshd;*;centos;MoTuWeThFr0900-1700到 /etc/security/time.conf
在/etc/pam.d/sshd/加入
account required pam_time.so
2 、限制只有admins 組內(nèi)的用戶可ssh
使用pam_group.so模塊
編輯 /etc/security/group.conf 添加如下行
sshd;*;*;Al0000-2400;distro
編輯 /etc/pam.d/sshd,添加入下
auth required pam_group.so