Linux 第21天: (09月14日) Linux自動化安裝和SELinux

Linux 第21天: (09月14日) Linux自動化安裝和SELinux

 

 

Linux系統自動化安裝


本章內容
系統安裝過程
配置anaconda
自動化安裝系統

 

安裝程序
CentOS系統安裝
系統啓動流程:
bootloader-->kernel(initramfs)-->rootfs-->/sbin/init
anaconda: 系統安裝程序
tui: 基於圖形庫curses的文本窗口
gui:圖形窗口

 

安裝程序啓動過程
MBR:boot.cat
stage2: isolinux/isolinux.bin
配置文件:isolinux/isolinux.cfg
每個對應的菜單選項:
加載內核:isolinuz/vmlinuz
向內核傳遞參數:append initrd=initrd.img...
裝載根文件系統,並啓動anaconda
默認啓動GUI接口
若是顯式指定使用TUI接口:向內核傳遞text參數即可
(1)按tab鍵,在後面增加text
(2)按ESC鍵:boot: linuxtext

 

anaconda工作過程
Anaconda安裝系統分成三個階段:

 

安裝前配置階段
安裝過程使用的語言
鍵盤類型
安裝目標存儲設備
Basic Storage:本地磁盤
特殊設備:iSCSI
設定主機名
配置網絡接口
時區
管理員密碼
設定分區方式及MBR的安裝位置
創建一個普通用戶
選定要安裝的程序包

 

安裝階段
在目標磁盤創建分區,執行格式化操作等
將選定的程序包安裝至目標位置
安裝bootloader和initramfs

 

首次啓動
iptables
selinux
core dump

 

系統安裝
啓動安裝過程一般應位於引導設備;後續的anaconda及其安裝用到的程序包等可來自下面幾種方式:
本地光盤
本地硬盤
ftp server: yum repository
http server: yum repostory
nfsserver
如果想手動指定安裝源:
boot: linuxaskmethod

 

anaconda的配置方式:
(1) 交互式配置方式
(2) 通過讀取事先給定的配置文件自動完成配置;
按特定語法給出的配置選項;
kickstart文件

 


安裝boot引導選項:boot:
text: 文本安裝方式
askmethod: 手動指定使用的安裝方法
與網絡相關的引導選項:
ip=IPADDR
netmask=MASK
gateway=GW
dns=DNS_SERVER_IP
ifname=NAME:MAC_ADDR
與遠程訪問功能相關的引導選項:
vnc
vncpassword='PASSWORD'

 


指明kickstart文件的位置:ks=
DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
Hard drive: ks=hd:device:/directory/KICKSTART_FILE
HTTP server: ks=http://host:port/path/to/KICKSTART_FILE
FTP server: ks=ftp://host:port/path/to/KICKSTART_FILE
HTTPS server: ks=https://host:port/path/to/KICKSTART_FILE
NFS server:ks=nfs:host:/path/to/KICKSTART_FILE
啓動緊急救援模式:
rescue
官方文檔:《Installation Guide》

 

kickstart文件的格式
命令段:指明各種安裝前配置,如鍵盤類型等;
程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
%packages
@group_name
package
-package
%end
腳本段:
%pre: 安裝前腳本
運行環境:運行於安裝介質上的微型Linux環境
%post: 安裝後腳本
運行環境:安裝完成的系統
命令段中的命令:
必備命令
authconfig: 認證方式配置
authconfig--useshadow--passalgo=sha512
bootloader:bootloader的安裝位置及相關配置
bootloader --location=mbr--driveorder=sda–
append="crashkernel=auto rhgbquiet"
keyboard: 設定鍵盤類型
lang: 語言類型
part: 創建分區
rootpw: 指明root的密碼
timezone: 時區
可選命令
install OR upgrade
text: 文本安裝界面
network
firewall
selinux
halt
poweroff
reboot
repo
user:安裝完成後爲系統創建新用戶
url: 指明安裝源
key –skip 跳過安裝號碼,適用於rhel版本

 

kickstart文件創建
創建kickstart文件的方式:
(1) 直接手動編輯;
依據某模板修改
(2) 可使用創建工具:system-config-kickstart
依據某模板修改並生成新配置;
http://172.16.0.1/centos6.x86_64.cfg
檢查ks文件的語法錯誤:ksvalidator
# ksvalidator/PATH/TO/KICKSTART_FILE

 

製作引導光盤和U盤
創建引導光盤:
#cp/media/cdrom/isolinux/ /tmp/myiso/
#vi /tmp/myiso/isolinux/isolinux.cfg
initrd=initrd.imgtext ks=cdrom:/myks.cfg
#cp/root/myks.cfg/tmp/myiso/
#cd /tmp
# mkisofs-R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 x86_64 boot" -b isolinux/isolinux.bin-c isolinux/boot.cat -o /root/boot.isomyiso/
創建U盤啓動盤
#ddif=/dev/sr0 of=/dev/sdb

 

 

 

SELinux

 

 

本章內容
SELinux概念
啓用SELinux
管理文件安全標籤
管理端口標籤
管理SELinux布爾值開關
管理日誌
查看SELinux幫助

 

SELinux介紹
SELinux: Secure Enhanced Linux,是美國國家安全局(NSA=The National Security Agency)和SCC(Secure Computing Corporation)開發的Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發佈,Linux內核2.6版本後集成在內核中
DAC:Discretionary Access Control自由訪問控制
MAC:Mandatory Access Control 強制訪問控制
DAC環境下進程是無束縛的
MAC環境下策略的規則決定控制的嚴格程度
MAC環境下進程可以被限制的
策略被用來定義被限制的進程能夠使用那些資源(文件和端口)
默認情況下,沒有被明確允許的行爲將被拒絕

 

SELinux工作類型
SELinux有四種工作類型:
strict: centos5,每個進程都受到selinux的控制
targeted: 用來保護常見的網絡服務,僅有限進程受到selinux控制,只監控容易被***的進程,rhel4只保護13個服務,rhel5保護88個服務
minimum:centos7,修改過的targeted,只對選擇的網絡服務
mls:提供MLS(多級安全)機制的安全性
minimum和mls穩定性不足,未加以應用

 

SELinux安全上下文
傳統Linux,一切皆文件,由用戶,組,權限控制訪問
在SELinux中,一切皆對象(object),由存放在inode的擴展屬性域的安全元素所控制其訪問
所有文件和端口資源和進程都具備安全標籤:安全上下文(security context)
安全上下文有五個元素組成:
user:role:type:sensitivity:category
user_u:object_r:tmp_t:s0:c0
實際上下文:存放在文件系統中,ls –Z;ps–Z
期望(默認)上下文:存放在二進制的SELinux策略庫(映射目錄和期望安全上下文)中
semanagefcontext–l

 

五個安全元素
User:指示登錄系統的用戶類型,如root,user_u,system_u,多數本地進程都屬於自由(unconfined)進程
Role:定義文件,進程和用戶的用途:文件:object_r,進程和用戶:system_r
Type:指定數據類型,規則中定義何種進程類型訪問何種文件Target策略基於type實現,多服務共用:public_content_t
Sensitivity:限制訪問的需要,由組織定義的分層安全級別,如unclassified,secret,top,secret, 一個對象有且只有一個sensitivity,分0-15級,s0最低,Target策略默認使用s0
Category:對於特定組織劃分不分層的分類,如FBI Secret,NSA secret, 一個對象可以有多個categroy,c0-c1023共1024個分類,Target 策略不使用category

 

SELinux策略
對象(object):所有可以讀取的對象,包括文件、目錄和進程,端口等
主體:進程稱爲主體(subject)
SELinux中對所有的文件都賦予一個type的文件類型標籤,對於所有的進程也賦予各自的一個domain的標籤。domain標籤能夠執行的操作由安全策略裏定義。
當一個subject試圖訪問一個object,Kernel中的策略執行服務器將檢查AVC (訪問矢量緩存Access Vector Cache), 在AVC中,subject和object的權限被緩存(cached),查找“應用+文件”的安全環境。然後根據查詢結果允許或拒絕訪問
安全策略:定義主體讀取對象的規則數據庫,規則中記錄了哪個類型的主體使用哪個方法讀取哪一個對象是允許還是拒絕的,並且定義了哪種行爲是充許或拒絕

 

設置SELinux
配置SELinux:
SELinux是否啓用
給文件重新打安全標籤
給端口設置安全標籤
設定某些操作的布爾型開關
SELinux的日誌管理
SELinux的狀態:
enforcing: 強制,每個受限的進程都必然受限
permissive: 允許,每個受限的進程違規操作不會被禁止,但會被記錄於審計日誌
disabled: 禁用

 

配置SELinux
相關命令:
getenforce: 獲取selinux當前狀態
sestatus:查看selinux狀態
setenforce0|1
0: 設置爲permissive
1: 設置爲enforcing
配置文件:
/boot/grub/grub.conf
使用selinux=0禁用SELinux
/etc/sysconfig/selinux
/etc/selinux/config
SELINUX={disabled|enforcing|permissive}

 

修改SELinux安全標籤
給文件重新打安全標籤:
chcon[OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
chcon[OPTION]... --reference=RFILE FILE...
-R:遞歸打標;
恢復目錄或文件默認的安全上下文:
restorecon[-R] /path/to/somewhere

 

默認安全上下文查詢與修改
semanage來自policycoreutils-python包
查看默認的安全上下文
semanagefcontext–l
添加安全上下文
semanagefcontext-a –t httpd_sys_content_t‘/testdir(/.*)?’
restorecon–Rv/testdir
刪除安全上下文
semanagefcontext-d –t httpd_sys_content_t‘/testdir(/.*)?’
1212
查看端口標籤
semanageport –l
添加端口
semanageport -a -t port_label-p tcp|udpPORT
semanage port -a -t http_port_t -p tcp 9527
刪除端口
semanageport -d -t port_label-p tcp|udpPORT
semanage port -d -t http_port_t -p tcp 9527
修改現有端口爲新標籤
semanageport -m -t port_label-p tcp|udpPORT
semanageport -m -t http_port_t-p tcp9527
Selinux端口標籤

 

SELinux布爾值
布爾型規則:
getsebool
setsebool
查看bool命令:
getsebool[-a] [boolean]
semanageboolean–l
semanageboolean-l –C 查看修改過的布爾值
設置bool值命令:
setsebool[-P] booleanvalue(on,off)
setsebool[-P] Boolean=value(0,1)

 

SELinux日誌管理
yum install setroublesshoot*(重啓生效)
將錯誤的信息寫入/var/log/message
grep setroubleshoot/var/log/messages
sealert-l UUID
查看安全事件日誌說明
sealert-a /var/log/audit/audit.log
掃描並分析日誌
yum -y install selinux-policy-devel(centos7)
yum –y install selinux-policy-doc (centos6)
mandb | makewhatis
man -k _selinux
SELinux幫助

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章