首頁 > 文章中心 > linux系統

          linux系統

          前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇linux系統范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

          linux系統

          linux系統范文第1篇

          關鍵詞:嵌入式linux 操作系統;應用前景

          近年來,隨著計算技術、通信技術的飛速發展,特別是互聯網的迅速普及和3C(計算機、通信、消費電子)合一的加速,微型化和專業化成為發展的新趨勢,嵌入式產品成為信息產業的主流。Linux從1991年問世到現在,短短的十幾年時間已經發展成為功能強大、設計完善的操作系統之一;可運行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多種硬件平臺,而且開放源代碼,可以定制;可與各種傳統的商業操作系統分庭抗爭。越來越多的企業和研發機構都轉向嵌入式Linux的開發和研究上,在新興的嵌入式操作系統領域內也獲得了飛速發展。

          1 嵌入式Linux的特點

          嵌入式系統是以應用為中心,以計算機為基礎,軟硬件可裁剪,適用于系統對功能、可靠性、成本、功耗嚴格要求的專用計算機系統。實時性是嵌入式系統的基本要求,其次,還要求代碼小,速度快,可靠性高。嵌入式Linux(Embedded Linux)是指對Linux經過裁剪小型化后,可固化在存儲器或單片機中,應用于特定嵌入式場合的專用Linux操作系統。嵌入式Linux的開發和研究已經成為目前操作系統領域的一個熱點。與其它嵌入式操作系統相比,Linux的特點如下:

          第一,Linux系統是層次結構且內核完全開放。Linux是由很多體積小且性能高的微內核系統組成。在內核代碼完全開放的前提下,不同領域和不同層次的用戶可以根據自己的應用需要方便地對內核進行改造,低成本地設計和開發出滿足自己需要的嵌入式系統。

          第二,強大的網絡支持功能。Linux誕生于因特網時代并具有Unix的特性,保證了它支持所有標準因特網協議,并且可以利用Linux的網絡協議棧將其開發成為嵌入式的TCP/IP網絡協議棧。

          第三,Linux具備一整套工具鏈,容易自行建立嵌入式系統的開發環境和交叉運行環境,可以跨越嵌入式系統開發中仿真工具的障礙。Linux也符合IEEE POSIX.1標準,使應用程序具有較好的可移植性。

          傳統的嵌入式開發的程序調試和調試工具是用在線仿真器(ICE)實現的。它通過取代目標板的微處理器,給目標程序提供一個完整的仿真環境,完成監視和調試程序;但一般價格比較昂貴,只適合做非常底層的調試。

          第四,Linux具有廣泛的硬件支持特性。無論是RISC還是CISC、32位還是64位等各種處理器,Linux都能運行。這意味著嵌入式Linux將具有更廣泛的應用前景。

          2 Linux嵌入式系統開發平臺

          2.1 系統軟件操作平臺

          操作系統是一種在計算機上運行的軟件。它的主要任務是管理計算機上的系統資源,為用戶提供使用計算機及其外部設備的接口。它存在的目的是為了管理所有硬件資源,并且提供應用軟件一個合適的操作環境。

          Linux作為嵌入式操作系統是完全可行的。因為Linux提供了完成嵌入功能的基本內核和所需要的所有用戶界面,能處理嵌入式任務和用戶界面。將Linux看作是連續的統一體,從一個具有內存管理、任務切換和時間服務及其它分拆的微內核到完整的服務器,支持所有的文件系統和網絡服務。

          嵌入式Linux系統需要下面三個基本元素:系統引導工具(用于機器加電后的系統定位引導)、Linux微內核(內存管理、 程序管理)、初始化進程。但如果要它成為完整的操作系統并且繼續保持小型化,還必須加上硬件驅動程序、硬件接口程序和應用程序組。

          Linux是基于GNU的C編譯器,作為GNU工具鏈的一部分,與gdb源調試器一起工作的。它提供了開發嵌入式Linux系統的所有軟件工具。

          2.2 系統硬件平臺

          在選擇硬件時,常由于缺乏完整或精確的信息而使硬件選擇成為復雜且困難的工作。現在比較流行的硬件平臺有Intel公司的StrongARM 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。選定硬件平臺前,首先要確定系統的應用功能和所需要的速度,并制定好外接設備和接口標準。這樣才能準確地定位所需要的硬件方案,得到性價比最高的系統。

          3 嵌入式Linux系統開發模式

          嵌入式系統通常為一個資源受限的系統。直接在嵌入式系統的硬件平臺上編寫軟件比較困難,有時甚至是不可能的。目前,一般采用的辦法是,先在通用計算機上編寫程序,然后,通過交叉編譯,生成目標平臺上可運行的二進制代碼格式,最后下載到目標平臺上的特定位置上運行,具體步驟如下。

          第一步,建立嵌入式Linux交叉開發環境。目前,常用的交叉開發環境主要有開放和商業兩種類型。開放的交叉開發環境的典型代表是GNU工具鏈,目前已經能夠支持x86、ARM、MIPS、PowerPC等多種處理器。商業的交叉開發環境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉開發環境是指編譯、鏈接和調試嵌入式應用軟件的環境。它與運行嵌入式應用軟件的環境有所不同,通常采用宿主機/目標機模式。

          第二步,交叉編譯和鏈接。在完成嵌入式軟件的編碼之后,就是進行編譯和鏈接,以生成可執行代碼。由于開發過程大多是在Intel公司x86系列CPU的通用計算機上進行的,而目標環境的處理器芯片卻大多為ARM、MIPS、PowerPC、DragonBall等系列的微處理器,這就要求在建立好的交叉開發環境中進行交叉編譯和鏈接。

          第三步,交叉調試。

          ① 硬件調試。如果不采用在線仿真器,可以讓CPU直接在其內部實現調試功能,并通過在開發板上引出的調試端口,發送調試命令和接收調試信息,完成調試過程。目前,ARM公司提供的開發板上使用的則是JTAG調試端口。

          ② 軟件調試。在嵌入式Linux系統中,Linux系統內核調試,可以先在Linux內核中設置一個調試樁(debug stub),用作調試過程中和宿主機之間的通信服務器。然后,可以在宿主機中通過調試器的串口與調試樁進行通信,并通過調試器控制目標機上Linux內核的運行。

          第四步,系統測試。整個軟件系統編譯過程,嵌入式系統的硬件一般采用專門的測試儀器進行測試,而軟件則需要有相關的測試技術和測試工具的支持,并要采用特定的測試策略。測試技術指的是軟件測試的專門途徑,以及能夠更加有效地運用這些途徑的特定方法。

          linux系統范文第2篇

          // 讀取Table.DAT

          {

          FILE *tab = fopen(TABLE_FILE, "r") ;

          // 打開文件

          int count = fread(Tab, sizeof(int), TAB_SIZE, tab) ;

          fflush(tab) ;

          // 刷新文件流

          for (int i=0; i

          if ( Tab[i] != -1 && Tab[i+1] != -1 )

          Tab[i+1] = Tab[i+1] + Tab[i] ;

          else

          break ;

          return TRUE ;

          }

          int LoadPack()

          // 加載數據包

          {

          int i ;

          int load_packs

          = 0 ;

          FILE *pack = fopen(PACK_FILE, "r") ;

          for (i = 0; i < BUF_COUNT; i++)

          {

          if ( Tab[to_be_load+i] != -1 && Tab[to_be_load+i+1] != -1 )

          {

          int size = Tab[to_be_load+i+1] - Tab[to_be_load+i] ;

          int offset = Tab[to_be_load+i] ;

          if ( fread(buf+i, size, 1, pack) != 1 )

          {

          printf("Read error...\n\n") ;

          exit(1) ;

          }

          load_packs ++ ;

          // 更新變量

          }

          else

          {

          /* do nothing */

          }

          }

          fflush(pack) ;

          // 刷新數據流

          to_be_load += load_packs ;

          // 更新變量

          return load_packs ;

          // 返回讀取的數目

          }

          3.4.2 系統中的buffer

          在現實中的很多系統中,buffer是很重要的一種思想,為的就是減少讀取外部存儲的次數,延長設備的使用壽命。Buffer在計算機系統中,應用是很廣泛的,例如,在硬盤和內存之間存在一層緩沖區,在CPU和內存之間同樣也存在一層緩沖區,這層緩沖區通常被稱作Cache。

          在本系統中,也同樣利用了Buffer思想,有著傳統意義上的原因,當然還考慮到用戶操作時的特殊性,系統的Buffer思想描述如下:

          l

          在任意時刻,Buffer內最多存儲100個Package數據

          l

          剛開始,加載pack0 ~ pack99共計100個package,當要查看pack100時,則采取的方法是:保留舊的50個package, 加載新的50個package,則package編號變為:pack50 ~ pack149,這樣操作的原因是為了用戶的方便,因為用戶經常會查看某個報文附近的幾個報文。

          初始狀態下,假設系統已經加載了編號為0到99的數據包,如圖2.7所示:

          圖2.7

          加載前緩沖區內容

          在某一時刻,假設用戶想查看編號為100的數據包,則需要重新加載,重新加載后的數據包如圖2.8所示:

          圖2.8

          加載后緩沖區內容

          使用此種Buffer思想,用戶操作的方便性即體現在這個方面,在對某條報文進行研究時,會經常查看它的臨近報文,使用此種機制,那么便不會不斷的對要查看的臨近報文進行加載,減少了讀取硬盤的次數。

          3.4.3 系統的顯示問題

          在控制臺上,要想建造一個好的用戶操作界面,是一件比較難的事情,根據我的體驗,linux下著名的Sniffer工具tcpdump的操作界面也不夠友好,普通用戶很難操作。在window環境下的Sniffer工具Ethereal界面比較美觀,方便操作,所以,建造一個好的用戶操作界面成為我此次畢設的攻克重點。

          本系統的顯示分為兩種顯示模式:“detail”模式 和 “simple”模式,“detail”模式意為“詳細顯示模式”,“simple”模式意為“簡單顯示模式”。

          在“detail”模式下,每個包得到盡可能詳細的解析,解析包的每一層信息,示意如圖2.9:

          圖2.9

          詳細顯示模式

          根據上圖顯示的信息,可以得知此包是一個ICMP Package,具體內容屬于ping Reply,更詳細得知是本主機ping本主機的一個數據包。

          “simple”模式意為簡單模式,所謂簡單模式就是對每個Package盡可能的用一句話來描述,雖然盡可能的簡短,但是一定要包含以下信息:

          l

          Package的類型

          l

          Package的作用

          這種模式的重要作用是在用戶對包進行檢測和測量時,通常會查看相鄰的幾個Package,這樣的模式方便用戶進行“查看上一個Package”和“查看下一個Package”,只要用戶在這種模式下按“N”或者“n”就可以查看下一個package,只要按“L”或“l”鍵就可以查看上一個Package。

          “simple”模式的示意如圖2.10所示:

          圖2.10

          簡單顯示模式

          從圖中可以看出,當前正在查看的包用“藍色”的線條標出,方面用戶的操作,當用戶向上或者向下進行選擇時,此藍色線條也同樣會向上或向下運動,這樣做的原因是是的系統顯示具有動態效果。

          “detail”模式的顯示比較簡單,只要逐層進行解析就可以了,下面我們主要討論下“simple”模式下的顯示算法。

          在“simple”模式下,當前控制臺最多可以顯示20個Package,主要是由函數List20Packages函數實現的。什么時候應該對Package標上藍色的線條,以下代碼即說明此問題:

          if ( i == p_recorder % 20 )

          // if the package is the current

          printf(COLOR_START) ;

          // color_start

          無論示在簡單顯示模式還是在詳細顯示模式下,均支持以下三種操作:

          向上操作(Prev) ----- 查看上一條報文

          向下操作(Next) ----- 查看下一條報文

          任意操作(Goto) ----- 查看任一條報文

          第四章

          Sniffer其它相關

          4.1 文怎樣獲取一個數據包?

          4.1.1 Libpcap方法

          Libpcap 是由洛侖茲伯克利國家實驗室編寫的Linux 平臺下的網絡數據包捕獲函數庫,是一種與系統無關,用于訪問數據鏈路層,是一個獨立于系統接口的用戶級捕包函數據庫,為底層的網絡數據提供了可移植框架,它的應用包括網絡統計、安全監聽、網絡調試、性能測量、入侵檢測、口令攔截等。Libpcap 可以在絕大多數類Unix 平臺下工作,絕大多數的現代操作系統都提供了對底層網絡數據包捕獲的機制,在捕獲機制之上可以開發網絡監控應用軟件。采用Libpcap 實施網絡數據包捕獲時,將要用到一個重要的函數pcap_open_live(),它的函數原型是:pcap_t * pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebuf),其中,如果device 為NULL 或any,則對所有接口捕獲,snaplen 代表用戶期望的捕獲數據包最大長度,promisc 代表設置接口為混雜模式,捕獲所有到達接口的數據包,但只有在設備給定的情況下才有意義,to_ms 代表函數超時返回的時間。

          編程要點如下:

          l

          查找可以捕獲數據包的設備

          device = pcap_lookupdev(errbuf);

          l

          創建捕獲句柄,準備進行捕獲

          p =pcap_open_live(device, 8000, 1, 500, errbuf);

          l

          如果用戶設置了過濾條件,則編譯和安裝過濾代碼

          pcap_compile(p, &fcode, filter_string, 0, netmask);

          pcap_setfilter(p, &fcode);

          l

          進入循環,反復捕獲數據包

          for( ; ; )

          while((ptr = (char *)(pcap_next(p, &hdr))) == NULL);

          l

          對捕獲的數據進行類型轉換,轉化成以太數據包類型

          eth = (struct libnet_ethernet_hdr *)ptr;

          l

          對以太頭部進行分析,判斷所包含的數據包類型,做進一步的處理

          if(eth->ether_type == ntohs(ETHERTYPE_IP))

          if(eth->ether_type == ntohs(ETHERTYPE_ARP))

          l

          關閉捕獲句柄

          pcap_close(p);

          4.1.2 Socket方法

          在Linux 下編寫網絡包捕獲程序,比較簡單的方法是在超級用戶模式下,利用類型為SOCK_PACKET 的套接口(socket函數)來捕獲鏈路幀。Linux SOCK_PACKET 編程要點如下:

          l

          設置套接口以捕獲鏈路幀:在設置套接口之前,需要引用如下文件:

          #include

          #include

          #include

          #include

          調用socket 函數的原型是:int socket(int domain, int type,int protocol);

          本函數涉及3 個輸入參數:domain 參數表示所使用的協議族;type 參數表示套接口的類型;protocol 參數表示所使用的協議族中某個特定的協議。如果函數調用成功,套接口的描述符(非負整數) 就作為函數的返回值,假如返回值為-1,就表明有錯誤發生。使用socket 函數捕獲鏈路層數據幀,domain參數應指定為AF_INET 協議族,表示采用Internet 協議族;type參數指定為SOCK_PACKET,表示獲取鏈路層數據,進而分析各層的協議數據單元;而protocol 參數采用htons(0x0003),表示可以截取所有類型的數據幀。這里htons 函數用于短整數的字節順序轉換。計算機數據存儲有兩種字節優先順序:高位字節優先和低位字節優先。Internet 上數據以高位字節優先順序在網絡上傳輸,所以對于在內部是以低位字節優先方式存儲數據的機器,在Internet 上傳輸數據時就需要進行轉換,否則就會出現數據不一致。在捕獲數據包時socket 函數調用形式為:

          int fd;

          // fd 是套接口的描述符

          fd=socket(AF_INET, SOCK_PACKET, htons(0x0003));

          l

          設置網卡工作模式:要使建立的套接口能夠真正捕獲到同一網段其它站點的數據,還必須設置網卡工作于“混雜”模式,可以使用ioctl 函數,原型如下:

          int ioctl(int d, int request,&ifr),ioctl 系統調用用于對套接口、網卡等軟硬件設施進行底層控制,實際的操作來自各個設備自己提供的ioctl 接口。設置網卡于“混雜”方式的Linux C 程序段如下:

          struct ifreq ifr;

          strcpy(ifr.ifr_name, dev);

          //(char *)dev 標識設備名,如:eth0

          i=ioctl(fd,SIOCGIFFLAGS,&ifr); // 表示要求取出工作方式

          if(i

          {

          close(fd);

          perror("can't get flags\n");

          exit(0);

          }

          ifr.ifr_flags |= IFF_PROMISC;

          //在標志中加入“混雜”方式

          i=ioctl(fd,SIOCSIFFLAGS,&ifr);

          // 表示要求設定工作方式

          if(i

          {

          perror("can't set promiscuous\n");

          exit(0);

          }

          l

          從套接口讀取鏈路幀:套接口建立以后,就可以從中循環地讀取鏈路層數據幀。因此,還需要建立數據幀的緩沖區,并把幀頭結構的指針指向這一緩沖區的首地址:

          char ep[ETH_FRAME_LEN]; struct ethhdr *eh; int fl;

          eh=(struct ethhdr *)ep;

          // 指向幀頭

          fl0 = read(fd, (etherpacket *)ep, sizeof(ep)) ;

          //fl0 為截取的數據幀幀長

          這里幀頭結構類型ethhdr 在/usr/include/linux/if_ether.h 中

          定義:struct ethhdr {unsigned char h_dest [ETH_ALEN]; //目標MAC 地址

          unsigned char h_source[ETH_ALEN];

          `

          //源MAC 地址

          unsigned short h_proto;

          //幀中數據協議類型代碼

          }

          基于上述定義,一旦ep 讀入幀中數據,就可以通過eh->h_dest、eh->h_source、eh->h_proto 獲取幀首部信息。

          4.2 怎樣解析一個報文?

          無論采用Lipcap 方法,還是采用SOCK 方法,都可獲得以太網幀,由于在以太網幀首部中含有協議類型字段,所以可進一步實現上層協議包的首部提取,為篇幅起見,本處僅對Socket方法獲得幀為例,介紹TCP/IP 首部的提取的一般方法,以便今后作進一步的數據分析與處理。

          IP 報頭首部提取

          根據h_proto 的值,可以確定幀數據將交由上層何種協議處理,常見的h_proto 值與協議的對應關系有:

          0x0800:IP協議;

          0x0806:ARP 協議;

          0x8035:RARP 協議。

          因此,一旦捕獲的幀中h_proto 的取值為0x800,將類型為iphdr 的結構指針指向幀頭后面負載數據的起始位置,則IP 信包首部的數據結構將一覽無余。以下程序段表明這一定位過程:

          char ep[ETH_FRAME_LEN];

          struct ethhdr * eh;

          struct iphdr *ip;

          int fl;

          eh=(struct ethhdr *)ep;

          // eh 指向幀頭

          ip=(struct iphdr *)((unsigned long)ep + ETH_HLEN);

          // ETH_HLEN為幀長

          fl1=read(fd, (struct erhhdr *)ep, sizeof(ep));

          //fl1為捕獲的數據幀長

          printf("saddr:%x =>daddr:%x\n",ip->saddr, ip->daddr); //取源和目標IP 地址

          TCP 報文段首部提取

          在IP 協議首部中包含協議數據單元類型標識域:_u8 protocol;這一標識域的常見取值及其協議對應關系如下:

          1:ICMP;

          6:TCP;

          17:UDP。

          因此,如果IP 報頭的協議域取值為6,那么緊跟在IP 報頭之后就是TCP 報頭。IP 報頭的長度可以通過ihl 域取得。這樣,假如緩沖數組ep 存放捕獲到的以太網數據幀,iph 是指向其中IP 基本報頭結構的指針,而tcph 是指向TCP 報頭結構的指針,那么,定位tcph=(struct tcphdr *)(((unsignedlong)ep)+ETH_HLEN+ iph->ihl*4),TCP 報頭的結構信息就存放在*tcph 中,并可通過以下語句獲取相關信息:

          fl2=read(fd, (struct ethhdr *)ep, sizeof(ep));

          // fl2 為捕獲的數據幀幀長

          printf("source=%x,dest=%x\n",tcph->source,tcph->dest); //取源端口和目的端口號

          4.3 怎樣把網卡置為“混雜模式”?

          在以太網中,通過廣播實現數據傳輸,在同一子網段的所有網卡都可“聽”到網絡總線上傳輸的所有數據,但不是所有數據都能被接收到。在系統正常工作時,一個合法的網絡接口只響應兩種數據幀:幀的目標MAC地址與本地網卡地址相符;幀的目標地址是廣播地址,除此之外數據幀將被丟棄。

          由于網卡有4 種工作模式:廣播(能夠接收網絡中的廣播信息)、組播(能接收組播數據)、直接(只有目的網卡才能接收該數據)和混雜(能夠接收一切數據)模式,所以為了能夠捕獲以太網所有數據包,通常需要將網卡設置成混雜工作模式。當主機連接在共享型以太網集線器上時,采用“混雜”方式可以捕獲到同一沖突域上傳輸的數據幀;但當主機連接在交換機上時,由于交換機通常不會將數據幀廣播到所有端口上(除非在其MAC 地址——端口映射表內找不到相應表項),因而不能利用以太網絡的廣播特性進行捕獲。這時,可以利用交換機的端口鏡像功能實現網絡數據包捕獲。因為當端口A 和端口B 之間建立鏡像關系后,流經端口A 的所有信息流量將同時通過端口B 輸出,所以可以在端口B 捕獲到端口A的數據。

          所以,要想運行Sniffer工具,執行“偵聽”功能,就必須使得網卡處于“混雜模式”,把網卡置為“混雜模式”的代碼如下:

          BOOL SetPromis()

          {

          int fd ;

          fd = socket(AF_INET, SOCK_PACKET, htons(0x0003) ) ;

          if ( fd == -1 )

          {

          printf("Can Not Establish A Socket To Control The Card...\n\n") ;

          return FALSE ;

          }

          struct ifreq ifr ;

          strcpy(ifr.ifr_name, "eth0") ;

          int i = ioctl(fd, SIOCGIFFLAGS, &ifr) ;

          if ( i < 0 )

          {

          close(fd) ;

          printf("Can Not Get Flags Of The Net Card...\n\n") ;

          return FALSE ;

          }

          ifr.ifr_flags |= IFF_PROMISC ;

          i = ioctl(fd, SIOCSIFFLAGS, &ifr) ;

          if ( i < 0 )

          {

          printf("Can Not Set The Net Card Promiscuous...\n\n") ;

          return FALSE ;

          }

          printf("Set The Card To Be Promiscuous..............OK\n\n") ;

          return TRUE ;

          }

          4.4 Sniffer攻擊的防范

          Sniffer軟件可以進行網絡流量監控、拓撲發現、入侵檢測,給網絡管理帶來了極大的便利。正由于它能被動獲取網絡傳輸的明文信息,因此,一旦被黑客利用,給網絡帶來的危害也是巨大的。

          作為一種入侵手段,嗅探器令人防不勝防,因為它被動接受而不主動獲得。它不會向網絡上發出任何包,網絡用戶很難發現它的存在。到目前為止還沒有一種比較好的防范手段。防范 Sniffer攻擊,只能依靠用戶和網絡軟件設計者的安全意識。我們知道,FTP, Telnet等軟件都是進行明文傳輸,因此,對攻擊者來說,他們傳輸的信息就等于完全暴露出來。因此,必須對傳輸的數據進行加密,這也是反嗅探器的唯一途徑。在Linux系統中,我們主張用SSH和openSSH來對傳輸數據進行加密。這樣即使攻擊者能得到數據流,也不能得到具體信息了。

          另一種防范嗅探攻擊的方式就是檢查網絡中有無網絡接口處于混亂模式。在Linux環境下可以用ifconfig來檢鋇本地機器是否處于混亂模式,ifconfig是Linux自帶的工具。對于子網中網絡接口的檢測,可以使用NEPED工具。然而該工具是利用Linux的ARP實現中的缺陷來檢測這些接口口它發送一個ARP請求,一次來引起嗅探工作站的響應。然而它本身就是一個缺陷,因為它是利用了Linux的其它缺陷來實現的。隨著Linux系統的越來越完善,如果ARP實現得到修補,嗅探工作站不再響應ARP請求。

          另外,安全的拓撲結構也是必要的,因為嗅探器只能在當前網絡段上進行數據捕獲。這就意味著,將網絡分段工作進行得越細,嗅探器能夠收集的信息就越少。

          以上討論了目前對嗅探攻擊防范的困難,對此本人作出下列兩點設想:

          l

          因為以太網在局域網中進行傳輸是使用廣播方式,如果不采用這種方式,直接使用地址解析 ((ARP)影射物理地址,嗅探器就無法接收數據了。或者進行雙向驗證,即主機對數據需要檢查,數據對主機也需檢查。

          l

          由于進行原始數據接收時需要將網卡設置為混亂模式,但如果網卡不

          提供這種模式,嗅探器也無法工作了。另外,前面提供的兩種檢測網卡是否處于混亂模式的方式都有缺陷,希望以后能研究出沒有缺陷的檢測網卡狀態的方式。

          4.5 Sniffer引入網絡管理中的可行性

          Sniffer作為能夠捕獲網絡報文的設備,通常用來在網絡上截取閱讀位于OS工協議模型中各個協議層次上的數據包。Sniffer可以攔截所有的正在網絡上傳送的數據,通過相應的軟件分析處理,對網絡實時信息和歷史信息進行監控和統計分析,進而分析子網的網絡狀態和網絡整體布局。為網絡性能的分析、網絡故障的判斷、信息流量的審計、配置管理得調整、網絡安全的檢測提供強有力的使用工具,對網絡管理提供信息依據。

          Sniffer可以在網絡管理中實現的主要的功能:

          實時網絡包捕獲:Sniffer能夠以線速率實時捕獲用戶定義的網絡數據包截獲通信的內容。對網絡上主機間的通信,通過設置過濾條件,給出一個詳細的逐包的統計信息。

          網絡實時監控:Sniffer以表格、圖形等形式,實時顯示出網絡運行情況,如協議分布、流量分布、帶寬利用率、錯誤率等。

          對協議進行解析:有些只能分析一種協議,而另一些能夠分析幾百種協議。

          統計歷史數據和發出警報:Sniffer可提供幾十種長期數據報告,以便將來的歷史查詢和分析,并可根據預先設定的閥值發出事件警報。

          報文發送:通過設置目的地址,發送次數,發送延遲和報文大小,形成報文并發送,可以實現網絡流量模擬。

          4.6 Sniffer技術在網絡管理中開發的可行性與必要性

          根據以上各章節的論述,我們大致了解了網絡管理技術和Sniffer技術的基本概念,在Sniffer本身所具有的抓取網絡數據報的特性的基礎之上,首先產生了一些簡單的Sniffer的工具,其后Sniffer技術融合其他方面的技術,包括:人工智能、數據庫、分布式等技術,在網絡管理領域得到了極大的發展,在不同網絡類型、不同操作系統中都得到了或多或少的應用,形成了各種專用的或通用的Sniffer產品,從簡單捕獲400字節數據包的Sniffit工具到集成的功能強到的具有 Sniffer網絡管理性質的 TVN商業軟件。從研究和實際應用上說明Sniffer技術在網絡管理中是一種行之有效的技術。

          由于現有網絡管理工具的存在,許多人認為沒有自己再開發網絡管理軟件的必要了。事實上,這種觀念是不正確的。因為:盡管現有的網絡管理工具提供了強大的網絡管理功能,但它不可能包羅萬象,適合于任何情況。也基于這個原因,很多的網絡管理平臺提供了API,可以使第三方或客戶進行二次開發。這雖然使得網絡管理工具的開發容易了許多,但前提是要掌握網絡管理的深厚的專業知識。功能強大的網絡管理工具其使用相應也較為復雜,而客戶使用可能只關心自己想要實現的功能,而不迷失于相對無必要的復雜的功能環境中,同時希望減少管理負擔,減少培訓、操作和維護的費用。另外優秀的網絡管理工具的價格也是很昂貴的,微小型企業可能無法承受。

          因此Sniffer技術在網絡管理中的開發應用有著很大的必要性。ShuSniffer是我們自主開發的具有獨立版權的軟件產品。它是針對廣播信道網絡環境下的企事業單位局域網而專業設計的一套小巧、可靠、操作簡便的計算機網絡診聽分析軟件。它主要依靠信息在局域網中傳播的廣播方式,捕獲信道上的報文,進行一系列特定分析,提取出實用數據提供給用戶作為參考。并且把數據存入數據庫,提供歷史查詢。它可以模擬網絡報文傳輸,以及對截獲的報文進行深層次的分析,了解報文的具體內容。它實現的主要功能包括:網絡實時監視、報文捕獲與分析、報文發送、歷史查詢、系統配置,為網絡健康性能狀態的分析、調整提供強有力的實用工具,成為計算機網絡管理體系中的重要組成部分。

          4.7 Sniffer對多協議的捕捉和分析的不足

          當前Sniffer技術的應用還十分簡單,對復雜多協議的捕獲和分析也有很大的缺陷。從推廣Sniffer技術的企業來看,Sniffer因要十分具體的應用于某個領域,因此只能做到對某個特定協議集做到精確專業的分析口而今天的網絡通常由多個網段經過路由器、網橋、交換機和WAN鏈路組成。任何一個網段都可能運行多種網絡協議。例如,TCP/IP協議與局域傳輸協議(如Novell的IPX)一起用于連接企業范圍網絡的協議。對于某些商業站點,可能同時需要運行多種協議簇— NetBEUI, IPX/SPX, TCP/IP, 802.3和SNA等,每個協議簇中又包括多種具體應用協議。這時很難找到一種Sniffer幫助解決網絡問題,因為許多Sniffer往往將某些正確的協議數據包當成了錯誤數據包,然而我們要想解決復雜的網絡問題,通常需要詳細地解析各協議數據包內容。

          在實際應用中,現有的Sniffer軟件管理工具通常只能對單個協議或少數的協議進行捕獲,例如Sniffer工具軟件不能檢測諸如HTTP和FTP之類的應用協議。這在工nterne七八ntranet環境中對網絡的有效管理是一個大缺陷。所以Sniffer應該有對多種協議的捕獲和分析能力,包含了目前最熱門的W49W所使用的通訊協議.提供廣泛且詳盡的協議解析,使Sniffer成為一個功能齊全,完全透視網絡的強大網絡管理工具。

          參考文獻

          [1] Tim Berners-Lee,James Handler,Ora Lassia.The semantic web[J].Scientific American, 2001,284(5):34-43.

          [2] W3C Recommendation 10 February 2004.OWL web ontology language guide [EB/OL]. 2004

          [3] Robert Shimonski, Sniffer Network Optimization and Troubleshooting Handbook. Syngress Media, 2002.6.

          [4] Douglas E.Comer. Internetworking with TCP/IP, Vol 1. 5th Edition.

          United States :Prentice Hall ,2006:90-200.

          [5] W.Richard Stevens. TCP/IP Illustrated, Vol 1: The Protocols. United States: Addison-Wesley,2004:70-150.

          [6] 李景.本體論在系統中的應用研究[M].北京:北京圖書館出版社, 2005.

          [7] 譚思亮,監聽與隱藏網絡偵聽揭密[M].北京:人民郵電出版社,2002.

          [8] 肖新峰,宋強. TCP/IP 協議與標準教程. 北京:清華大學出版社,2007:1-115.

          [9] 楊延雙. TCP/IP 協議分析與應用. 北京:機械工業出版社,2007:60-148.

          [10] 蘭少華,楊余旺,呂建勇. TCP/IP 網絡與協議. 北京:清華大學出版社,2006:1-110

          [11] 李景.本體論在文獻檢索系統中的應用研究[M]. 北京:北京圖書館出版社, 2005. 70-150

          [12] 朱禮軍,陶蘭,黃赤.語義萬維網的概念、方法及應用[J].計算機工程與應用, 2004,40(3):79-83

          [13] 任彬.一種特定領域的語義網模型[D].吉林:吉林大學, 2004.

          [14] 田春虎.國內語義Web 研究綜述[J].情報學報,2005,24(2):243-249.

          [15] 杜小勇,李曼,王大治.語義Web與本體研究綜述[J].計算機應用, 2004,24(10):14-16.

          [16] 周武,金遠平.構建XML 本體信息研究[J].微機發展, 2003,13(10):61-64.

          [17] 馬恒太,蔣建春.一個基于Uuix 平臺的分布式網絡監視器系統[J].計算機研究與發展, 2001,38(3):268-274.

          [18] 李力,肖慶.Linux 下GUI 網絡數據包嗅探器的研究與實現[J].計算機工程與設計, 2006,27(2):344-346.

          linux系統范文第3篇

          關鍵詞:S3C2410;嵌入式系統;Bootloader;內核;文件系統

          中圖分類號:TP316文獻標識碼:B

          文章編號:1004-373X(2008)24-040-03

          Method of Porting on the Embedded Linux System

          LI Jing,ZHAO Xiaoqiang,FAN Jiulun

          (Xi′an Institute of Posts and Telecommunication,Xi′an,710061,China)

          Abstract:Linux is used widely in the embedded field,it is important to build our embedded Linux system,according to the project,this paper introduces the method of building the embedded Linux system.Taking the Linux transplanted onto the target board based on the process or of S3C2410 as an example.Method of embedded Linux is transplanted,then,how to build up an environment is described,focusing on the framework and functionality of Bootloader and transplant of Linux kernel.This method proves high effective,the transplanted Linux in the embedded system runs well and a good reference to the others embedded operator system is given.

          Keywords:S3C2410;embedded system;Bootloader;kernel;file system

          嵌入式系統是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統。嵌入式Linux是按照嵌入式操作系統的要求設計的一種小型操作系統,非常適合于移植到嵌入式系統中。嵌入式Linux應用最廣泛的地方就是基于ARM地應用,ARM芯片是一種高性能、低功耗地RISC芯片,被廣泛地應用于各個領域[1,2]。

          目前,基于ARM核的處理器成為市場的主流,建立面向ARM架構的操作系統成為人們研究的熱點,而Linux由于它的開源性,被廣泛地應用于嵌入式系統中,任何人都可以根據自己的需要來對其進行裁減,以適應自己的系統。根據實際需要將Linux移植到基于ARM920T核的s3c2410處理器芯片上,在總結現有方法存在的問題的基礎上,詳細介紹了移植的原理與方法技巧,對于構建其他的嵌入式Linux有一定的參考意義。

          1 開發環境構建

          1.1 嵌入式硬件平臺

          系統硬件平臺核心部件為三星S3C2410 ARM920T芯片,其工作頻率最高達200 MHz。包括64 MB的NAND FLASH 和64 MB的RAM,鍵盤接口、串口、CPLD譯碼單元、網絡單元、語音單元、LCD及觸摸屏等。

          1.2 嵌入式軟件平臺

          軟件平臺一般包括Bootloader、內核、文件系統以及用戶程序4大部分,它們的可執行映像存放在系統的存儲設備上。在FLASH空間上存儲的順序如下:0~128 kB用于存儲啟動代碼(VIVI);128~192 kB用于存儲啟動參數;192 kB~3 MB用于存儲內核映像,3 MB以上用于存儲文件系統,其余為用戶程序。FLASH存儲結構如圖1所示。

          1.3 交叉開發環境搭建

          基于Linux 操作系統的應用開發環境一般是由目標系統的硬件系統和宿主PC機構成。目標硬件系統用于運行操作系統和系統應用軟件,而目標硬件系統所用到的操作系統的內核編譯、應用程序的開發需要通過宿主PC機來編譯完成。雙方之間可以通過建立以太網接口、USB等來調試編譯好的驅動或應用程序。當編譯、調試通過后,再添加到內核中去。首先要正確安裝Linux操作系統,下面介紹用Crosstool制作交叉工具鏈。

          首先下載所需要的資源文件[3]:

          Crosstol-0.4.2.tar.gz,binutils-2.15.tar.bz2,gcc-3.3.6.tar.gz,glibc-2.3.2.tar.gz,linux-lib-header-2.6.12.0.tar.bz2,glibc-linxuthreads-2.3.2.tar.gz。準備好這些資源之后需要在crosstool-0.42目錄下創建配置文件arm.sh,指出工具鏈源碼所在位置和安裝的目錄,再修改配置文件arm.dat和gcc-3.3.6-glibc-2.3.2.dat文件,最后執行arm.sh腳本就可以在指定目錄生成所需要的交叉編譯工具。

          2 嵌入式Linux的移植

          2.1 BootLoader的移植

          在嵌入式系統中,BootLoader的作用與PC 機上的BIOS 類似,通過BootlLoader可以完成對系統板上的主要部件如CPU,SDRAM,FLASH,串行口等進行初始化,也可以下載文件到系統板上,對FLASH進行擦除與編程。當運行操作系統時,Bootloader會在操作系統內核運行之前運行,通過它可以分配內存空間的映射,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統準備好正確的環境[4]。

          2.2 BootLoader的架構功能

          系統使用的BootLoader是VIVI,VIVI是CPU加電后運行的第一段程序,其基本功能是初始化硬件設備,建立內存空間的映射圖,從而為調用嵌入式 Linux內核做好準備。VIVI由2部分組成:一部分是依賴于CPU體系結構的代碼,用匯編語言實現對硬件環境的初始化,并為第二部分代碼的執行做好準備;另一部分是用C語言實現內存空間的映射,并將內存映像和根文件系統映像從FLASH中讀取到RAM中,設置好啟動參數后啟動內核。

          VIVI的stage1是BootLoader一開始就執行的操作,其目的是為了stage2的執行以及隨后的內核的執行設置好一些基本的硬件環境。其步驟如下所示:

          (1) 硬件初始化:當上電或復位后,VIVI啟動,位于NAND中的前4 kB程序便從NANDFLASH中由S3C2410自動拷貝到SteppingStone的前4kB的內部RAM中該RAM之后被映射到地址0x00處。此時VIVI的前4 kB代碼開始運行,關閉Watchdog,關閉中斷,初始化PLL和時鐘主頻設定,初始化存儲器設定;

          (2) 配置串口:初始化串口控制器;

          (3) 復制自身到SDRAM中:當初始化串口結束后,VIVI開始把自身從NANDFLASH中復制到SDRAM中;

          (4) 跳轉到 stage2的入口點。VIVI的stage2階段,包括以下步驟:

          ① 繼續初始化系統硬件;

          ② 內存影射初始化,內存管理單元初始化;

          ③ 初始化堆棧;

          ④ 初始化mtd 設備;

          ⑤ 初始化私有數據;

          ⑥ 初始化內置命令;

          ⑦ 啟動VIVI。

          2.3 BootLoader的移植

          (1) 修改Malkefile,指定交叉編譯:

          ARCH = arm

          CROSS_COMPILE=/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin/arm-linux-

          (2) 修改/arch/s3c2410/smdk..c文件,按照上面所指定大小指定NAND分區;

          (3) 編譯生成VIVI。

          2.4 Linux內核的移植

          本實驗系統運行的Linux版本是針對2.6.14.1進行移植,下載內核代碼在/linux下,移植按照以下步驟:

          (1) 設置目標平臺和指定交叉編譯器:

          在最上層的根目錄/Makefile文件中,首先要指定所移植的硬件平臺,以及所使用的交叉編譯器。改為如下:

          ARCH = arm CROSS_COMPILE =/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin/arm-linux-

          (2) 設置NAND FLASH分區:

          在arch/arm/mach-s3c2410/devs.c中添加頭文件:

          #include

          #include

          #include

          (3) 將static struct mtd_partition partition_info[]中的分區和VIVI中的分區分成一樣大小。

          (4) 加入 NAND FLASH分區:

          struct s3c2410_nand_set nandset = {nr_partitions:5,partitions:partition_info,};

          (5) 建立芯片支持

          struct s3c2410_platform_nand superlpplatform =

          {tacls:0,twrph0:30,twrph1:0,sets:&nandset,nr_set s:1,};

          (6) 在NAND FLASH驅動里加入NAND FLASH 芯片支持:

          在s3c_device_ nand中增加dev = {.platform_data =&super-lpplatform}。

          (7) 在 arch/arm/machs3c2410/ machsmdk2410.c 中的__initdata 部分增加 &s3c_device_ nand,使內核啟動時初始化 NAND FLASH信息。

          (8)去掉NADD FLASH的ECC,修改drivers/mtd/nand/s3c2410.c,在s3c2410_nand_init_chip函數里修改NAND_ECC_SOFT為NAND_ECC_NON。

          (9) 配置編譯項,通過在終端下輸入命令make menuconfig來對Linux進行配置,配置完成后通過輸入命令:make 即可在/arch/arm/boot下生成所需要的內核文件zImage。

          2.5 制作文件系統

          Cramfs被設計為簡單的較小的可壓縮的文件系統,它主要用于較小ROM的嵌入式系統,它是一個壓縮的文件系統,本系統采用Cramfs文件系統。

          可以利用工具軟件Busboy和MKCRAMFS制作CRAMFS文件系統。首先在本地建立根文件系統myroot,然后在其目錄下建立所需要的子目錄,如bin,dev,etc,lib,mnt,proc,sbin,usr等。建立好目錄之后要給各相應的目錄復制相應的文件或庫,可以通過BusyBox來實現。BusyBox是一個可配置的工具。通過make menuconfig 配置完成BusyBox后,修改BusyBox的Makefile內容,使用交叉編譯環境。然后通過make 命令進行編譯,make install進行安裝,再將生成的目錄下的相應文件復制到所構建的文件系統的相應目錄下,然后編寫相應的linuxrc等文件。完成這些步驟后,利用MKCRAMFS工具來制作所需要的文件系統,只需要在終端通過命令mkcramfs myroot myroot.crarmfs就可以把myroot制作成只讀的壓縮的cramfs文件系統。

          2.6 內核及文件系統的下載

          利用VIVI通過超級終端重新下載VIVI,內核和root,在Windows下啟動超級終端,或者Linux下啟動Minicom設置其為(115200,8位數據,1位停止位,無奇偶校驗),用串口線連接實驗系統和 PC 機的串口。系統上電后,在VIVI命令行下操作:

          下載VIVI:輸入vivi> load FLASH vivi x,之后,通過 xmodem 協議發送vivi 文件;

          下載內核:輸入vivi> load FLASH kernel x,通過 xmodem 協議發送內核文件;

          下載文件系統:輸入vivi> load FLASH root x,通過 xmodem 協議發送root文件系統。

          3 結 語

          針對嵌入式Linux的構建,以S3C2410處理器為例,詳細闡述整個Linux系統構建的原理框架和移植的方法,對移植中的關鍵技術和重要步驟給出了詳細的說明。移植后的Linux 系統在開發板上運行穩定,性能良好。操作過程對嵌入式Linux系統在其他處理器上的移植也具有參考意義。

          參考文獻

          [1]劉振綱,劉成安,盧劍翔.移植標準Linux到S3C2410[J].微計算機信息,2006(11):152-153.

          [2]陶列駿,潘金貴.Linux的可移植性[J].小型微型計算機系統,2002(1):50-53.

          [3]李亞鋒,歐文盛.ARM嵌入式Linux系統開發[M].北京:清華大學出版社,2007.

          [4]張杰,吳敏,曹衛華.基于S3C2410的Linux移植[J].微型電腦應用,2005(3):57-59.

          [5]章曉明,杜春燕,陸建德.HHPPC8245上的嵌入式Linux移植及VPN開發[J].計算機工程,2007(1):274-276.

          [6]陳峰,李濱滔,戈志華.基于S3C2410的嵌入式 Linux系統構建[J].現代電子技術,2007,30(24):55-57.

          [7]劉明博,鄧中亮.基于ARM的嵌入式操作系統移植的研究[J].計算機系統應用,2006(11):87-88.

          [8]許榮.基于AT91RM9200的嵌入式Linux系統移植[J].電子技術,2006(3):64-68.

          [9]Daniel P.Bovel Understanding the Linux Kernel[M].2ndEdition.OReilly,2002.

          linux系統范文第4篇

          需求描述

          海運船舶安裝使用航運管理系統,必須充分考慮船舶遠離陸岸,震動大、鹽分高,硬件容易出故障等等因素,因此如何制訂運行高效、穩定可靠、經濟可行的技術方案尤為重要。系統的設計本著快速應用、適用性、先進性、開放性、技術獨立性等原則,利用現有資源,提供一個高性能、低成本、安全穩定的應用系統。

          中海貨運決定在其所擁有的船舶上應用中標普華Linux服務器,同時使用中標普華Linux提供的postgresql數據庫軟件,來構筑其船舶數據庫與應用服務器。該數據庫服務器作為船載數據庫服務器負責船只日常數據采集與管理,通過衛星無限傳輸采用email等方式與岸上服務器進行數據通信,每日的增量數據為50K左右。用戶對Linux服務器的要求如下:

          ―能支持TOMCAT,支持MYSQL、甲骨文等除MSSQL外所有數據庫。

          ―能高效運行JAVA程序。

          ―日增數據量50K左右。

          ―每天通過電郵與岸上服務器進行數據同步。

          ―高可靠性與高穩定性。

          ―抵御病毒和黑客攻擊的能力強。

          ―提供有效數據備份和恢復方案。

          ―提供多種靈活易用的方式進行系統的升級與更新。

          ―管理方便,易于培訓與使用。

          ―良好經濟性,利于大規模部署。

          應用中標普華Linux的高可用的實時數據備份與鏡像方案,保證了用戶應用的可持續性和連續性。

          系統的設計充分考慮了航運管理系統的經濟性、安全性、可維護性等多個方面,為用戶提供了從系統及應用的安裝、調試、運行、到系統與應用的維護支持與培訓等一條龍的全面解決方案,保證了航運管理系統的順利實施與維護。

          應用特點

          航運管理在海事安全方面的重要性不言而喻,系統一旦出現故障,可能產生災難性后果,陸岸技術人員在提供技術支持、排除故障等方面也很不方便。通過應用以下方案,保證系統的穩定。主要包括:

          服務器后備

          兩臺服務器都安裝中標普華inux操作系統和航運管理系統,利用中標普華Linux提供的自動熱備功能,相互之間做到系統和數據的實時備份。

          遠程系統和數據恢復

          如果主機和副機的磁介質同時損壞,用備份光盤安裝操作系統和航運管理系統,公司服務器用郵件將該輪數據發送到船舶,恢復數據。

          病毒防護

          船舶的數據庫服務器采用Linux操作系統,避免了Windows上的各種病毒造成的系統問題。

          航運管理系統的維護升級

          linux系統范文第5篇

          關鍵詞 Linux 系統安全 用戶管理 安全工具

          中圖分類號:TP316.8 文獻標識碼:A

          安全是當今IT相關頭條新聞的重要話題。經常出現的系統漏洞和安全補丁以及病毒和蠕蟲是每個使用計算機的人都耳熟能詳的名詞。因為幾乎每臺計算機系統都連接到另外的計算機或者連接到Internet,因此確保這些計算機的安全,對于減少入侵、數據竊取或丟失、誤用甚至對第三方的責任而言都是至關重要的。①

          Linux作為一個現代的、開放源代碼的操作系統,它允許用戶自由的復制和修改其源代碼,用戶可以根據自己的環境定制Linux、向操作系統添加新部件等,正是由于軟件的每個用戶和開發者都可以訪問其源代碼,因而有許多人在控制和審視源代碼中可能的安全漏洞。軟件缺陷很快會被發現。一方面,這會導致這些缺陷更早被利用;另一方面,很快就會有可用的安全補丁。

          當系統連接到網絡并向其他計算機提供服務時,系統就會有可能成為被攻擊的對象。在這種情況下,系統漏洞可能會讓入侵者控制計算機。因此,從開始計劃直到拆除系統的整個系統生命周期中安全都是一個最基本的問題。

          那么,如何保護Linux安全呢?

          1 系統的用戶管理

          與其他UNIX操作系統一樣,在進入Linux系統時需要驗證賬號和密碼。Linux一般將密碼加密之后,存放在/etc/passwd文件中,Linux系統上的所有用戶都可以讀到該文件,這種方法不太安全,因為一般的用戶可以利用現成的密碼破譯工具,用窮舉法猜測出密碼。②比較安全的方法是設定影子文件/etc/shadow,通過影子文件允許特殊權限的用戶閱讀該文件。在Linux系統中,如果要采用影子文件,必須將所有的公用程序重新編譯,才能支持影子文件。這種方法比較麻煩,比較簡單的方法是采用插入式驗證模塊(PAM)。很多Linux系統都帶有PAM,它是一種身份驗證機制,可以用來動態地改變身份驗證的方法和要求,而不要求重新編譯其他公用程序。這是因為PAM采用封閉包的方式,將所有與身份驗證有關的邏輯全部隱藏在模塊內,因此它是影子文件的最佳幫手。

          除密碼之外,用戶賬號也有安全等級,這是因為在Linux上每個賬號可以被賦予不同的權限,因此在建立一個新用戶ID時,系統管理員應該根據需要賦予該賬號不同的權限,并且歸并到不同的用戶組中。

          在Linux系統中,可以在/etc/hosts.allow文件中設定允許上機人員的名單,同時在/etc/hosts.deny文件中設置不允許上機人員的名單,Linux將自動把允許進入或不允許進入的結果記錄到/rar/log/secure文件中,系統管理員可以據此查出可疑的進入記錄。

          每個賬號ID應該有專人負責。在企業中,如果負責某個ID的職員離職,管理員應立即從系統中刪除該賬號。很多入侵事件都是利用了那些很久不用的賬號。

          在用戶賬號之中,尤其要注意具有root權限的賬號,這種超級用戶權力無限,可以修改或刪除各種系統設置。因此,在給任何賬號賦予root權限之前,都必須仔細考慮,最好不要輕易將超級用戶授權出去。Linux系統中的/etc/security文件包含了一組能夠以root賬號登陸的終端機名稱,該文件的初始值僅允許本地虛擬控制臺(rtys)以root權限登陸,而不允許遠程用戶以root權限登陸,最好不要修改該文件。有些程序的安裝和維護工作必須要求有超級用戶的權限,在這種情況下,可以利用sudo這樣的工具讓這類用戶有部分超級用戶的權限。

          2 安全工具

          下面介紹一些可以用于Linux的安全工具,這些工具使用戶的服務器運行起來更加安全,可以解決各方面的問題。

          2.1 nmap和nessus網絡安全掃描工具

          nmap工具是一個端口掃描工具,它能掃描整個網絡或一臺主機上的開放端口。如果讀者對安全擔憂或者要尋找攻擊者將會發現的漏洞,那么應花些時間來安裝并使用nmap。nmap集成了大量的掃描技術。nmap工具還可以使用TCP/IP指紋來識別一個遠程系統運行的是哪種操作系統。該工具處于系統管理員和攻擊工具之間的灰色區域。如果讀者負責一個網絡,可以使用nmap檢測本地網絡是否有安全漏洞。

          nessus是一個功能強大而又易于使用的遠程安全掃描器,它不僅免費而且更新極快。安全掃描器的功能是對指定網絡進行安全檢查,找出該網絡是否存在會導致對手攻擊的安全漏洞。該系統被設計為C/S模式,服務器段負責進行安全檢查,客戶端用來配置管理服務器。nessus的安全檢查是由大量插件完成的,其擴展性強,容易使用,功能強大,可以掃描出多種安全漏洞。

          2.2 弱點測試工具

          (1)chkacct。chkacct是一個檢查用戶賬號安全的工具。它能檢查文件的權限并恢復到初始權限。它還能尋找那些能被所有用戶可讀的文件并查看以點號開頭的文件。它可以被用戶使用或者被系統或安全管理員專用。

          (2)Courtney。Courtney檢測一個網絡,查明SATAN探索的結果 ,并試圖識別他們的來源。它從tcpdump獲得輸入并計算一臺機器在一個特定時段內產生新的服務請求的次數。如果在該時段內,一臺機器和大量服務器連接,Courtney就把該機器識別為一個潛在的SATAN主機

          3 日志工具(logrotate,swatch,logcheck)

          (1)logrotate。一般的Linux發行版中都自帶這個工具,能夠解決日志文件過大的問題。它可以自動使日志循環,刪除保存最久的日志。可以把它放在crontab中,每天定期運行。這在很多Linux發行版中都是默認設置的。

          (2)swatch。Swatch是一個實時的日志監控工具。讀者可以設置感興趣的時間,它可以在事件發生的時候告訴讀者。Swatch有兩種運行方式:一種可以在檢查日志完畢退出,另一種可以連續監視日志中的新信息。

          4 SSH和Tripwire

          (1)SSH服務

          傳統的網絡服務程序,如ftp、pop和telnet在本周上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易收到“中間人”方式的攻擊。這些“中間人”冒充真正的服務器接收用戶傳給服務器的數據,然后冒充用戶的數據傳給真正的服務器。

          通過使用SSH,用戶可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。

          (2)Tripwire

          如果有人侵入了你的系統,在系統中放置了木馬和后門,你怎么才能知道呢?tripwire就是這樣一個對系統做完整性檢查的工具,它是目前最為著名的Linux下文件系統完整性檢查的軟件工具,這一軟件采用的技術核心就是對每個要監控的文件產生一個數字簽名,保留下來。當文件現在的數字簽名與保留的數字簽名不一致時,那么現在這個文件必定被改動過了。

          5 反掃描工具Portsentry

          通過防火墻可以限制自己系統中什么端口開放,什么端口不開放。對于外部的人們來說,這些信息都是保密的。黑客為了得到他人計算機中開放的端口,往往會進行各種方式的掃描,這樣的掃描在互聯網上也推出課件。一般的掃描活動都是進行入侵的前奏,對安全是極大的威脅。Portsentry就是這樣一個反掃描工具,它可以實時發現并分析記錄對本機的掃描,它通過syslog做記錄,將掃描的主機加入/etc/hosts.deny,馬上禁止所有通向掃描主機的網絡流量,同時過濾掉所有來自掃描主機的網絡流量。

          從計算機安全角度來看,世界上沒有百分之百安全的計算機系統,Linux系統也不例外,作為Linux系統管理員,需要保持一定的安全防范意識,對系統要定期做檢查,發現問題要立即采取措施,根據實際的應用場景,靈活地綜合采取以上方法和工具,才能取得較好的效果。

          注釋

          相關期刊更多

          中國服飾

          部級期刊 審核時間1個月內

          中華人民共和國教育部

          電池

          北大期刊 審核時間1-3個月

          中國輕工業聯合會

          電化學

          北大期刊 審核時間1-3個月

          中國科學技術協會