1 基本介紹
sudo
來自sudo包
man 5 sudoers
sudo 能夠授權指定 用戶在指定主機上運行某些命令 。 如果未授權用用 嘗試使用 sudo ,會提示聯系管理員
sudo 可以提供日志,記錄每個用戶使用sudo 操作
sudo 為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機
sudo 使用時間戳文件來完成類似“檢票”的 系統,默認 存活期為5 分鐘的 “入場券”
通過visudo 命令編輯配置文件,具有語法檢查功能
visudo –c 檢查語法
配置文件 /etc/suders,/etc/suduers.d
時間戳文件:/var/db/sudo
日志文件:/var/log/secure
配置文件支持使用通配符glob:
?:任意單個一字符
*: 匹配任意長度字符
配置文件規則兩類:
1 別名定義:不是必須的
2 授權規則:必須的
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
who 運行命令的身份 user
where 通過哪些主機 host
(whom) 以哪個用戶的身份,runas
which 運行那些命令 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 協議
對有狀態連接的 特定 服務進行安全檢測并實現訪問控制
以庫文件形式實現
某進程是否接受libwrap 的控制取決于發起此進程的程序在編譯時是否針對libwrap 進行編譯的
判斷服務程序是否能夠由tcp_wrapper 進行訪問控制的方法:
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 定義"拒絕"規則 如: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 來調用
-d 測試當前目錄下的hosts.allow和hosts.deny文件
定義訪問或拒絕的事件的時候使用到一些特殊字符,需要用到轉義
例如:
sshd:ALL: spawn echo "$(date +%%F) login attempt from %c to %s,%d" >>/var/log/sshd.log
僅開放本機兩個IP 地址中的一個地址172.18.0.X 上綁定的sshd 和vsftpd 服務給172.18.0.0/16 網絡中除了172.18.0.0/24 網絡中的主機之外的所有主機,但允許172.18.0.100 訪問, 每次的用戶訪問都要記錄于日志文件中注:其中X 為學號
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 分鐘檢查一次,如果發
現通過ssh 登錄失敗次數超過10 次,自動將此遠程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 認證機制
PAM:Pluggable Authentication Modules
認證庫:文本文件,MySQL ,NIS ,LDAP等 等
Sun 公司于1995 年開發的 一種 與 認證 相關的通用框架 機制
PAM 的 是關注如何為服務驗證用戶的 API, , 通過提供一些動態鏈接庫和一套統一的API ,將系統提供的服務和該服務的認證方式分開
使得系統管理員可以靈活地根據需要給不同的服務配置不同的認證方 式而無需更改服務程序
一種認證框架,自身不做認證
PAM相關文件
模塊文件目錄: /lib64/security/
環境相關的設置:/etc/security/
主配置文件 /etc/pam.conf,默認不存在
為每一種應用模塊提供一個裝用的配置文件: /etc/pam.d/app_name
注意:/etc/pam.d/存在 /etc/pam.conf將失效
/etc/pam.d/文件的配置格式
module_type control module args
module_type: auth(賬號認證和授權),password(密碼規則),session(會話資源),account(系統資源)
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 遠程連接本機
使用pam_time.so
添加一行sshd;*;centos;MoTuWeThFr0900-1700到 /etc/security/time.conf
在/etc/pam.d/sshd/加入
account required pam_time.so
2 、限制只有admins 組內的用戶可ssh
使用pam_group.so模塊
編輯 /etc/security/group.conf 添加如下行
sshd;*;*;Al0000-2400;distro
編輯 /etc/pam.d/sshd,添加入下
auth required pam_group.so