Linux系統安全加固(一)
去年8月,某所網站遭黑客攻擊癱瘓雖然港交所隨後及時啟用備用系統,但還是致使7支股票1支債卷被迫停牌,次日再次遭受攻擊而癱瘓;在去年年底繼CSDN信息安全出現之後,網上更是傳出包括人人網等多家公司的用戶被公開,日益凸顯的網路安全事件說明了目前基礎網路還面臨著諸多威脅,木馬殭屍網路終端惡意軟體, 跨境化網路攻擊都是直接威脅.因此,確保系統安全變得尤為重要,接下來在具體介紹Linux系統的安全性之前,首先介紹一些信息安全的基礎知識,這些基礎知識看似枯燥,但對於今後加固Linux系統,保證系統安全運行尤為重要. 一、Linux的安全機制 近年來,Linux系統由於其出色的性能和穩定性、開放源代碼的靈活性和可擴展性,以及較低廉的成本,而受到計算機工業界的廣泛關注和應用.在安全性方面,Linux內核提供了經典的Unix自主訪問控制(root用戶、用戶ID安全機制), 以及部分支持了POSIX.1e標準草案中的Capabilities安全機制.自主訪問控制(Discretionary Access Control,DAC)是指主體對客體的訪問許可權是由客體的屬主或超級用戶決定的,此許可權一旦確定,將作為以後判斷主體對客體是否有及有什麼許可權的惟一依據.只有客體的屬主或超級用戶才有權更改這些許可權.傳統Linux系統提供DAC支持,客體在Linux系統當中主要是指文件、目錄等系統資源,主體是指訪問這些資源的用戶或進程.控制粒度為客體的擁有者、屬組和其他人.下面就這樣模型的三個要素,即客體(文件)、主體(文件)和訪問許可權一一介紹. 1.文件系統及訪問許可權 Linux為每個文件都分配了一個文件所有者,稱為文件主,並賦予文件主惟一的註冊名.對文件的控制取決於文件主或超級用戶(root).文件或目錄的創建者對所創建的文件或目錄擁有特別使用權,文件的所有關係是可以改變的,文件或目錄的所有權可以轉讓給其它用戶,但只有文件主或root用戶才有權改變文件的所有關係. 文件的所有權標誌是用戶ID(UID).chown命今可以更改某個文件或目錄的所有權.例如,超級用戶把自己的一個文件拷貝給用戶cg,為了讓用戶cg能夠存取這個文件,超級用戶(root)應該把這個文件的屬主設為cg,否則,用戶cg就無法存取這個文件. chown命令的語法格式如下: chown [cfhvR] 用戶 或 組 [文件1] [文件2].... 用戶可以是用戶名或用戶ID.文件是以空格分開的、要改變許可權的文件列表,可以用通配符表示文件名.如果改變了文件或目錄的所有權,原文件主將不再擁有該文件或目錄的許可權.系統管理員經常使用chown命令,在將文件拷貝到另一個用戶的目錄下以後,讓用戶擁有使用該文件的許可權. 在Linux下,每個文件又同時屬於一個用戶組.當創建一個文件或目錄時,系統就會賦予它一個用戶組關係,用戶組的所有成員都可以使用此文件或目錄.文件用戶組關係的標誌是GID.文件的GID只能由文件主或超級用戶(root)來修改.chgrp命令可以改變文件或目錄的擁有者或所屬群組,其語法格式如下: chgrp [cfhRv] group文件名或目錄 其中,group是用戶組ID;文件名是以空格分開的,它支持通配符. Linux系統中的每個文件和目錄都有訪問許可許可權,用它來確定誰可以通過何種方式對文件和目錄進行訪問及操作.訪問許可權規定三種不同類型的用戶,即文件主(owner)、同組用戶(group)、可以訪問系統的其它用戶(others).訪問許可權規定三種訪問文件或目錄的方式,即讀 (r)、寫 (w)、可執行 (x). 對於文件,讀許可權(r)表示只允許指定用戶讀其內容,而禁止對其做任何的更改操作.將所訪問的文件內容作為輸入的命令需要有讀的許可權,例如命令more、head、cat等.寫許可權(w)表示允許指定用戶打開並修改文件,例如命令cp、vi、mv等.執行許可權(x)允許指定用戶將該文件作為一個程序執行.可以使用“ls -l”查看一個文件的詳細屬性. # ls -l /etc/passwd -rw-r--r-- 1 root root 1606 Aug 25 20:10 /etc/passwd 對於目錄,讀許可權(r)可以列出存儲在該目錄下的文件,即讀目錄內容列表.這一許可權允許Shell使用文件擴展名字元列出相匹配的文件名.寫許可權(w)表示允許從目錄中刪除或添加新的文件,通常只有目錄主才有寫許可權.執行許可權(x)允許在目錄中查找,並能用cd命令將工作目錄改到該目錄.使用“ls - ld”命令可以查看一個目錄的詳細屬性. # ls -ld /var drwxr-xr-x 14 root root 360 Aug 25 20:30 /var 二、用戶和賬號管理 Linux是一個多用戶系統,因此對用戶的管理是系統管理的基本組成部分.安裝Linux的用戶很可能就是該系統的管理員,也就是許可權最高的root.通過對用戶的管理,分清了用戶之間的責、權、利,保證了系統安全.對於如何添加和刪除一個用戶等常規的管理,這裡就不再贅述了,下面重點介紹一下同用戶管理關係密切的幾個配置文件. 1. /etc/passwd文件 用“ls -l”命令可以看到該文件屬主是root用戶,只有root用戶能對該文件進行寫操作,其它用戶只能進行讀的操作. /etc/passwd文件當中以行為單位,每行是一個記錄保存一個用戶的信息,參數之間用冒號隔開,用cat可以查看其內容. # cat /etc/passwd at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash bin:x:1:1:bin:/bin:/bin/bash cyrus:x:96:12:User for cyrus-imapd:/usr/lib/cyrus:/bin/bash daemon:x:2:2:Daemon:/sbin:/bin/bash dhcpd:x:102:65534:DHCP server daemon:/var/lib/dhcp:/bin/false ftp:x:40:49:FTP account:/srv/ftp:/bin/bash games:x:12:100:Games account:/var/games:/bin/bash gdm:x:50:106:Gnome Display Manager daemon:/var/lib/gdm:/bin/false sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin notes:x:500:500::/home/notes:/bin/bash .................... 上面代碼 ◆ 第一列是用戶名; ◆ 第二列是用戶的密碼; ◆ 第三列是用戶的數字ID,即用戶的UID; ◆ 第四列是用戶的主組的ID,即用戶的GID; ◆ 第五列是用戶的全名,或者是註釋; ◆ 第六列是用戶主目錄的位置,這個目錄通常位於/home目錄下, 目錄名與用戶ID 相同;第七列是用戶的默認控制台Shell. 注意,在上面的文件當中,所有用戶的Password列是一個“x”,但這並不是說用戶的密碼是x .這是早期的Unix系統密碼是以一個強度比較弱的加密手段將密碼加密后, 以文本的形式存儲在這個文件中.現在已經很少有人再這樣做了.Linux系統採取的解決的方法是,在/etc/passwd文件中存放密碼的位置只是存放一個“x”,而經過加密的密碼存放於/etc/shadow文件中.這項技術通過將用戶信息與密碼數據分離而提高了安全性.並且採用了強度更高的加密演算法來保存密碼.一個映像密碼條目的樣例如下所示: # cat /etc/shadow at:!:15200:0:99999:7::: bin:*:15200:::::: cyrus:!:15200:0:99999:7::: daemon:*:15200:::::: dhcpd:!:15200:0:99999:7::: ftp:*:15200:::::: ....... news:*:15200:::::: nobody:*:15200:::::: ntp:!:15200:0:99999:7::: postfix:!:15200:0:99999:7::: root:$2a$05$KXPwlTHjhgw4w0nY07zHx.6RlOpdmudzlRh6LfUp2tvjwyGglHP5y:15200:::::: sshd:!:15200:0:99999:7::: 2./etc/shadow 文件 /etc/shadow的格式與/etc/passwd類似,由若干個欄位組成,欄位之間用“:” 隔開,這些欄位格式如下:登錄名:加密口令:一次修改時間:最小時間間隔:最大時間間隔:警告時間;不活動時間:失效時間:標誌每個欄位含義如下: ◆登錄名是與/etc/passwd文件中的登錄名相一致的用戶賬號. ◆ 口令欄位存放的是加密后的用戶口令字.如果為空,則對應用戶沒有口令,登錄時不需要口令; ◆ 一次修改時間表示的是從某個時刻起,到用戶一次修改口令時的天數.時間起點對不同的系統可能不一樣. ◆ 最小時間間隔指的是兩次修改口令之間所需的最小天數. ◆ 最大時間間隔指的是口令保持有效的最大天數. ◆警告時間欄位表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數. ◆ 不活動時間表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數. ◆ 失效時間欄位給出的是一個絕對的天數,如果使用了這個欄位,那麼就給出相應賬號的生存期.期滿后,該賬號就不再是一個合法的賬號,也就不能再用來登錄了. 3.系統審計 Linux的日誌文件用來記錄整個操作系統使用狀況,他們是黑客攻擊的重點目標,作為一個Linux網路系統管理員要充分用好以下幾個日誌文件. ◆ /var/log/lastlog文件 記錄進入系統的用戶信息,包括登錄的時間、登錄是否成功等信息.這樣用戶登錄后只要用lastlog命令查看一下/var/log/lastlog文件中記錄的所用賬號的登錄時間,再與自己的用機記錄對比一下就可以發現該賬號是否被黑客盜用. 可以用以下命令查看其空間佔用情況本文出自 「李晨光原創技術博客」 博客,謝絕轉載!
[火星人 ] Linux系統安全加固(一)已經有427次圍觀