2021年2月15日 星期一

Coursera - IBM - Cybersecurity Compliance Framework & System Administration 觀後摘要(三)

Week 3  - Server and User Administration


Introduction to Windows Administration(內容與Cybersecurity Roles, Processes & Operating System Security的第三週 Windows Operating System Security Basics 幾乎相同)

  • 為了避免一個使用者的程式影響其他使用者的程式甚至是系統核心,大部分的作業系統(或者說是 CPU) 至少會有二種執行特權 (privilege):Kernel mode  與 User mode。Kernel mode 能夠做所有的硬體操作和其他系統停止指令:例如關機、分配記憶體…等。所以平常使用者只會碰到 User mode,需要的時候再請 Kernel mode 來操作。

    • User Mode
      當使用者啟動User Mode的應用程式時,Windows會為其創建Process,這個Process所使用的virtual address space(虛擬位址)是私有的,即使這個應用程式崩潰,也不會影響到其他應用程式或作業系統。

    • Kernel Mode
      所有在Kernel Mode下運行的程式共用一個虛擬位址,因此當Kernel Mode 下的Driver故障或是意外寫入會造成錯誤的虛擬位址,會導致作業系統崩潰(藍屏)。

  • File Systems
    檔案系統讓應用程式得以在儲存媒體上存取資料,Windows 常見的檔案系統有兩種。

    • NTFS(New Technology File System)
      1993年導入的檔案系統,至今為大部份的Windows作業系統與伺服器所使用。

    • FATxx
      NTFS發明以前的作業系統,目前多使用在32GB以下的移動式儲存媒體上,支援單一檔案最大到4GB。xx為數字(如FAT16, FAT32),用以表示一個檔案系統區塊的最小大小。

  • Directory Structure
    典型的Windows目錄結構如下:


    • PerfLogs
      電腦性能日誌,預設設定下它會是空的。

    • ProgramData
      存放預期由電腦程式訪問的程式數據,這些程式與目前登入的用戶是誰無關,因為所有用戶都會使用到。例如:程式可能會存取"操作連接到電腦的DVD燒錄機"所需的特定信息。

    • Program Files
      已安裝的64位元程式 (In 64-bit OS)。

    • Program Files (x86)
      已安裝的32位元程式 (In 64-bit OS)。

    • Users
      存放使用者的配置文件。

      • Public
        公用帳號的目錄。

      • Specific User
        • Appdata
          該目錄儲存使用者的應用程式數據與設定檔案。

    • Windows
      Windows本身安裝的路徑,以下目錄儲存了Windows 與其API核心功能的DLL檔案:

      • System
        存放16-bit DLLs ,通常在64-bit OS 為空。

      • System32
        存放64-bit DLLs  (In 64-bit OS)。

      • SysWow64
        存放32-bit DLLs  (In 64-bit OS)。

      • WinSxS
        存放了大部分Windows檔案的副本,如所有Windows組件、Windows更新和Service Pack。

    Role- Based Access Control and Permissions

    • Access Control 

      • 當用戶通過身分驗證後,作業系統將進一步審核用戶是否具有存取資源所需的權限。

      • 每個資源都有擁有者,該擁有者向安全主體(用戶和群組)授予權限。

      • 安全主體皆由唯一的安全標識符(SID)表示。

      • 共享資源使用存取控制列表(ACL)分配權限。這使資源管理器可以通過以下方式實施訪問控制:

        • 拒絕未授權的用戶和群組進行存取。

        • 為已授權用戶和群組的存取行為設立明確的限制。

    • Least Privileges
      最少權限原則要求環境中的每個實體,如群組、用戶或者電腦程式…等,只能訪問當下所必需的訊息或資源,避免數據以及系統功能受到錯誤或惡意行為的破壞。

    • Local User Accounts
      Windows安裝後預設創建以下帳號:

      • Default local user accounts
        • Administrator account
        • Guest account
        • HelpAssistant account
        • Default account

      • Default local system accounts

        • SYSTEM
          在本機具備最高權限,可存取本機大部分資源,與遠端主機溝通時則使用該主機電腦帳號。

        • NETWORK SERVICE
          在本機的權限相當於Users群組,存取遠端資源時使用該主機電腦帳號。

        • LOCAL SERVICE
          在本機的權限相當於Users群組,存取遠端資源時使用匿名身分。

      • 安全考量

        • 限制本機電腦上各用戶間的檔案存取。

        • 限制本機帳戶的遠端存取權限。

        • 限制本機管理員帳戶存取網路資源。

        • 密碼複雜度管理。

    Features of Active Directory
    AD功能Active Directory(AD)是Windows Server中,負責架構中大型網路環境的集中式目錄管理服務(Directory Services),該服務可將使用者帳戶、電腦、工作站、伺服器、印表機、網路磁碟機等設備統一集中控管,並簡化管理工作、加強電腦安全性。

    • Active Directory Accounts
      • Administrator account
      • Guest account
      • HelpAssistant account
      • KRBTGT account
        用於Kerberos服務的帳號

    • Restrict and protect sensitive domain accounts

      • Separate administrator accounts from user accounts
        不以個人帳號進行系統管理

        • Min.
          為各種系統創建各自的管理員帳號。
        • Med.
          創建不同管理權限的管理員帳號。
        • Ideal
          即使管理員為同一位,也應為不同系統創建不同的管理員帳號與權限分級。

      • Create dedicated workstation hosts without Internet and email access
        需使用到管理員帳號的權限時,應從一台專用的工作站進行連線,工作站對於其網路存取應有適當限制:

        • Min.
          封鎖其網際網路功能。
        • Med.
          不將管理員加入該工作站之 Local Administrator Group,避免其輕易繞過系統限制。
        • Ideal
          工作站應限制其網路存取,除了Domain controller 與管理用的伺服器。


      • Restrict administrator logon access to servers and workstations
        應限制具有諸多權限的管理員帳號之登入行為

        • Min.
          限制網域管理員帳號在信任層級較低的端點裝置登入。
        • Med.
          限制網域管理員帳號在Non-DC Server上登入。
        • Ideal
          各伺服器的管理員帳號應限制其可登入範圍。

      • Disable the account delegation right for administrator accounts
        停用敏感帳號或所有帳號的委派功能。

    Overview of Server Management with Windows Admin Center

    • Group Types
      • Security group
        安全性群組,用以授予物件權限。

      • Distribution group
        通訊群組,用以建立郵件通訊清單。

    • Group Scope
      Group的Scope分為三種:

      • Domain Local(網域區域)
        可包含任何網域的使用者帳戶、通用群組、萬用群組及同網域的網域區域群組,但其權限範圍僅限於建立該群組的網域。在管理網域資源時,一般都會把存取權限指派給網域區域群組,而不會直接指派給使用者帳戶。

      • Global(通用)
        通用群組通常被用來組織需要相同權限的使用者帳戶與電腦帳戶。此群組可包含同網域的使用者帳戶與其他通用群組,但其權限範圍是整個樹系之資源;然而實際應用上,最好將通用群組加入網域區域群組,而不要直接將權限指派給通用群組。

      • Universal(萬用)
        跨網域的群組使用萬用群組進行合併,此群組可以包含任何網域的使用者帳戶、通用群組與萬用群組,但其權限範圍是整個樹系之資源。

    • Windows Admin Center
      WAC 是Windows Server 2016後新增的功能,是一種基於瀏覽器的管理工具,伺服器管理員可以在單一網站介面中對相容的Windows Server 與 Windows 10 電腦進行管理。功能包括電腦管理、磁碟管理、網路管理、效能管理、叢集管理、超融合管理、檔案與儲存裝置管理、服務與執行程序管理、遠端桌面、 PowerShell 連線管理以及虛擬機器管理等等。

    Windows Security and Compliance Topics

    • Kerberos
      Kerberos是一種授權協定,用來進行身份認證,Windows在AD系統上使用了它。

      • Benefit

        • 委派身分驗證
        • 單一登入功能(Single Sign-On, SSO)
          不必進行多次登入去存取內部資源
        • Interoperability(互通性)
        • Mutant authentication(雙向認證)

    • Logging
      Log 是電腦裏所有發生的事件之紀錄,Windows提供了Windows Event Viewer 供管理者去檢視、彙整這些紀錄。

    • Audit events

      • Account logon
        在另一台電腦登入/登出的每一個使用者帳戶,且使用這台電腦來驟證帳戶之事件。當網域使用者帳戶在網域控制站上驗證時,就會產生帳戶登入事件。事件會記錄到網域控制的安全性記錄檔中。

      • Account management
        電腦上每一項帳戶管理事件。包括建立、變更刪除使用者或群組,重新命名、停用或啟用使用者帳戶,設定或變更密碼。

      • Directory service access
        存取AD 物件的使用者事件,且該物件已指定自己的系統存取控制清單(SACL)。

      • Logon events
        使用者登入或登出電腦。

      • Object access
        存取物件的使用者事件(例如檔案、資料夾、登錄機碼值、印表機等),且該物件已指定自己的系統存取控制清單(SACL)。

      • Policy change
        使用者權限指派原則、稽核原則或信任原則變更


      • Privilege use
        使用者試圖運用使用者權限。

      • Process tracking
        事件的詳細追蹤資訊,例如程式啟動、處理程序結束、處理重複及間接物件存取。

      • System events
        當使用者重新啟動或關閉電腦,或當影響系統安全性安全性記錄的事件發生


    Introduction to Linux

    Basic Linux Structure and Commands

    • Kernel
      操作系統的核心,與硬體直接進行互動,管理系統與使用者的輸入輸出、處理器、文件、記憶體與設備。
    • Shell
      提供介面讓使用者與Kernel互動。

      • Bash
        Linux 預設的Shell。

      • Sh
        早期 UNIX 所用的 shell,由 Steven Bourne 發展。

      • Csh, Tcsh, Ksh
        語法與C語言類似的 shell 和一些衍生版本。

      • Zsh
        K shell 的改良版。

    Linux Basic Commands

    • Internal commands
      內建在Shell裏的程式,執行時不會產生額外的process,可透過type command 來確認,如果顯示It is a shell builtin則為內建指令。

    • External commands
      非屬內建指令的皆為外部指令,這類指令通常為一個二進位的執行檔或script檔案,儲存在/bin 或/usr/bin之下,執行時會產生process。

    • Basic commands

      • uname
        顯示目前運行中的作業系統。

        • uname -a
          額外顯示其他詳細資訊。

      • cd
        切換當前目錄。

        • cd path
          切換當前目錄至path

        • .可代表當前目錄
        • ..可代表上層目錄。

      • pwd
        顯示當前目錄。

      • tar
        建立壓縮檔。

        • -c flag 建立壓縮檔
        • -x flag 解壓縮檔案
        • -v flag 顯示執行過程
        • -f flag 指定名稱
        • Example
          • tar -cvf zip_file.tar from_path
            將from_path的檔案加入名為zip_file的壓縮檔

          • tar -xvf zip_file.tar
            解壓縮zip_file檔案

          • tar -tvf zip_file.tar
            檢視壓縮檔zip_file的內容。

      • grep
        在檔案中搜尋特定字串。

        • -i flag 搜尋不分大小寫
        • -v flag 搜尋不含特定字串
        • -A flag 搜尋到指定字串時額外輸出下面幾行
        • -r flag 遞迴搜尋目錄中檔案
        • Example
          • grep -i "string" target_file
            在target_file中搜尋字串string

          • grep -A number -i "string" target_file
            在target_file中搜尋字串string,若有結果額外輸出結果下三行

          • grep -r "string" path
            在指定路徑下遞迴搜尋檔案是否含有string字串。

      • find
        搜尋檔案名稱。

        • -iname flag 搜尋不分大小寫
        • -exec flag 對搜尋結果執行指令
        • -empty flag 搜尋空白檔案
        • -perm flag 搜尋具特定權限的檔案
        • Example
          • find -iname "file_name"
            搜尋名稱為file_name的檔案

          • find -iname "file_name" -exec command {} \;
            搜尋名稱為file_name的檔案,並對它們執行指令
            command
          • find path -empty
            在路徑 path中尋找空白檔案

          • find path -perm 0777
            在路徑path中尋找所有人皆擁有完全控制權限的檔案。

      • ls
        列出目錄內容。

        • Example
          • ls -ltr 
            依檔案最後修改時間列出目錄內容。

      • gzip
        製作 .gz壓縮檔。

        • Example
          • gzip file
            壓縮file檔案成file.gz

          • gzip -d zipped_file
            解壓縮 zipped_file檔案。

      • unzip
        解開壓縮檔。

        • Example
          • unzip zipped_file
            解壓縮 zipped_file檔案

          • unzip -l zipped_file
            檢視壓縮檔zipped_file裏的內容。

      • shutdown
        關閉系統電源。

        • - h flag
          讓系統停止運作或關閉電源

        • - r flag
          重新啟動系統

        • - F flag
          過程中檢查檔案系統。
        • Example
          • shutdown -h now
            立刻關機

          • shutdown -r 18:20
            在18:20重新啟動系統

          • shutdown -Fr +10
            在10分鐘後重新啟動系統,過程中檢查檔案系統

        • Notice
          在最近的Linux發行版本中 shutdown -r, reboot, init 6 皆經由相同的方式重新啟動系統。

      • ftp
        檔案傳輸工具。

        • Example
          • ftp ip
            連接到ip的FTP Server,進入交互模式

            • mget file_name
              下載檔案file_name

            • mls
              列出遠端目錄內容。

      • ps
        顯示當下的系統負載情形。

        • -e flag
          顯示所有程序

        • -f flag
          顯示詳盡資訊

        • -H flag
          依樹狀結構呈現資訊

        • -o flag
          指定顯示欄位。
        • --sort parameter
          依欄位進行排序,欄位名稱前面加"-"代表倒序

        • Example
          • ps -efH
            顯示目前所有執行程序的詳盡訊息,並以樹狀結構呈現

          • ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu
            顯示目前執行程序的欄位,並依cpu使用負載進行排序。

      • free
        顯示目前系統記憶體使用情形。

        • -m flag
          以MB為單位顯示資訊

        • -t flag
          顯示實體記憶體與SWAP的加總。
        • Example
          • free -mt
            顯示目前系統的實體記憶體與SWAP的使用情形。

      • top
        顯示即時的系統負載狀況。

        • -u flag
          僅顯示特定使用者啟動的程序

        • -o flag
          使用某項數值排列

        • Example
          • top -u user_name -o item_name
            顯示目前由使用者user_name啟動的程序。並依其item_name的數值進行排序

        • M key
          依記憶體使用比例進行排序

        • N key
          依PID進行排序

        • P key
          依CPU使用比例進行排序

        • T key
          依執行時間長短進行排序

        • q key
          離開互動模式。

      • df
        顯示檔案系統的硬碟使用情形。

        • -T flag 顯示磁區格式
        • -h 以人類易讀方式顯示容量。

      • kill
        終止程序。

        • Example
          • kill process_ID
            終止程序 process_ID

          • kill -9 process_ID
            強制終止程序 process_ID。

      • rm
        移除檔案或目錄。

        • -i flag 移除前彈出確認訊息
        • -r flag 移除目錄及其中所有檔案
        • -f flag 強制移除
        • Example
          • rm -i file_name
            移除檔案file_name,移除前會先詢問確認
          • rm -f file_name
            逕自移除檔案file_name
          • rm -r dir_name
            移除目錄dir_name與其中所有檔案

      • rmdir
        移除空白目錄。

        • Example
          • rmdir dir_name
            移除空白目錄dir_name。

      • cp
        複製檔案或目錄。

        • -p flag 
          保留檔案原有的權限、擁有者與異動時間

        • -i flag
          複製時若目的路徑存在同名檔案時,顯示確認訊息

        • Example
          • cp -p path_name1 path_name2
            將path_name1的檔案複製到path_name2 下,並依其使用者權限嘗試保留檔案原有屬性與權限。

      • mv
        移動目錄或檔案。

        • -i flag
          移動時若目的路徑存在同名檔案時,顯示確認訊息

        • -v flag
          顯示移動過程的資訊

        • -u flag
          移動時若目的路徑存在同名檔案時,來源端檔案較新則直接覆蓋檔案

        • Example
          mv path_name1 path_name2
          將path_name1的檔案移動到path_name2 下。

      • cat
        顯示文字檔案內容或合併檔案內容。

        • example
          • cat file_name
            顯示檔案file_name裏的內容

          • cat file_name1 file_name2file_name3
            將檔案file_name1與file_name2的內容合併至file_name3。
          • cat file_name1 >>file_name2
            將檔案file_name1 的內容寫至file_name2的結尾。

      • mkdir
        建立空白目錄。

        • -p flag
          建立目錄時將指定路徑中,不存在的上層目錄一併建立起來

        • example
          • mkdir dir_name1 dir_name2 dir_name3
            建立dir_name1, dir_name2, dir_name3 三個目錄

          • mkdir -p dir_parent/dir_child
            在dir_parent目錄下建立子目錄dir_child,若dir_parent不存在將一併建立。

      • ifconfig
        檢視與設定網路介面。

        • -a flag
          顯示所有網路介面

        • Example
          • ifconfig -a
            顯示所有(包含已停用的)網路介面。
          • ifconfig interface_name [up|down]
            將網路介面 interface_name開啟或關閉
          • ifconfig interface_name ip netmask mask broadcast b_ip
            給予網路介面 interface_name IP位址 ip 遮罩mask與廣播位址b_ip。

      • whatis
        顯示指令簡介,精簡版的man,但是在安裝的Kali2016上顯示不出東西就是了。((汗

      • locate
        根據Linux定期記錄進資料庫的資料對檔案所在目錄進行搜索,由於資料庫非即時更新,有時會出現找不到的情況,但速度很快。

        • updatedb command
          依據/etc/updatedb.conf的設定進行搜尋,更新/var/lib/mlocate內的資料庫檔案

        • Example
          • locate  -i keyword
            搜尋帶有關建字keyword的檔案,過程忽略大小寫

          • locate -r reg_exp
            以正規表示式進行搜尋

        • 其他同性質指令
          • which
            在使用者設定的PATH變數所載的目錄去搜尋可執行檔

          • whereis
            與locate相似

          • find
            如前述,相比之下速度慢很多。

      • tail
        顯示檔案結尾。

        • -n flag 
          僅顯示檔案部份內容

        • -f flag
          即時顯示檔案內容

        • Example
          • tail -n line_num file_name
            顯示檔案file_name的倒數line_num行

          • tail -f file_name
            即時顯示檔案file_name的內容,按Ctrl+C退出。

      • less
        顯示文字檔案內容,檢視大檔案時很有效率,因其不會一次性載入整個檔案。

        • Example
          • less file_name
            顯示檔案file_name的內容,檢視過程中Ctrl+F與Ctrl+B可以換頁。

      • su
        切換至其他使用者。

        • Example
          • su - user_name -c "command"
            開啟帳號user_name的shell環境,執行指令command,結束後關閉。

      • wget
        從網際網路下載檔案。

        • Example
          • wget -O file_name file_URL
            下載位於file_URL的檔案並命名成file_name。

    Samba

    一種用來讓UNIX系列的作業系統的NFS (Network Fils System)與微軟Windows作業系統的SMB(Server Message Block)/CIFS(Common Internet File System)網路協定做連結的免費軟體,可藉由apt-get安裝更新。

    安裝完成後需修改/etc/samba/smb.conf的內容,並在Share Definitions區塊加入下列設定(範例):
    [folder_name]
    path = /samba/folder_name
    browsable =yes
    writable = yes
    guest ok = yes
    read only = no
    force user = nobody
    創建目錄
     
    mkdir -p /samba/folder_name
    chmod -R 775 /samba/folder_name/
    chown -R nobody:nogroup /samba/folder_name/
    service smbd restart
    創建權限目錄與用戶

    addgroup folder_group
    useradd folder_adm -G folder_group
    smbpasswd -a folder_adm
    mkdir -p /samba/folder_name
    cd /samba
    chmod -R 775 folder_name
    chown root:folder_group folder_name
    service smbd restart

    沒有留言:

    張貼留言