selinux :
service enhanced linux 安全增強的Linux
軟件的安全性
選擇安全系數較高的系統
提高現有系統的安全性
計算機的安全等級
D 最低的安全級別,提供最少的安全防護,系統訪問無限制。DOS
C 訪問控制的權限,能夠實現可控的安全防護,個人賬戶管理,審計和資源隔離 Unix Linux windowNT
B 支持多級安全,通過硬件對安全數據進行保護
A 最高級別,提供驗證設計,要求數據從生產到傳輸都能夠實現狀態跟蹤
訪問控制:
基本要素:
主體:主動的實體,用戶、服務、進程等
客體: 被動的實體,包括數據、文件等
規則:主體對客體訪問的策略集合
基本類型:
DAC訪問控制:自主訪問控制
通過權限列表(訪問控制列表)來限定特定主體對特定客體可以執行什么操作。
特點:
1、每個主體都擁有一個用戶名或組來獲取操作權限
2、每個客體都擁有一個限定主體對其訪問的訪問控制列表
3、訪問時,基于訪問控制列表檢查主體用戶標示以實現授權或拒絕。
進程的訪問權限
進程擁有超過其本該擁有的權限
管理員的訪問權限
管理員擁有超過其本該有用的權限
普通用戶的訪問權限
MAC訪問控制:強制訪問控制
特點:
1、主體被分配一個安全等級 機密
2、客體被分配一個安全等級 絕密
3、訪問時,對主體和客體的安全級別進行對比,最終獲得授權或拒絕。
sandbox 沙箱 虛擬化技術
折中方案:將部分服務或進程納入到MAC的訪問控制范圍即可。
阿里云盾
ECS
對跨網絡訪問的服務或進程啟用MAC訪問控制機制
selinux:
配置文件:/etc/sysconfig/selinux /etc/selinux/config
工作模式:
strict 嚴格模式 ,每個進程都會受到Selinux的控制
targeted 寬松模式,僅對部分進程啟用selinux的控制
啟動狀態:
enforcing 強制開啟
permissive 警告級別,不阻止訪問,但會記錄日志
disabled 禁用
臨時啟動:
getenforce 查看當前SELinux狀態
setenforce 0|1
0 關閉SELinux
1 啟動SELinux
格式:
subjcet operation object
subject: 進程
object: 進程 文件
operation:操作
open close read write chown chmod
生效條件:
1、SELinux是否生效,取決于subject和object是否處于同一個操作空間
2、操作類型必須滿足條件
安全標簽:
用戶:角色:類型
查看與配置:
查看文件安全標簽(安全上下文):ls -lZ
查看進程安全標簽:ps auxZ
修改安全標簽:
chcon 修改安全標簽
-u 用戶
-r 角色
-t 類型(域)
-R 遞歸
restorecon 還原安全標簽
-R 遞歸
修改布爾值
添加/刪除進程或服務本身開啟的功能模塊
getsebool 模塊名稱
-a 查看所有布爾值
setsebool 模塊名稱 on/off
-P 將修改結果保存進本地磁盤
日志文件:
/var/log/audit/audit.log
systemd
1、啟動流程:
POST -> BIOS -> MBR bootloader -> kernel 臨時根 -> 根文件系統 -> init
能夠管理、控制init進程的模塊,就是init系統
能夠讓系統在用戶預定義的級別下運行
shell
x-window
設備管理器:
sysvinit : CentOS 5
第一個廣泛應用的init系統
簡單、穩定:
只需要編寫服務的啟動腳本
設置啟動順序時,通過連接即可完成
執行效率較高,需要時間較長
對新的Linux特性 支持不夠好
upstart: CentOS 6
啟動速度大大提高
反向兼容sysvinit
設計更先進
systemd: CentOS 7
替代了所有的sysvinit的功能,并且添加更多的功能。
極大提高了啟動速度
標準化管理
按需激活進程
分配套接字,但不啟動服務
系統狀態快照
systemd配置:
核心:unit
常見unit類型:
service類型 服務類型
擴展名.service
定義系統服務
socket類型 套接字類型
擴展名.socket
標示進程間通信時使用到的socket文件
device類型 設備類型
擴展名.device
定義內核能夠識別的設備
mount類型 掛載點類型
擴展名.mount
定義文件系統的默認掛載點
cgroup 控制組 實現內核資源合理分配的機制
automount類型 自動掛載類型
擴展名.automount
定義文件系統自動掛載點設備
target類型 啟動目標類型
擴展名.target 用來模擬實現“運行級別”
snapshot類型 快照類型
擴展名.snapshot
用來管理系統快照
swap類型 交換分區類型
擴展名.swap
用來管理和定義交換分區
path類型 監視文件類型
擴展名.path
用來定義文件系統的某一文件或目錄
timer 任務計劃
slice 資源控制
scope 外部進程
關鍵特性:
1、基于socket的激活機制
2、基于bus的激活機制
若總線上存在對某一服務的訪問,可以基于該請求,將設備激活
3、基于device的激活機制
當接入新設備時,激活device unit、mount unit、automount unit
首先創建設備文件,再自動掛載到某掛載點,若掛載點不存在,則自動創建 。
4、基于PATH的激活機制
5、系統快照
能夠將各個unit的狀態信息保存至持久存儲設備中
6、向后兼容 sysvinit
/etc/init.d/服務腳本 也能夠通過 systemd 啟動
不兼容的特性:
1、systemctl的命令是固定不變的
2、若服務不是通過systemctl啟動的,那么systemctl無法與之通信
管理系統服務:
1、命令
service -> systemctl
2、啟動服務
service NAME start -> systemctl start NAME.service
3、關閉服務
service NAME stop -> systemctl stop NAME.service
4、重啟
service NAME restart -> systemctl restart NAME.service
5、查看狀態
service NAME status -> systemctl status NAME.service
6、條件式重啟
若服務已啟動,則重啟;若服務未啟動,則放棄操作
systemctl try-restart NAME.service
7、重載或重啟
systemctl reload-or-restart
重新加載未成功,則重新啟動
8、重載或條件式重啟
systemctl reload-or-try-restart NAME.service
9、查看服務的當前的激活狀態
systemctl is-active NAME.service
服務啟動則返回active;服務未啟動則返回unknown
10、查看所有已激活的服務
systemctl list-units
11、查看所有服務
systemctl list-units -a
12、查看服務是否開機自啟:
chkconfig –list
systemctl is-enabled NAME.service
13、是否禁止用戶設置服務開機啟動狀態
systemctl mask NAME.service
systemctl unmask NAME.service
管理target unit
1、設置運行級別
0 -> runlevel0.target poweroff.target
1 -> runlevel1.target multi-user.target
2 -> runlevel2.target multi-user.target
3 -> runlevel3.target multi-user.target
4 -> runlevel4.target multi-user.target
5 -> runlevel5.target graphical.target
6 -> runlevel6.target reboot.target
2、查看當前運行級別
runlevel
systemctl list-units -type target
3、切換運行級別
init N
systemctl isolate NAME.target
4、查看默認運行級別
systemctl get-default
5、修改默認運行級別
systemctl set-default NAME.target
6、切換救援模式
systemctl rescue
其它相關命令:
關機:systemctl halt.target
掛起:systemctl suspend
快照:systemctl hibernate
配置文件:
【unit】
description unit的基本描述信息
after 與before作用相反 。
【service】
type 定義啟動腳本的類型
simple 默認值,定義execstart選項指定的程序是主程序
forking 定義execstart選項調用的某一子進程做主程序。
notify 進程在收到notify函數的通知時再啟動 。
【install】
wantedby 運行依賴的模式 弱依賴
requiredby 運行依賴的模式
原創文章,作者:yaobinbin,如若轉載,請注明出處:http://www.www58058.com/76703