系統自動化安裝、selinux

系統自動化安裝

系統啟動流程:bootloader–>kernel(initramfs)–>rootfs–>anaconda–>/sbin/init

anaconda: 系統安裝程序
    tui: 基于圖形庫curses的文本配置窗口
    gui:圖形窗口

安裝程序啟動過程
 MBR:isolinux/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: linux text  

啟動安裝過程一般應位于引導設備;后續的anaconda及其安裝用到的程序包等可來自下面幾種方式:本地光盤、本地硬盤、U盤或網絡(ftp server、http server、nfs server)
如果想手動指定安裝源:按ESC鍵 ;boot: linux askmethod 或 boot: linux method

Anaconda安裝系統分成三個階段:
安裝前配置階段
    安裝過程使用的語言
    鍵盤類型
    安裝目標存儲設備
        Basic Storage:本地磁盤
        特殊設備:iSCSI
    設定主機名
    配置網絡接口
    時區
    管理員密碼
    設定分區方式及MBR的安裝位置
    創建一個普通用戶
    選定要安裝的程序包
安裝階段
    在目標磁盤創建分區,執行格式化操作等
    將選定的程序包安裝至目標位置
    安裝bootloader和initramfs
首次啟動
    iptables
    selinux
    core dump

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

安裝boot引導選項:
    boot:
     text: 文本安裝方式
     method或askmethod: 手動指定使用的安裝方法
     與網絡相關的引導選項:
          ip=IPADDR
          netmask=MASK
          gateway=GW
          dns=DNS_SERVER_IP
          ifname=NAME:MAC_ADDR
     與遠程訪問功能相關的引導選項:
          vnc
          vncpassword='PASSWORD'
      啟動緊急救援模式
            rescue
      裝載額外驅動
            dd
www.redhat.com/docs,《indtallation guide》 獲取安裝說明信息

指明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

kickstart文件的格式
命令段:指明各種安裝前配置,如鍵盤類型等;
程序包段:指明要安裝的程序包組或程序包,不安裝的程序包等;
    %packages  程序包段起始位置
    @group_name  安裝一個包組
    package  安裝某個程序包
    -package  D不安裝某個程序包(當指定為不安裝的程序包,若被其他程序依賴也將會被安裝)
    %end  程序包段結束位置
腳本段:
    %pre: 安裝前腳本
        運行環境:運行于安裝介質上的微型Linux環境
    %post: 安裝后腳本
        運行環境:安裝完成的系統;

命令段中的命令:
    authconfig: 認證方式配置
        authconfig–useshadow–passalgo=sha512
    bootloader:bootloader的安裝位置及相關配置
        bootloader –location=mbr –driveorder=sda#
            append="crashkernel=auto rhgb quiet"
    keyboard: 設定鍵盤類型
    lang: 語言類型
        lang zh_CN.UTF8
    part: 創建分區
        part /boot –fstype=ext4 –size=500
        part pv.008002 –size=51200
    rootpw: 指明root的密碼
        openssl passwd -1 -salt `openssl rand -hex 4` 使用md5加密方式生成加密密碼
        rootpw –iscrypted
    timezone: 時區
        timezone Asia/Shanghai

補充:分區相關的其他指令
    clearpart:清除分區
        clear –none –diver=sda:清空磁盤分區
    volgroup:創建卷組
        volgroup myvg –presize=4096 pv.008002
    logvol:創建邏輯卷
        logvol /home –fstype –name=lv_home –vgname=myvg –size=5120

可選命令
    install OR upgrade:安裝或升級
    text: 文本安裝界面,默認為圖形安裝界面
    network:配置網絡接口
        network –onboot yes –device eth0 –bootproto –noipv6
    firewall:防火墻
        firewall –disable
    selinux:SElinux
        selinux –disable
    halt|poweroff|reboot:安裝完成之后的行為
    repo:指明安裝時使用的repository
    user:安裝完成后為系統創建新用戶
    url: 指明安裝源
        url –url="http://mirrors.aliyun.com/centos/6.8/os/x86_64/"
    key –skip:跳過安裝號碼,適用于rhel版本

系統安裝完成之后
    禁用防火墻
        CentOS 6:
            service iptables stop
            chkconfig iptables off
        CentOS 7:
            systemctl stop iptables
    禁用SElinux
        永久有效
            修改/etc/sysconfig/selinux或/etc/selinux/config
            selinux=permissive或disabled
         立即生效
            setenforce 0
        查看狀態
            getenforce

創建kickstart文件的方式:
(1) 直接手動編輯;
    依據某模板修改
(2) 可使用創建工具:system-config-kickstart
    依據某模板修改并生成新配置;
        http服務器:mirrors.aliyun.com
        http目錄:/centos/6.8/os/x86_64/
   檢查ks文件的語法錯誤:ksvalidator

創建引導光盤:
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盤啟動盤
    dd if=/dev/sr0 of=/dev/sdb
1 fdisk/dev/sdb–?t -?b 指定vfat
    mkfs.vfat/dev/sdb1
2 mount /dev/sdb1 /mnt/usb
    mkidr-p /mnt/usb/boot/grub
   cp/misc/cd/images/pxeboot/vmlinuz/misc/cd/images/pxeboot/initrd/mnt/usb/boot
3 vi /mnt/usb/boot/grub/grub.conf
    title wanglinux
    root (hd0,0)
    kernel /boot/vmlinuz
    initrd/boot/initrd.imgks=http://172.16.0.1/centos6.x86_64.cfg
4 #grub
    >root (hd1,0)
    >kernel /
    >setup ( hd1)
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有四種工作類型:
 strict: centos5,每個進程都受到selinux的控制
 targeted: 用來保護常見的網絡服務,僅有限進程受到selinux控制,只監控容易被入侵的進程,rhel4只保護13個服務,rhel5保護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;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 策略不使用cateaory

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

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

相關命令:
    getenforce: 獲取selinux當前狀態
    sestatus:查看selinux狀態
    setenforce 0|1
        0: 設置為permissive
        1: 設置為enforcing
    注:setenforce 臨時生效,若要永久生效修改器配置文件
配置文件:
/boot/grub/grub.conf  使用selinux=0禁用SELinux
/etc/sysconfig/selinux  /etc/selinux/config
    SELINUX={disabled|enforcing|permissive}
        enforcing或permissive切換至disabled需要重啟,
        isabled切換至enforcing或permissive需要重啟,
        enforcing與permissive之間切換不需要重啟。

給文件重新打安全標簽:
    chcon [OPTION]… [-u USER] [-r ROLE] [-t TYPE] FILE…
    chcon [OPTION]… –reference=RFILE FILE…  以模版文件設置安全標簽
        -R:遞歸打標;
恢復目錄或文件默認的安全上下文:
    restorecon [-R] /path/to/somewhere

默認安全上下文查詢與修改,semanage來自policycoreutils-python包
    查看默認的安全上下文
        semanage fcontext -l
    添加安全上下文
        semanage fcontext -a -t httpd_sys_content_t ‘/testdir(/.*)?’
        restorecon -Rv /testdir
    刪除安全上下文
        semanage fcontext -d –t httpd_sys_content_t ‘/testdir(/.*)?’
    查看端口標簽
        semanage port –l
    添加端口
        semanage port -a -t port_label-p tcp|udp PORT
        semanage port -a -t http_port_t -p tcp 9527
    刪除端口
        semanage port -d -t port_label-p tcp|udp PORT
        semanage port -d -t http_port_t -p tcp 9527
    修改
        semanage port -m -t port_label-p tcp|udp PORT
        semanage port -m -t http_port_t -p tcp 9527

SELinux布爾值
布爾型規則:
    getsebool
    setsebool
查看bool命令:
    getsebool [-a] [boolean]
    semanageboolean –l
    semanageboolean -l –C 查看修改過的布爾值
設置bool值命令:
    setsebool [-P] booleanvalue
    setsebool [-P] Boolean=value
        -P:永久有效,默認僅臨時有效
SELinux日志管理 yum install setroublesshoot*(重啟生效)
將錯誤的信息寫入/var/log/message
   grep setroubleshoot/var/log/messages
   sealert-l UUID
查看安全事件日志說明
 sealert-a /var/log/audit/audit.log
掃描并分析日志
   [root@serverX ~]# yum -y install selinux-policy-devel
SELinux幫助
   [root@serverX ~]# mandb
   [root@serverX ~]# man -k _selinux

練習
 1、安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,設置http_sys_content_t到/website及目錄下所有文件,使網站可訪問
 2、修改網站端口為9527,增加SELinux端口標簽,使網站可訪問
 3、啟用SELinux布爾值,使用戶student的家目錄可通過http訪問

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

(0)
anonymousanonymous
上一篇 2016-09-22
下一篇 2016-09-22

相關推薦

  • Ansible playbook

    目錄 1.1        playbook簡介… 1 1.2        Playbook使用場景… 1 1.3      &nbs…

    Linux干貨 2015-12-06
  • Linux學習總結及練習&day08-sed文本處理工具

    第一部分、Linux文本處理三劍客之sed(Stream EDitor)文本編輯工具     一、sed的基本功能工作原理     sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令…

    Linux干貨 2016-08-10
  • Ansible+Corosync+Pacemaker+nfs實現http高可用

    目錄: (一)實驗環境 (二)準備工作 (三)為node1和node2配置基礎配置 (四)使用ansible部署nfs (五)使用ansible部署corosync和pacemaker (六)使用ansible安裝crmsh工具 (七)使用crmsh配置http高可用 (八)驗證 (九)需要注意的地方 (一)實驗環境 1.1、環境拓撲 1.2、所需系統 4臺…

    Linux干貨 2016-04-29
  • 馬哥教育網絡班21期+第一周課程練習

    1,描述計算機的組成及其功能。 2.按系列羅列linux的發行版,并描述不同發行版之間的練習與區別。 3.描述linux的哲學思想,并按照自己的理解對其進行解釋性描述。 1.       一切皆文件,計算機中所有的文件目錄,        包括計算機的硬件設備顯示為文件格式。 2…

    Linux干貨 2016-07-07
  • 6個變態的C語言Hello World程序

    下面的六個程序片段主要完成這些事情: 輸出Hello, World 混亂C語言的源代碼 下面的所有程序都可以在GCC下編譯通過,只有最后一個需要動用C++的編譯器g++才能編程通過。 hello1.c   #define _________ }     #define …

    Linux干貨 2015-04-01
  • bash-條件測試

                     條件測試 1.條件測試          ? 判斷某需求是否滿足,…

    Linux干貨 2016-08-12
欧美性久久久久