欧美性猛交黑人xxxx,成人毛片一区二区三区,久久综合九色综合精品,男的把j放进女人下面视频免费

網站安全培訓

  • 發布于:2022-12-09
  • 188 人圍觀

本文檔與站點服務器安全有關,由本人根據實際工作經驗編寫而成;這里只是一個初稿,以后有時間我會更新它。 
站點服務器通常指托管在IDC機房的服務器,如果你有服務器托管在IDC那里,就不得不對它們的安全予以關注。如果你是網絡程序員或系統管理員,本文或許會對你有所幫助,如果你是專業安全管理員,那么看一下本文也無妨。 
站點安全應該包括幾部分:物理安全、網絡安全、系統安全以及安全管理,下面從這幾方面予以闡述。 

一. 物理安全 
服務器運行的物理安全環境是很重要的,很多人忽略了這點。物理環境主要是指服務器托管機房的設施狀況,包括通風系統、電源系統、防雷防火系統以及機房的溫度、濕度條件等。這些因素會影響到服務器的壽命和所有數據的安全。我不想在這里討論這些因素,因為在選擇IDC時你自己會作出決策。 
在這里著重強調的是,有些機房提供專門的機柜存放服務器,而有些機房只提供機架。所謂機柜,就是類似于家里的櫥柜那樣的鐵柜子,前后有門,里面有放服務器的拖架和電源、風扇等,服務器放進去后即把門鎖上,只有機房的管理人員才有鑰匙打開。而機架就是一個個鐵架子,開放式的,服務器上架時只要把它插到拖架里去即可。這兩種環境對服務器的物理安全來說有著很大差別,顯而易見,放在機柜里的服務器要安全得多。 
如果你的服務器放在開放式機架上,那就意味著,任何人都可以接觸到這些服務器。別人如果能輕松接觸到你的硬件,還有什么安全性可言?以下是幾個不安全的事例: 
很多Windows服務器采用終端服務進行管理,在一個機架式的機房里,你可以隨便把顯示器接在哪臺服務器上。如果你碰巧遇到某臺機器的管理員或使用者正通過終端使用這臺機器,那么他的操作你可以一覽無余。甚至,你可以把鍵盤接上去,把他kill off,然后完全控制這臺機器。當然,這種事情比較少見,但不意味著不可發生。 
另外,很多Unix系統的管理員在離開機房時,沒有把root或其他帳號的shell從鍵盤退出,這樣你只要把鍵盤和顯示器接上去,就完全可以獲取這個shell的權限。這可比遠程攻擊獲取系統權限容易得太多。我有次在機房時想要一個unix shell臨時使用一下,于是我把顯示器在旁邊機架的幾臺服務器上接了一下,很快就發現一個沒有退出的root shell,我把鍵盤接上去,做完我自己的事后,幫他退出了這個shell。如果我是一個不安好心的人,我完全可以在他的服務器里不帶任何痕跡的安裝一個木馬(RootKit)。 
某天我看到一個公司的維護人員在機房調試專線時,懷疑是協議轉換儀有問題,于是他毫不猶豫的把旁邊一個機架上的協議轉換儀拔下來,接到他自己的專線上用于調試。被破壞的服務器數據傳輸會中斷幾分鐘,這對某些公司可能是致命的,而他們的服務器管理人員可能到死也查不出原因! 
還有,用一張Linux光盤引導Linux系統,你可以毫無障礙的重新獲取主機的root權限;你可以無意中碰動別人的電源,等等,不在這里贅述。所有這些是要說明一點,放在開放機架上的服務器是不安全的。如果你的服務器硬件可以讓其他人輕易接觸,那么不出事是你的幸運,出事了你也找不到原因或找不到責任人。 
而放在密封式機柜里的服務器會安全很多,一般情況下,你的所有服務器放在一起(同一個機柜或者幾個機柜)是明智之舉,機柜里不要有其他公司的服務器。如果你的服務器只有有限的幾臺,那么放在機柜里也會安全很多。因為不是任何人都可以打開機柜接觸到你的硬件,就算同一個機柜的其他公司的服務器的維護人員有這個機會,但風險也要小得多。而且,就算出事了,你也可以追查到責任人。 
有一次我們的服務器因為電源斷掉,而中斷幾個小時,我們根據系統日志很快判斷出服務器的down機情況,在追查責任時,我首先想到是IDC機房的維護人員的責任,因為在我們那個機柜里沒有其他公司的服務器,別人不會接觸到那里面的電源。后來經查實,果然是該IDC的電工在弄電時不小心把我們的服務器電源斷掉,他們向我們出具了道歉聲明。而如果在一個開放式機架的機房里,碰到這樣的情況你無從查起。 
如果你的服務器只能放在開放式機架的機房,那么你可以這樣做:1)將電源用膠帶綁定在插槽上,這樣避免別人無意中碰動你的電源;2)安裝完系統后,重啟服務器,在重啟的過程中把鍵盤和鼠標拔掉,這樣在系統啟動后,普通的鍵盤和鼠標接上去以后不會起作用(USB鼠標鍵盤除外)3)跟機房值班人員搞好關系,不要得罪機房里其他公司的維護人員。這樣做后,你的服務器至少會安全一些。 

二. 網絡安全 
網絡安全是指你機房的服務器要有合理的安全拓撲結構。安全的網絡環境會讓你的系統管理任務輕松很多,否則你會時刻提心吊膽。例如,如果你的NFS服務器直接面對互聯網,那么你的麻煩就來了。因此,在服務器的前面,至少要有網絡屏蔽設施,或稱為防火墻。 
從頭部署新的防火墻策略是一件復雜的事情,你要綜合考慮許多方面。一般來說,防火墻有兩種工作模式,稱為路由模式和透明模式,在路由模式下,防火墻就象一個路由器,能進行數據包的路由。不同的是,它能識別網絡第四層協議(即傳輸層)的信息,因此它能基于TCP/UDP端口來進行過濾。在該模式下,防火墻本身要配備兩個或多個網絡地址,你的網絡結構會被改變。在透明模式下,防火墻更象一個網橋,它不干涉網絡結構,從拓撲中看來,它似乎是不存在的(因此稱為透明)。但是,透明模式的防火墻同樣具備數據包過濾的功能。透明模式的防火墻不具備IP地址。這兩種模式的防火墻都提供網絡訪問控制功能,例如你可以在防火墻上設置,過濾掉來自因特網的對服務器的NFS端口的訪問請求。 
在網絡中使用哪種工作模式的防火墻取決于你的網絡環境。一般來說,如果你的服務器使用真實IP地址(該地址一般是IDC分配給你的),會選擇防火墻的透明模式。因為在該模式下,你的服務器看起來象直接面對互聯網一樣,所有對服務器的訪問請求都直接到達服務器。當然,在數據包到達服務器之前會經過防火墻的檢測,不符合規則的數據包會被丟棄掉(從服務器編程的角度看,它不會覺察到數據包實際已被處理過)。 
實際上為了安全起見,很多服務器都采用私有IP地址(例如172.16.0.0/16和192.168.0.0/24都屬于私有IP地址),如果這些服務器不必對外提供服務,那么就最安全不過了,如果要對外提供服務,就有必要通過防火墻的NAT(網絡地址轉換)來滿足來自因特網的訪問要求。NAT是防火墻的一項功能,它實際上工作在路由模式下。大多數防火墻都會區分所謂的正向NAT和反向NAT,所謂正向NAT就是指從內網出去的數據包,在經過防火墻后,包頭會被改寫,源IP被改寫成防火墻上綁定的IP地址(或地址池,肯定是公網真實IP),源端口也會有所改變,回來的數據包經過同樣處理,這樣就保證內網具有私有IP的主機能夠與因特網進行通信。在反向NAT的實現中,會將服務器的公網IP綁定在出口處的防火墻上,服務器只會使用一個私有IP,防火墻會在它的公網IP和這個私有IP之間建立一個映射,當外網對這臺服務器的請求到達防火墻時,防火墻會把它轉發給該服務器。當然,在轉發之前,會先匹配防火墻規則集,不符合規則的數據包將被丟棄。 
使用反向NAT,會大大提高服務器的安全性。因為任何用戶的訪問都不是直接面對服務器,而是先要經過防火墻才被轉交。而且,服務器使用私有IP地址,這總比使用真實地址要安全。在抗拒絕服務攻擊上,這種方式的成效更顯然。但是,相對于透明模式的防火墻,采用反向NAT方式的防火墻會影響網絡速度。如果你的站點訪問流量超大,那么就不要使用該種方式。值得一提的是,CISCO的PIX在NAT的處理上性能異常卓越。 
另外一種情況是,服務器使用真實IP地址,防火墻配置成路由模式,不使用它的NAT功能。這種情況雖然可以實現,但會使你的網絡結構變得很復雜,似乎也不會帶來效益的提高。 
大多數IDC的機房不提供防火墻服務,你需要自己購買和配置使用防火墻。你完全可以按透明模式或NAT模式來配置,具體怎么配取決于你的實際情況。有些IDC公司會提供防火墻服務,作為他們吸引客戶的一個手段。一般來說,他們的防火墻服務會收費。 
如果你的服務器在IDC提供的公共防火墻后面,那么就有必要仔細考慮你的內網結構了。如果IDC提供給你的防火墻使用透明模式,也即是你的服務器全部使用真實IP地址,在這種情況下,除非你的服務器數量足夠多(象我們在北京有500多臺),那么在你的邏輯網段里肯定還有其他公司的主機存在。這樣,雖然有防火墻,你的系統管理任務也不會輕松多少,因為你要受到同一網段里其他公司主機的威脅。例如,你的服務器的IP地址段是211.139.130.0/24,你使用了其中的幾個地址,那么在這個網段里還會有200多臺其他公司的主機,它們與你的主機同處于一個防火墻之后,雖然防火墻可以屏蔽來自因特網的某些訪問,然而,內部這些主機之間的相互訪問卻沒有任何屏蔽措施。于是,其他公司不懷好意的人可以通過他們的主機來攻擊你。或者,網絡中一臺主機被黑客入侵,則所有服務器都會面臨嚴重威脅。在這樣的網絡中,你不要運行NFS、Sendmail、BIND這樣的危險服務。 
這種問題的解決方法是自己購買防火墻,并配置使用透明模式,不要使用公用防火墻的透明模式。 
有的IDC公司會給你提供NAT方式的防火墻,你需要在服務器上設置私有IP地址,然后由防火墻來給服務器做地址轉換。這種情況與上述情況存在同樣的問題,那就是,在你的服務器所在的邏輯網段里還有其他公司的主機。例如在172.16.16.0/24這個網段可容納254臺主機,你的服務器使用了其中的幾個IP,那么可能還有200多臺其他公司的主機與你的服務器在同一個網段里。這樣,雖然對外有防火墻保護,但無法防范來自內網的攻擊。 
要解決這個問題,你不必自己購買防火墻。既然私有IP是可以任意分配的,那么你可以向IDC單獨要一個網段,例如172.16.19.0/24網段,把你的服務器都放在這個網段里,其中不要有其他公司的主機。這樣一來,你的內網也無懈可擊了。 
實際上,如果你有一個大的UNIX主機的網絡,那么沒必要讓每臺主機都在防火墻上打開登陸端口。你可以特別設置一臺或兩臺主機做為登陸入口,對其他主機的訪問都必須使用入口主機作為跳板。這樣做犧牲了使用的方便性,但帶來更強的安全性。當然,前提是你必須管理好入口主機。有一種電子令牌卡適合這種應用,它是一張隨身攜帶的卡,每隔一段時間(這個時間通常很小,幾分鐘或者幾十秒)動態產生一個口令,你只有使用這個口令才能登陸主機,并且該口令很快就會失效。 
不僅是UNIX主機,對Windows主機的終端管理也可以采用這種跳板的方式。但Windows的終端比UNIX的shell要麻煩得多,如果你不愿犧牲太多的方便性,那么就不要這樣做。 

三. 系統安全 
系統安全是站點安全的主要部分。如果你的系統存在明顯漏洞,那么再好的物理環境和網絡環境也保不了你。一個很明顯的問題是,如果你的WEB服務器存在安全漏洞,你在沒有將其修補的情況下對外提供服務,那么不管你的防火墻有多堅固,也會很快被入侵。因此,系統管理員在保證系統功能穩定的同時,不得不花時間來研究系統的安全問題。 
我所接觸的服務器主要有Windows2000 Server、Freebsd、Linux和Solaris。第一種是微軟的產品,方便好用,但是,你必須要不斷的patch它。Freebsd是一種優雅的操作系統,它簡潔的內核和優異的性能讓人感動。Linux和Freebsd一樣,是免費的操作系統,它們都廣泛使用GNU(一個偉大的組織)的實用工具集,Linux容易上手,但不如Freebsd簡潔。Solaris是SUN的商用操作系統,關于SUN OS的文章在網上被貼得到處都是,但遺憾的是,它看起來并不快,而且,你也要經常對它打補丁。 
關于這幾種操作系統的安全,每種都可以寫一本書。我不會在這里對它們進行詳細描述,只講一些系統初始化安全配置。 

1. Windows2000 Server的初始安全配置 
Windows的服務器在運行時,都會打開一些端口,如135、139、445等。這些端口用于Windows本身的功能需要,冒失的關閉它們會影響到Windows的功能。然而,正是因為這些端口的存在,給Windows服務器帶來諸多的安全風險。遠程攻擊者可以利用這些開放端口來廣泛的收集目標主機信息,包括操作系統版本、域SID、域用戶名、主機SID、主機用戶名、帳號信息、網絡共享信息、網絡時間信息、Netbios名字、網絡接口信息等,并可用來枚舉帳號和口令。今年8月份和9月份,微軟先后發布了兩個基于135端口的RPC DCOM漏洞的安全公告,分別是MS03-026和MS03-039,該漏洞風險級別高,攻擊者可以利用它來獲取系統權限。而類似于這樣的漏洞在微軟的操作系統中經常存在。 
解決這類問題的通用方法是打補丁,微軟有保持用戶補丁更新的良好習慣,并且它的Windows2000 SP4安裝后可通過Windows Update來自動升級系統補丁。另外,在防火墻上明確屏蔽來自因特網的對135-139和445、593端口的訪問也是明智之舉。 
Microsoft的SQL Server數據庫服務也容易被攻擊,今年3月份盛行的SQL蠕蟲即使得多家公司損失慘重,因此,如果安裝了微軟的SQL Server,有必要做這些事:1)更新數據庫補丁;2)更改數據庫的默認服務端口(1433);3)在防火墻上屏蔽數據庫服務端口;4)保證sa口令非空。 
另外,在Windows服務器上安裝殺毒軟件是絕對必須的,并且要經常更新病毒庫,定期運行殺毒軟件查殺病毒。 
不要運行不必要的服務,尤其是IIS,如果不需要它,就根本不要安裝。IIS歷來存在眾多問題,有幾點在配置時值得注意:1)操作系統補丁版本不得低于SP3;2)不要在默認路徑運行WEB(默認是c:/inetpub/wwwroot);3)以下ISAPI應用程序擴展可被刪掉:.ida .idq .idc .shtm .shtml .printer。 

2. Freebsd的初始安全配置 
Freebsd在設計之初就考慮了安全問題,在初次安裝完成后,它基本只打開了22(SSH)和25(Sendmail)端口,然而,即使是Sendmail也應該把它關閉(因為歷史上Sendmail存在諸多安全問題)。方式是編輯/etc/rc.conf文件,改動和增加如下四句: 
sendmail_enable="NO" 
sendmail_submit_enable="NO" 
sendmail_outbound_enable="NO" 
sendmail_msp_queue_enable="NO" 
這樣就禁止了Sendmail的功能,除非你的服務器處于一個安全的內網(例如在防火墻之后并且網段中無其他公司主機),否則不要打開Sendmail。 
禁止網絡日志:在/etc/rc.conf中保證有如下行: 
syslogd_flags="-ss" 
這樣做禁止了來自遠程主機的日志記錄并關閉514端口,但仍允許記錄本機日志。 
禁止NFS服務:在/etc/rc.conf中有如下幾行: 
nfs_server_enable="NO" 
nfs_client_enable="NO" 
portmap_enable="NO" 
有些情況下很需要NFS服務,例如用戶上傳圖片的目錄通常需要共享出來供幾臺WEB服務器使用,就要用到NFS。同理,要打開NFS,必須保證你的服務器處于安全的內網,如果NFS服務器可以被其他人訪問到,那么系統存在較大風險。 
保證/etc/inetd.conf文件中所有服務都被注銷,跟其他系統不同,不要由inetd運行任何服務。將如下語句加進/etc/rc.conf: 
inetd_enable="NO" 
所有對/etc/rc.conf文件的修改執行完后都應重啟系統。 
如果要運行Apache,請編輯httpd.conf文件,修改如下選項以增進安全或性能: 
1) Timeout 300--->Timeout 120 
2) MaxKeepAliveRequests 256 
3) ServerSignature on--->ServerSignature off 
4) Options Indexes FollowSymLinks 行把indexes刪掉(目錄的Options不要帶index選項) 
5) 將Apache運行的用戶和組改為nobody 
6) MaxClients 150——>MaxClients 1500 
(如果要使用Apache,內核一定要重新編譯,否則通不過Apache的壓力測試,關于如何配置和管理WEB服務器請見我的另一篇文章) 
如果要運行FTP服務,請安裝proftpd,它比較安全。在任何服務器上,都不要打開匿名FTP。 

3. Linux的初始安全配置 
Linux安裝完成后,默認會打開一些不必要端口,運行netstat –an |grep LISTEN命令看一下,會看到本機打開的所有端口。除了必須的網絡端口如SSH、FTP和WEB,其他端口都關閉。如果你不熟悉這些端口對應什么程序,那么請參看/etc/services文件,里面有端口和服務的對應列表。 
在Redhat 9.0默認安裝完成后,請進入/etc/rc2.d和/etc/rc3.d,將系統啟動時打開的不必要服務都在這里注銷掉。這些服務通常包括sendmail、NFS、rpc等,注銷的方法是將S打頭的相關服務文件重命名(注意不要命名為S或K 打頭的其他文件)。 
例如將/etc/rc2.d/S80sendmail 改名為 X80sendmail 
將/etc/rc3.d/S13portmap S14nfslock S28autofs S80sendmail 改名為 X13portmap X14nfslock X28autofs X80sendmail 
RPC的安全問題歷來很多,請注意一定不要打開111端口。 
改完后需要重啟Linux服務器。 
如果你的Linux直接面對因特網,那么可以配置它的防火墻來實現訪問控制。Linux2.4內核支持iptables,2.4以下支持ipchains,它們的語法差不多,都是很好的防火墻工具。例如,如果你只允許從因特網訪問SSH和WWW服務,那么可將如下語句加進/etc/rc.d/rc.local文件: 
/sbin/iptables -F 
/sbin/iptables -A INPUT -p tcp -d 211.96.13.* --dport 80 -i eth0 -j ACCEPT 
/sbin/iptables -A INPUT -p tcp -d 211.96.13.* --dport 22 -i eth0 -j ACCEPT 
/sbin/iptables -A INPUT -i eth0 -j DROP 
說明:iptables –F刷新iptables規則表,接下來兩條語句允許任何人訪問211.96.13.*這個地址的WWW和SSH服務,最后一條DROP語句將不符合規則的其他訪問過濾掉。 
這樣系統在啟動后即可自動運行防火墻規則。 
通常在Freebsd或Linux上會運行Mysql數據庫服務,不要將數據庫服務端口(3306)暴露在防火墻之外。如果運行Apache,同樣要做如Freebsd的修改。 

4. Solaris的初始安全配置 
關于Solaris的安全配置網上有一篇非常好的文章,叫做《The Solaris Security FAQ》,照著做就可以了。 
1) 禁止root從網絡直接登陸:修改/etc/default/login文件,確保CONSOLE=/dev/console被設置,該行只允許root從控制臺登陸。將root用戶加入/etc/ftpusers,保證root不可以遠程使用ftp。 
2) 禁止rlogin和rsh訪問:刪除/etc/hosts.equiv和/.rhosts文件,從/etc/inetd.conf文件里注釋掉所有以r打頭的服務。 
3) 帳號控制:刪除、鎖定或注釋掉不必要的系統帳號,包括sys/uucp/nuucp/listen等 
4) 改變/etc目錄的訪問權限:該目錄下文件不應該對同組用戶可寫,執行:chmod –R g-w /etc (不推薦) 
5) 在solaris2.5 以上版本的系統中,創建/etc/notrouter文件來關閉solaris默認的路由轉發。 
6) 禁止automounter:刪除/etc/auto_*配置文件,刪除/etc/init.d/autofs 
7) 禁止NFS服務:刪除/etc/dfs/dfstab,重命名/etc/rc3.d/S15nfs.server,重命名/etc/rc2.d/S73nfs.client (不要再以S打頭) 
8) 禁止rpc服務:重命名/etc/rc2.d/S71RPC 
9) 修改/etc/inetd.conf文件,注釋掉大部分不必要服務,只保留telnet和ftp服務,然后重啟inetd進程。 
10) 給系統打補丁:包括各版本Solaris通用補丁和單個補丁集合。 
11) 將如下三行加進/etc/init.d/inetinit文件: 
ndd -set /dev/ip ip_forward_directed_broadcasts 0 
ndd -set /dev/ip ip_forward_src_routed 0 
ndd -set /dev/ip ip_forwarding 0 
這樣在系統啟動后就關閉了IP轉發和IP源路由。 

四. 服務器安全管理 
4.1 安全管理應做的事 
安全管理是站點安全中最重要的一環,離開了管理,安全將變得不切實際。以下也許是Windows系統安全管理員每天應做的事: 
1. 檢查系統有無新增帳戶,并了解其來源及用途;查看管理員組里有無新增帳戶,該組的帳戶除系統最初設置外,以后不應該增加帳戶; 
2. 在命令行狀態下,運行netstat –an命令查看當前連接及打開的端口,查找可疑連接及可疑的端口; 
3. 查看“任務管理器”,查找有無可疑的應用程序或后臺進程在運行,并觀察CPU及內存的使用狀態; 
4. 運行注冊表編輯器,查找有無可疑的程序被加到windows的啟動項里,并查看有無新增的可疑服務; 
5. 使用 Windows事件查看器查看“系統日志”“安全日志”和“應用程序日志”,以發現有無可疑的事件或影響系統性能的事件; 
6. 檢查共享目錄,不應有對所有用戶可寫的目錄存在; 
7. 如果運行Microsoft IIS,查看C:/WINNT/system32/LogFiles/下的WEB 服務器日志,以發現是否有試圖攻擊WEB的行為; 
8. 不定期運行殺毒軟件查殺病毒; 
9. 經常瀏覽微軟的網站,保持服務器的補丁同步更新,留意微軟發布的安全公告。 

以下是Unix系統安全管理員應經常做的事: 
1. 以root運行last,查看用戶在過去一段時間內所發生的事件; 
2. 查看/etc/passwd和/etc/shadow文件,以發現是否有新增用戶,并追查用戶來源及用途;保證這兩個文件中的系統用戶(如Daemon bin sys adm lp uucp nuucp listen noaccess、mysql、sshd、nobody等)沒有自己的shell;檢查有無帳戶被提升到root權限(UID 0); 
3. 運行netstat –an |grep LISTEN查看有無可疑的打開的端口; 
4. 使用ps命令查看系統進程,保證只有必要的進程在運行; 
5. 檢查被cron運行的程序,Solaris一般在/var/spool/cron目錄里,Freebsd一般在/var/cron里,初始化的crontable除root外,其他用戶不應擁有;仔細查看root的crontable; 
6. 使用vmstat和top查看系統資源占用狀況,對高資源占用的系統進程要做謹慎處理; 
7. 查看系統日志,包括Solaris下的/var/adm/messages和Freebsd下的/var/log/messages,以發現有無可疑的事件發生; 
8. 查看系統安全日志,包括用戶登陸嘗試、驗證失敗、可疑的IP地址登陸等,在solaris下是/var/log/authlog,freebsd下是/var/log/auth.log; 
9. 運行chkrootkit,以檢查系統是否被植入木馬程序; 
10. 安裝了Apache的主機,不定期查看Apache的訪問日志和錯誤日志, 以發現是否有試圖攻擊WEB的行為。 

4.2 系統及服務的穩定性 
一些重要的服務器是片刻也不能停的,一旦發生服務器down機事故,而你又沒有及時發現和恢復,那么你面對的將是鋪天蓋地的指責。系統安全管理的任務也許不是很重,但責任卻并不輕。因此,你有必要時刻了解服務器的存活狀況,一旦發生down機事件,你應在第一時間知道。 
有些好的IDC機房有服務器監控系統,一旦某臺機器down掉,它會發出警報。然后機房的值班人員會電話通知你,這樣你就能從容的處理事故。然而,并非所有的機房都有這樣的措施,很多時候還得依靠自己的小心。 
在機房網絡中,應該有一它網管機器,這臺機器最好是Unix系統,因為你可以在上面編寫腳本來監控網絡,并通過sendmail發送郵件給自己。這臺機器可以是一臺服務器,象前面講過的登陸入口服務器,就完全可以充當網管機;也可以是一臺配置很低的普通PC,能運行Linux或Freebsd就可以了。有必要在上面運行sendmail,因為它要對外發送郵件。當然,sendmail有一些安全問題,因此在運行它之前,你必須確認服務器處于安全的網絡:在防火墻之后,且同一網段中沒有其他公司的服務器。否則,就不要運行它。當然,你也可以配置sendmail綁定在127.0.0.1端口,不接受網絡請求(在Linux默認安裝的sendmail不接受網絡請求,Freebsd中可以在rc.conf文件中設置使sendmail綁定在127.0.0.1端口),這樣的sendmail會安全很多。 
然后你可以寫一個簡單的腳本來監控網絡主機生存狀況。在Unix主機上,使用shell或perl都很容易編寫腳本,但是,shell腳本用于系統管理更簡單明了,除非你要進行復雜的數學計算或文本處理。如下這個shell腳本很簡單,卻很實用: 


#!/bin/sh 
# script name:nping 
# use this script to confirm the hosts are alive or not 
HOST01="xxx.xxx.xxx.xxx" 
HOST02="xxx.xxx.xxx.xxx" 
HOST03="xxx.xxx.xxx.xxx" 
HOST04="xxx.xxx.xxx.xxx" 
HOST05="xxx.xxx.xxx.xxx" 
HOST06="xxx.xxx.xxx.xxx" 
HOST07="xxx.xxx.xxx.xxx" 
HOST08="xxx.xxx.xxx.xxx" 
HOST09="xxx.xxx.xxx.xxx" 
HOST10="xxx.xxx.xxx.xxx" 

for LOOP in $HOST01 $HOST02 $HOST03 $HOST04 $HOST05 $HOST06 $HOST07 $HOST08 $HOST09 $HOST10 
do 
if !/sbin/ping -c 2 $LOOP >/dev/null 2>&1;then 
echo "Warning:The host $LOOP seems down" >> error.log 
fi 
done 

if [ -f error.log ];then 
cat error.log |mail -s "Warning:Host Down" yourname@yourmail.com 
rm –rf error.log 
fi 

該腳本執行一個簡單的ping操作,以判斷目標主機是否存活,如果目標主機停止響應,則向管理員發送郵件報警。 
你可以在任務里設定每隔一段時間執行一次該腳本,由于ping對內網的影響很小,因此這個時間可以短一些,我把它設為1小時。 
然而,有的時候,你可能關心的不止是服務器是否存活,更想了解它的服務狀態是否正常,這個時候,你可以使用一個工具來判斷服務器的開放服務狀態,這個工具就是被Unix系統管理員廣泛使用的網絡端口掃描工具Nmap(可以從http://www.insecure.org/nmap/ 下載最新版本)。它的使用很簡單,安裝完成后直接在命令行下執行:nmap IP,就可以得到目標主機的開放TCP端口狀況。當然,Nmap的功能遠不止如此,它還可以執行UDP、SYN、FIN、RPC等掃描,它的半開放掃描可繞過防火墻的過濾,并可根據操作系統指紋判斷目標系統類型。在這里只要利用到Nmap的TCP掃描就夠了。然后,你可以編寫一個腳本來定期檢測服務器的開放端口狀況,并將結果Email給管理員。我編寫的如下: 

#!/bin/sh 
# script name:nscan 
# use this script to check the services status on local servers 
HOST01="xxx.xxx.xxx.xxx" 
HOST02="xxx.xxx.xxx.xxx" 
HOST03="xxx.xxx.xxx.xxx" 
HOST04="xxx.xxx.xxx.xxx" 
HOST05="xxx.xxx.xxx.xxx" 
HOST06="xxx.xxx.xxx.xxx" 
HOST07="xxx.xxx.xxx.xxx" 
SQL_PORT="2433/tcp" 
MSRDP_PORT="3389/tcp" 
PCANYWH_PORT="5631/tcp" 

for LOOP in $HOST01 $HOST02 $HOST03 $HOST04 $HOST05 $HOST06 $HOST07 
do 
nmap -sT $LOOP >nmap.tmp 2>&1 
for PORT in $SQL_PORT $MSRDP_PORT $PCANYWH_PORT 
do 
if ! grep $PORT nmap.tmp >/dev/null 2>&1;then 
echo “Warning:The port $PORT is seem to down on $LOOP” >>$LOOP.error 
fi 
done 

if [ ! -f $LOOP.error ];then 
echo "The services running on $LOOP are nomal!" 
else 
cat $LOOP.error >>nscan.err 2>&1 
rm -rf $LOOP.error 
fi 

rm -rf nmap.tmp 
done 

if [ -f nscan.err ];then 
cat nscan.err |mail –s “Host Services Down” yourname@yourmail.com 
rm –rf nscan.err 
fi 


該腳本只是判斷MS SQL Server、MS終端服務和Pcanywhere服務是否正常,如果不正常,就向管理員發送郵件報警。如果你需要檢查其他的服務端口,修改該腳本即可。 
你也可以配置任務來定期執行該腳本,不過請注意,Nmap掃描會影響網絡,因此檢測的時間間距不要太小。當然,在Unix系統下,有好些方法可以判斷目標系統的開放端口狀況,但使用Nmap掃描看起來也不錯。 

4.3 日志管理 
不管是Windows系統還是Unix系統,都有自己的事件日志。在Windows下使用事件查看器可以清楚的了解系統運行的各項狀態,它包括應用程序日志、安全日志和系統日志。你應經常閱讀這些日志,尤其是一些紅色標記的錯誤信息。根據這些錯誤提示發現問題和解決問題是Windows系統管理員應做的事。 
如果服務器不加入域,那么一般來說系統錯誤信息很少;如果在機房的服務器組成一個域,那么從日志里可能會經常看到各種錯誤提示,尤其是在域控制器有問題的時候。管理好一個域不是一件太容易的事,它憑空給系統管理員增加很多困難。如果你真碰到這樣的問題,建議你到google上面去查找答案,一般來說,你碰到的問題別人肯定也遇見過了,因特網上有很多熱心的人愿意解答困難者的問題(尤其是國外的技術站點)。 
讀Windows的日志不浪費你太多精神,因為它都分門別類整理得很清楚,有什么錯誤能一目了然的看出來。每天快速翻一下它的日志是可行的,如果你的服務器磁盤有壞道,也能從日志里體現出來,為你及早更換磁盤、避免數據災難贏得了時間。 
在Unix系統下,讀日志要費勁一些,因為Unix系統通常把一些通用的日志信息寫到messages文件里,導致這個文件里雜七雜八什么都有,包括應用程序信息、用戶驗證信息、網絡連接信息、內核信息等等,在瀏覽它們時比較費勁。然而,這不意味著你可以不管它們。實際上,日志文件是系統偵錯時的唯一依據。某天你的Unix系統崩潰了,在居喪之余,不要忘了去分析它的日志,或許可以為你找到原因。 
在Unix系統下,有一個日志分析軟件叫Swatch,它能很好的幫你裁減和分析日志,減輕系統管理員的負擔。關于它的安裝和使用我不在這里詳敘,因為我自己并沒有使用它。我自己編寫腳本用于查看日志,使用awk語句照樣能將日志文件裁減到合理的程度。這個腳本的樣式我不在這里描述,因為不同的系統和網絡環境所產生的條件并不一樣。 
在UNIX系統下,另外一個日志文件也很值得關注,它記載了用戶的登陸和驗證信息,該文件一般位于/var/log下,名為authlog或者auth.log,只有root才可以對它進行讀寫。 
如果系統中安裝了Apache,那么經常查看Apache的錯誤日志和訪問日志也值得推薦。從這兩個日志里,你可以發現很多有趣信息,因特網上對WEB站點的攻擊從來沒有終止過(從這里也可以找到大量試圖攻擊IIS的信息)。 


4.4 用戶管理 
用戶管理通常是指系統的用戶帳戶管理,不管是UNIX系統還是Windows系統,帳戶安全是系統安全的關鍵。系統中應保持固定數量的用戶帳戶,作為系統管理員,應清楚每一個帳戶的使用者和用途。用戶新申請帳戶應該有個流程,規范的管理總比不規范好。 
在Unix系統上,大多數系統帳戶平時是沒什么用的,包括:bin daemon adm lp mail news uucp operator games gopher rpc等,如果你不把它們刪除,那么也不要讓它們擁有真正的shell,檢查/etc/passwd文件,看看這些帳戶的最后一個域(shell)是否被置/sbin/nologin或/bin/false。經常檢查帳戶的權限,普通帳戶不應該在root組(gid=0),更不應擁有root權限(uid=0)。可以寫一個腳本來替你檢查,如下所示: 
#!/bin/sh 
# script name:checkuser 
# check if there is any user who have real shell or have root id/gid 

FILE=/etc/passwd 
NUM=0 

while read LINE 
do 
NUM=`expr $NUM + 1` 

if [ $NUM -lt 3 ];then 
continue 
fi 

USER=`echo $LINE |cut -d: -f1` 
USER_SHELL=`echo $LINE |cut -d: -f7` 
USER_UID=`echo $LINE |cut -d: -f3` 
USER_GID=`echo $LINE |cut -d: -f4` 

if [ "$USER_SHELL" != "/sbin/nologin" ];then 
echo -e "/n$USER has one real shell:$USER_SHELL" 
fi 
if [ $USER_UID -eq 0 ];then 
echo "$USER has the root uid(uid 0)" 
fi 
if [ $USER_GID -eq 0 ];then 
echo "$USER has the root gid(gid 0)" 
fi 

done <$FILE 
這個腳本運行在Freebsd下,Freebsd的/etc/passwd文件前兩行是版本說明,所以在程序里把它跳過,從第三行起挨個檢查用戶帳號,它將每一個擁有真正shell或者擁有root用戶ID或組ID的帳號在屏幕上打印出來。 
同樣,在Windows服務器上,如果不運行IIS服務,那么把IIS相關的帳號禁止掉,把終端服務帳號禁止掉,把guest帳號禁止掉。Windows系統的管理員組除了Administrator外不要有其他帳號,甚至應該把Administrator帳號改名。每一個帳號在帳號描述里說明它的用途。如果Windows服務器采用域的方式,那么應確保域中有盡可能少的用戶。一般域中兩個用戶就夠了,一個Administrators組的用戶,一個普通用戶。請記住,域的Administrators組的用戶(通常是administrator)對你的每一臺加入域的服務器都有生死控制權,所以你應絕對保證這個帳戶的安全。 
不管是系統的root密碼還是普通用戶密碼,都應定期更改。我一般每兩個月更改一次系統root密碼。當然,如發現系統有被入侵跡象,應馬上更改密碼。對于用戶密碼,不管在什么系統中,都可以設置密碼過期期限,用戶使用一段時間后必須更改密碼。有的用戶安全意識并不強烈,他們使用自己容易記住的詞匯作為口令,例如自己的英文名或者生日。這些都容易被猜測,你可以使用工具破解這些簡單口令。Unix下的John和Windows下的LC3都是非常好的密碼破解工具,在系統上運行它們幾分鐘就可以破解出一堆弱口令。口令過于簡單的用戶,一定要強制他們更改口令,否則后患無窮。如果用戶拒絕更改口令,那就刪除他們,我就做過這樣的事。 

4.5 安全巡檢 
最后要講的是安全巡檢,有時間就跑到機房看看去吧,看看服務器運行的環境,檢查一下電源和網線,摸摸機表的溫度,跟機房的值班人員聊聊天,都對你有好處。一般來說,就算服務器正常運行,每月也應去機房兩次。當然,來去打車的費用,希望你的公司給你報銷。

萬企互聯
標簽: