主機加固
主機加固(host harden)究竟指什麼?在計算機安全領域內,包含這樣幾個意思,如經過傳統的關閉沒必要要的服務,防火牆或者強制認證來限制對系統的網絡接入。幾乎全部人只要安裝了現代版本的Microsoft Windows(Microsoft Corp將Windows 2000以前的操做系統稱做經典Windows,而Windows 2000~Windows Server 2003 r2稱做現代Windows,以後的稱做下一代Windows),都已經自帶了基本的防火牆,在下一代Windows當中——Windows Vista、Windows Server 2008、Windows 7——自帶的防火牆,已經擺脫了「基本」二字,提供更加靈活、安全的主機防禦功能。一種易用的防火牆也內嵌在了MacOSX系統當中。近些年來,各類Linux發行版也都具備強大的防火牆功能。
主機加固也能夠是指某種服務只在特定的時間對特定的用戶開放。也多是指通常只給用戶較低權限進行操做,而只在須要的時候才賦予用戶更高的權限。大多數Unix用戶都熟悉su命令,Ubuntu的忠實愛好者跟用戶們可能更習慣sudo命令。對於Windows系統用戶來平,能夠選擇非特權用戶運行系統,而經過run as(以…運行)服務來將程序運行在Administrator(管理員)權限之下(大多數人不會這樣作),而是選擇以Administrator[管理員]帳戶登陸系統而後進行平常操做。
也能夠經過測試系統一般的脆弱點,並相應作些安全對策來進行主機加固。例如,能夠檢查是否全部用戶的密碼都是健壯口令,這種口令極難被猜想與破譯。也能夠運行自動升級軟件,以保證系統及時從廠商或第三方被信任機構進行了安全更新。同時,能夠對系統的配置進行安全審計,打開或關閉內部子系統來防禦計算機。
主機加固也指可以在發生情況時下降潛在損害。在類Unix系統上,能夠這樣來作:在公共目錄/tmp禁止執行文件(或腳本、應用程序)。繼續深刻,還有一種加固技術涉及修改內核,給內存塊標記爲「不可執行」來防止執行內存代碼。或者經過chroot命令對進程或網絡服務進行分離,也叫「沙盒(sandbox)」,以此來下降損害。作的更絕的一點,甚至能夠經過使用虛擬機來進程脫離所在系統。
上述文字包羅如下幾個方面:
l
控制監聽服務和端口(可能利用防火牆);
l
將不須要的服務關閉;
l
使用某種訪問控制機制;
l
下降漏洞程序和可能引發損害。
控制服務
關閉某項服務應該的極其簡單的,但使人遺憾的是,幾乎安裝的每一個程序都但願在系統啓動或用戶登陸的時候可以自動激活運行本身——聊天客戶端、音樂播放器、瀏覽器或某種下載軟件;總之,全部程序都但願本身的重要的。
在類Unix系統上,狀況稍微複雜一些。幾乎全部自啓動程序都經過系統init或inetd(Linux系統上是xinetd)守護進程開始運行。一些Linux發行版本,諸如Red Hat和Ubuntu,擁有強大的GUI(Graphic User Interface,圖形用戶界面/接口)實用工具,經過這些工具能夠顯示出系統在啓動時將會加載哪些東西;但也有一些,如Slackware,只有CLI(Command Line Interface,命令行界面/接口)形式的命令。在任何狀況下,還須要檢查是否經過cron或守護進程進行自啓動了一些東西。還應該檢查各類放置守護進程文件的地方,假如不十分了解,能夠在/var目錄下使用命令find來進行查找:
[huaplee@mail]# find /var –iname 「*cron*」
控制服務守護進程最困難的部分是判斷哪些是系統運行須要的,哪些不須要,能夠關閉。假如不熟悉你的系統;就會不敢動,擔憂由於關閉必要的服務而使系統沒法啓動或出現故障。實際上,大色數類Unix系統只須要不多的服務來啓動系統。不少發行版本啓動了全部X11的東西(字體服務、事件守護進程、X顯示管理等),或者啓動了沒必要要的打印服務等。假如這是一臺服務器,可以經過遠程接人,那麼最好將這些都關掉。系統真的須要郵件服務器仍是隻須要將郵件中繼到另一臺SMTP服務器?明星的建議是,「只運行必需的」。
關閉不須要的服務
看一下系統,是否運行了50種不一樣進程,並且你對這些進程一點都不瞭解?(固然對於下一代Windows,尤爲是Windows Vista,開機以後運行的進程數,每每遠遠大於50個)若是咱們隨便找一臺Windows XP系統,並在其CMD窗口下運行netstat –aon,會發現什麼?
Active Connections
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 3652
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 772
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 520
TCP 192.168.1.100:139 0.0.0.0:0 LISTENING 4
TCP 192.168.1.100:1046 209.107.214.65:80 CLOSE_WAIT 2880
TCP 192.168.1.100:1047 209.107.214.24:80 CLOSE_WAIT 2880
TCP 192.168.1.100:1048 77.67.30.42:80 CLOSE_WAIT 2880
TCP 192.168.1.100:1076 121.194.13.12:22 ESTABLISHED 3060
TCP 192.168.1.100:1470 211.103.156.236:80 TIME_WAIT 0
TCP 192.168.1.100:1497 121.10.120.174:9877 CLOSE_WAIT 3652
TCP 192.168.1.100:1508 219.159.248.70:80 TIME_WAIT 0
TCP 192.168.1.100:1511 221.238.25.105:80 TIME_WAIT 0
TCP 192.168.1.100:1512 61.183.55.220:80 TIME_WAIT 0
TCP 192.168.1.100:1524 221.238.25.93:3076 TIME_WAIT 0
TCP 192.168.1.100:1526 61.183.55.220:80 TIME_WAIT 0
TCP 192.168.1.100:1548 199.7.52.190:80 ESTABLISHED 4044
TCP 192.168.1.100:1564 202.108.43.246:80 TIME_WAIT 0
TCP 192.168.1.100:1576 221.238.25.105:80 TIME_WAIT 0
TCP 192.168.1.100:1584 221.238.25.141:80 TIME_WAIT 0
TCP 192.168.1.100:1630 221.238.25.92:80 TIME_WAIT 0
TCP 192.168.1.100:1694 65.55.116.181:80 TIME_WAIT 0
這些都是什麼?爲何它們都運行在和監聽在全部這些端口上?若是想了解哪些進程在使用網絡,那就開打
CMD
窗口,而且運行
netstat –aonbv
命令,其中,
-n
關閉了
DNS
解析(爲了提升命令執行的響應速度),
-o
顯示父進程的進程標識符,
-b
和
-v
聯合使用顯示正在使用鏈接大執行文件名。
GNU/Linux
管理員應該習慣於
netstat –aopl –number-hosts
,效果同樣,只是命令的選項不太同樣罷了。假如系統被嚴重***了,或者運行了
rootkit
,那就不要指望
netstat
可以顯示出真實數據。
Windows
管理能夠下載
TCPView
小工具,以下圖所示,能夠從微軟官方站點(
http://www.microsoft.com/technet/sysinternals/utitlities/tcpview.mspx
)。我十分喜歡這個工具,它很像一個將
netstat
和任務管理員功能結合的工具,能夠經過右擊進程來檢查進程的屬性或者殺掉進程。
若是計算機被人經過利用
MS RDP
漏洞安裝
VNC
而被控制了,在這種狀況下,會安裝
BitTorrent
之類的客戶端和
SMTP
中繼來發送一些垃圾郵件。謝天謝地的是,系統運行在虛擬機上,咱們保存了被攻主機的壓迫映像以供後續分析,而後從新導入備份映像,打上補丁,編輯防火牆阻止經過
MS RDP
端口的鏈接。