系統自動化安裝的實現及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 19:14
下一篇 2016-09-17 13:42

相關推薦

  • LVS

    LVS概述 1.LVS:Linux Virtual Server全稱叫做linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。四層路由器(交換),根據請求報文的目標IP和目標協議及端口將其調度轉發至后端主機集群中的某臺RealServer(真實服務器),根據調度算法來挑選RS; 主要有…

    Linux干貨 2016-11-07
  • sed工具實踐解析

    此次博文介紹一下文本處理三劍客中的sed工具(點擊查看grep工具http://www.www58058.com/83512) 介紹sed: sed是非交互式的編輯器。它不會修改文件,除非使用shell重定向來保存結果。默認情況下,所有的輸出行都被打印到屏幕上。 運行過程: sed編輯器逐行處理文件,并將結果發送到屏幕。具體過程如下:首先sed把當前正在處理…

    Linux干貨 2017-08-26
  • N26第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;grep “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;grep “^#[[:space:…

    Linux干貨 2017-03-06
  • FTP服務

        FTP是一個非常古老的協議,其主要的作用是用于文件的傳輸。FTP采用明文的方式傳輸,極其不安全,但在局域網等環境中使用還是比較方便的。 一、工作原理     FTP的工作方式分為主動模式與被動模式。     1、主動模式 &nbsp…

    Linux干貨 2015-07-08
  • Centos 5\6的啟動流程簡介

     Centos 5\6的啟動流程簡介圖如下  第三步說明:磁盤的第一個扇區512字節的前446是bootloader,與此446字節與grub Stage1的446字節是一樣的,主要功能是加載/boot/grup/目錄下的文件     stage1.5加載相應用的文件系統文件并識別,如ext系列使用的e2fs…

    Linux干貨 2016-06-03
  • apache自動化腳本搭建虛擬主機

    1 基于主機名實現三個虛擬主機 (1).創建網站目錄與測試文件 (2).創建虛擬主機文件(目錄為/etc/httpd/conf.d/下)   (3).修改測試apache主機hosts文件(就不用DNS服務器解析,方便測試),測試httpd配置文件是否有問題,重啟httpd服務   (4)修改測試主機hosts文件(就不用DNS服務器解析…

    Linux干貨 2016-10-09
欧美性久久久久