系統自動化安裝的實現及SELINUX的設置

系統的自動化安裝

    anaconda:系統安裝程序

        tui:基于圖形庫curses的文本窗口

        gui:圖形窗口

    裝載根文件系統,并啟動anaconda

        默認啟動GUI接口,若要想使用TUI接口,可以向內核傳遞參數

        1.按tab鍵,在后面添加text

        2.按ESC鍵,boot:linux text

    blob.png

    

    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 可以讓系統詢問選擇安裝的媒介

        blob.png

    

    anaconda的配置方式:

        1.交互式配置方式

        2.通過讀取事先給定的配置文件實現自動化安裝

            kickstart文件

    

    安裝boot引導選項:boot

        text:文本安裝方式

        askmethod:手動指定使用的安裝方法

        與網絡相關的引導選項

            ip=address

            netmask=mask

            gateway=gw

            dns=address

            ifname=name:mac_addr

        遠程訪問功能相關的引導選項;

            vnc

            vncpasswd=‘password’

    blob.png

    指明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:安裝后腳本

                運行環境:安裝完成的系統


    命令段中的命令:

blob.png

        必備命令:

            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

            blob.png

            blob.png

    配置完成后,保存文件

    啟動后,指定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穩定性不足,未加以利用

       blob.png

SELinux的安全上下文

    傳統linux,一切皆文件,由用戶,組,權限控制訪問

    在selinux中,一切皆對象,由存放在Inode擴展屬性域的安全元素所控制其訪問 

    所有文件和端口資源和進程都具備安全標簽,安全上下文(security context)

    安全上下文有五個元素:

        user:role:type:sensitivity:category

        user_u:object_r:tmp_t:s0:c0

        blob.png

    實際上下文:存放在文件系統中 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中設置了默認的啟動級別

    blob.png

blob.png

    查看當前的selinux的狀態,使用getenforce命令查看,0表示關閉,1表示開啟,修改當前selinux狀態,使用setenforce命令

    blob.png

    查看更詳細的selinux狀態可以使用sestatus命令進行查看

  blob.png

    

SELinux的標簽

    blob.png


    查看selinux數據庫中的所有規定的標簽策略

        semanage fcontext -l

blob.png

    更改標簽  

        restorecon -R /var/www/html 

            R:表示恢復目錄標簽

        chcon –reference file1 file2 

            

    參考file1的標簽,修改file2文件的標簽 

blob.png        

    添加與刪除數據庫中的策略

        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

    blob.png

            

    查看selinux特定某個端口   

  blob.png

 

   添加端口:semanage port -a -t http_port_t -p tcp 666  

  blob.png

  修改端口:此端口只能是已經存在于selinux端口策略中的端口,沒有定義的只能使用-a選項添加  semanage port -m -t ssh_port_t -p tcp 666  

  blob.png

 刪除端口:semanage port -d -t ssh_port_t -p tcp 666

  blob.png

 

  selinux的boolean值

    查看selinux中boolean值

    blob.png


    semanage boolean -l 

  blob.png   

    前一個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

    blob.png

    SElinux幫助

    yum install selinux-policy-devel(centos7)

    yum install selinux-policy-doc(centos6)

    mandb | makewhatis

    man -k _selinux

    

1、啟用SELinux策略并安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,使網站可訪問

blob.png

blob.png

blob.png

2、修改上述網站的http端口為9527,增加SELinux端口標簽,使網站可訪問

blob.png

blob.png

blob.png

blob.png

3、啟用相關的SELinux布爾值,使上述網站的用戶student的家目錄可通過http訪問

blob.png

blob.png

用戶student創建的文件public_html要設置selinux策略,用戶的家目錄student默認權限700,而訪問者是以apache用戶的身份訪問的,所以要設置下acl權限,使用戶擁有訪問student家目錄的權限,這樣才能進入家目錄去訪問public_html文件  setfacl -m  u:apache:x /home/student

blob.png

 blob.png   

 blob.png  





原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/46869

(0)
Stupid_LStupid_L
上一篇 2016-09-16
下一篇 2016-09-17

相關推薦

  • linux的CentOS系統啟動故障與修復

        以CentOS 6為例,系統的啟動流程為: 1.開機post加電自檢 2.MBR引導 3.通過grub加載內核 4.加載根 5.加載系統中的第一個進程 6.進行初始化 7.出現登錄界面     其中主要的啟動環節是grub引導計算機,分為三個階段:一階段發生在mbr的446字節中;一點五階段在mbr后續的扇區中…

    2017-09-03
  • 8.12作業

    作業: 1、查找/var目錄下屬主為root,且屬組為mail的所有文件   find /var  -user root  -group  mail -ls 2、查找/var目錄下不屬于root、lp、gdm的所有文件   find /var -not \( -user root  -o -user…

    Linux干貨 2016-08-15
  • mysql5.5.32多實例配置

    操作系統:CentOS release 6.7 (Final) 內核版本:2.6.32-573.el6.x86_64 mysql版本號:mysql-5.5.32 1)安裝mysql所需的依賴包 # adduser mysql -s /sbin/nologin -M # mkdir -p&n…

    Linux干貨 2016-12-05
  • Linux的SOCKET編程詳解

    1. 網絡中進程之間如何通信 進 程通信的概念最初來源于單機系統。由于每個進程都在自己的地址范圍內運行,為保證兩個相互通信的進 程之間既互不干擾又協調一致工作,操作系統為進程通信提供了相應設施,如 UNIX BSD有:管道(pipe)、命名管道(named pipe)軟中斷信號(signal) UNIX system V有:消息(message)、共享存儲區…

    Linux干貨 2015-04-10
  • 正則表達式以及Linux文本搜索工具grep

    一正則表達式 regual Expression  簡稱REGEXP 定義:由一類特殊字符以及文本字所編寫的模式,其中有些字符不表示其字面意義,而用于統配和統配功能 分類:     基本正則表達式:BRE 貪婪模式(盡可能長地去匹配符合模式的內容     擴展表達式:E…

    Linux干貨 2016-08-07
  • grep常見應用實例

      在我們實際應用中,正則表達式的應用是非常廣泛的,今天我就大家分享幾個比較常見的正則表達式的應用實例,不周之處,還望高人多多指點!   一:使用正則表達式搜索郵箱地址 二:使用正則表達式搜索手機號 三:使用正則表達式搜索身份證號 四:使用正則表達式取網絡配置文件中的IP地址的過程解析   一:使用正則表達式搜索郵箱地址: [r…

    系統運維 2016-08-08
欧美性久久久久