系統的自動化安裝
anaconda:系統安裝程序
tui:基于圖形庫curses的文本窗口
gui:圖形窗口
裝載根文件系統,并啟動anaconda
默認啟動GUI接口,若要想使用TUI接口,可以向內核傳遞參數
1.按tab鍵,在后面添加text
2.按ESC鍵,boot:linux text
anaconda工作過程:
安裝前配置階段:
安裝過程中使用的語言
鍵盤類型
安裝目標存儲設備
Basic Storage:本地磁盤
特殊設備:ISCSI
設定主機名
配置網絡接口
時區
管理員密碼
設定分區及MBR的安裝位置
創建一個普通用戶
選定要安裝的程序包
安裝階段
在目標磁盤創建分區,執行格式化操作等
將選定的程序包安裝至目標位置
安裝bootloader和initramfs
首次啟動
iptables,selinux,core dump設置
啟動安裝過程一般應位于引導設備;后續的anaconda及其安裝用到的程序包可能來源于下面幾種方式:
本地光盤
本地硬盤
ftp server:yum repository
http server:yum repository
nfs server
如果想指定安裝源:
boot:linux askmethod 可以讓系統詢問選擇安裝的媒介
anaconda的配置方式:
1.交互式配置方式
2.通過讀取事先給定的配置文件實現自動化安裝
kickstart文件
安裝boot引導選項:boot
text:文本安裝方式
askmethod:手動指定使用的安裝方法
與網絡相關的引導選項
ip=address
netmask=mask
gateway=gw
dns=address
ifname=name:mac_addr
遠程訪問功能相關的引導選項;
vnc
vncpasswd=‘password’
指明kickstart文件位置:ks=
DVD driver:ks=cdrom:/path/to/file
Hard driver: ks=hd:device:/path/to/file
Ftp server: ks=ftp://host:port/path/to/file
Http server: ks=https://host:port/path/to/file
Nfs server: ks=nfs:host:/path/to/file
kickstart文件的格式:
命令段:指明各種安裝前配置,如語言,鍵盤等
程序包段:指明要安裝的程序包組或者程序包,不安裝的程序包等
%packages:以%packages字段開始
@group_name:要安裝的包組
package:安裝的程序包
-package:不安裝的程序包
%end:以%end字段結束
腳本段:
%pre:安裝前腳本
運行環境:運行于安裝介質上的微型linux環境
%post:安裝后腳本
運行環境:安裝完成的系統
命令段中的命令:
必備命令:
autoconfig:認證方式配置
autoconfig –useshadow –passalgo=sha512
bootloader –location=mbr –driverorder=sda –append="crashkernel=auto rhgb quiet"
keyboard:設定鍵盤類型
lang:語言類型
part:分區
rootpw:指明root的密碼
timezone:時區
可選命令:
install or upgrade
text:文本界面安裝
network,firewall,selinux,halt,poweroff,reboot,repo
user:安裝完成后為系統創建新用戶
url:指明安裝源
key-skip:跳過安裝號碼,適用于rhel版本
創建kickstart文件的方式:
1.直接手動編輯
依據某個模板
2.可使用創建工具:system-config-kickstart
一句某模板修改并生成新配置
http://172.18.19.1/centos6.cfg
檢查ks文件的語法錯誤
ksvalidator /path/to/file
配置完成后,保存文件
啟動后,指定ks配置文件路徑即可:boot:linux ks=ftp://ip/path/to/file
firstboot:-r 可以重新配置
制作引導光盤和U盤
將光盤中的isolinux文件拷到一個制作光盤的目錄下
cp /mnt/cdrom/isolinux /tmp/myiso/
編輯對應的isolinux.cfg文件
vi /tmp/myiso/isolinux/isolinux.cfg
initrd=initrd.img text ks=cdrom:/myks.cfg
拷貝ks.cfg文件
cp /root/ks.cfg /tmp/myiso/
切換目錄至myiso文件的父級目錄
cd /tmp
制作iso文件
mkisofs -R -J -T -v –no-emul-boot –boot-load-size 4 –boot-info-table -V "centos 7 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
創建U盤啟動
dd if=/dev/sr0 of=/dev/sdb
fdisk /dev/sdb –>t –>b 指定vfat
mkfs.vfat /dev/sdb1
mount /dev/sdb1 /mnt/usb
mkdir -p /mnt/usb/boot/grub
cp /misc/cd/images/pxeboot/vmlinuz
/misc/cd/images/pxeboot/initrd /mnt/usb/boot
vi /mnt/usb/boot/grub/grub.conf
title linux
root (hd0,0)
kernel /boot/vmlinuz
initrd /boot/initrd.img ks=http://ip/centos.cfg
grub
root (hd1,0)
kernel /
setup (hd1)
SELinux
Secure Enhanced Linux,是美國國家安全局NSA和SCC開發的linux的一個強制訪問控制的安全模塊
DAC:Discretionary Access Control 自由訪問控制
MAC:Mandatory Access Control 強制訪問控制
DAC環境下進程是無束縛的
MAC環境下策略的規則決定控制的嚴格程度
MAC環境下進程可以被限制的
策略被用來定義被限制的進程能夠使用哪些資源(文件,端口。。。)
默認情況下,沒有被明確允許的行為將被拒絕
SELinux有四種工作類型:
strict:centos5,每個進程都受到selinux的控制
targeted:用來保護常見的網絡服務,僅有限進程受到selinux控制,只監控容易被入侵的過程,rhel4只保護13個服務,rhel保護88個服務
minimum:centos7,修改過的targeted,只對選擇的網絡服務
mls:提供MLS(多級安全)
minimum和mls穩定性不足,未加以利用
SELinux的安全上下文
傳統linux,一切皆文件,由用戶,組,權限控制訪問
在selinux中,一切皆對象,由存放在Inode擴展屬性域的安全元素所控制其訪問
所有文件和端口資源和進程都具備安全標簽,安全上下文(security context)
安全上下文有五個元素:
user:role:type:sensitivity:category
user_u:object_r:tmp_t:s0:c0
實際上下文:存放在文件系統中 ls -Z
默認的安全上下文:存放在二進制的selinux策略庫(映射目錄和期望安全上下文)中
semanage fcontext -l
SELinux五個安全元素
User:指示登錄系統的用戶類型,如root,user_u,system_u,多數本地進程都屬于自由(unconfined)進程
Role:定義文件 ,進程和用戶的用途:文件:object_r,進程和用戶:system_r
Type:指定數據類型,規則中定義何種進程類型訪問何種文件,target策略基于type'實現,多服務公用:public_content_r
Sensitivity:限制訪問的需要,由組織定義的分層安全級別,如unclassified,secret,top。。。一個對象有且只有一個sensitivity,分0-15級,s0最低,target默認策略使用s0
Category:對于特定組織劃分不分層的分類,如FBI Secret,一個對象可以有多個category,c0-c1023,共1024個分類,target策略不使用category
SElinux策略
對象(object):所有可以讀取的對象,包括文件,目錄和進程,端口等
主體(subject):進程稱為主體
SELinux中對所有文件都賦予一個type的文件類型標簽,對于所有的進程也賦予各自的一個domain的標簽,Domain標簽能夠執行的操作由安全策略里定義
當一個subject試圖訪問一個object,Kernel中的策略執行服務器將檢查AVC(訪問矢量緩存Access Vector Cache),在AVC中,subject和object的權限被緩存(cache),查找“應用+文件”的安全環境,然后根據查詢的結果允許或拒絕訪問
安全策略:定義主體讀取對象的規則數據庫,規則中記錄了哪個類型的主體使用哪個方法讀取哪一個對象是允許還是拒絕的,并且定義了哪種行為是允許還是拒絕的
SELinux的狀態:(有一個禁用,就禁用)
enforcing:強制,每個受限的進程都必然受限
permissive:允許,每個受限的進程違規操作不會被禁止,但會被記錄于審計日志
disable:禁用
/etc/selinux/config中設置了默認的啟動級別
查看當前的selinux的狀態,使用getenforce命令查看,0表示關閉,1表示開啟,修改當前selinux狀態,使用setenforce命令
查看更詳細的selinux狀態可以使用sestatus命令進行查看
SELinux的標簽
查看selinux數據庫中的所有規定的標簽策略
semanage fcontext -l
更改標簽
restorecon -R /var/www/html
R:表示恢復目錄標簽
chcon –reference file1 file2
參考file1的標簽,修改file2文件的標簽
添加與刪除數據庫中的策略
semanage fcontext -a -t httpd_sys_content_t "/website(/.*)?"
semanage fcontext -d -t httpd_sys_content_t "/website(/.*)?"
Tips:restorecon 只能恢復已經存在于selinux數據庫中的策略,對于沒有定義的文件,不能使用該命令進行恢復,而chcon可以對未在selinux數據庫中定義的策略的文件進行恢復
端口號的標簽
semanage port -l
查看selinux特定某個端口
添加端口:semanage port -a -t http_port_t -p tcp 666
修改端口:此端口只能是已經存在于selinux端口策略中的端口,沒有定義的只能使用-a選項添加 semanage port -m -t ssh_port_t -p tcp 666
刪除端口:semanage port -d -t ssh_port_t -p tcp 666
selinux的boolean值
查看selinux中boolean值
semanage boolean -l
前一個off是state,表示現在的狀態
后一個off是default,表示寫入文件中的默認狀態
setsebool -P boolean value 設置boolean值,并將配置寫入文件
SELinux日志管理
yum install setroubleshoot*(重啟生效)
將錯誤信息寫入到/var/log/message
grep setroubleshoot /var/log/message
查看安全事件日志說明:sealert -l uuid
掃描并分析日志:sealert -a /var/log/audit/audit.log
SElinux幫助
yum install selinux-policy-devel(centos7)
yum install selinux-policy-doc(centos6)
mandb | makewhatis
man -k _selinux
1、啟用SELinux策略并安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,使網站可訪問
2、修改上述網站的http端口為9527,增加SELinux端口標簽,使網站可訪問
3、啟用相關的SELinux布爾值,使上述網站的用戶student的家目錄可通過http訪問
用戶student創建的文件public_html要設置selinux策略,用戶的家目錄student默認權限700,而訪問者是以apache用戶的身份訪問的,所以要設置下acl權限,使用戶擁有訪問student家目錄的權限,這樣才能進入家目錄去訪問public_html文件 setfacl -m u:apache:x /home/student
原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/46869