全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1866
推到 Plurk!
推到 Facebook!

第六章 TCP/IP網路管理

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-14 01:03:17 IP:61.64.xxx.xxx 未訂閱
第六章 TCP/IP網路管理 概述 http://www.supernet.com.cn/chinese/network/1043260872.html 在伺服器上安裝多塊網卡 網路相關的一些配置文件 用命令行手工配置TCP/IP網路 TCP/IP安全問題概述 IP資料包(packet) IP機制 IP資料包頭 TCP/IP 安全問題 安全問題的解決方案 總結 概述 網路管理涵蓋了很多方面的內容:一般來說包括收集網路的統計資料和狀態資訊,並且在需要時採取一定的措施來解決出現的故障。最原始的網路監控技術是定期“ping”重要的主機。更複雜的網路監控則需要監視網路上的各個設備的狀態和統計資訊,如:各種類型的資料包(datagram)統計及各種類型的錯誤的統計。 這一章主要是關於聯網設備,網路相關配置文件、重要的網路命令和TCP/IP安全等方面的內容。 在伺服器上安裝多塊網卡 在使用Linux作爲兩個乙太網之間的閘道的情況下,伺服器至少需要配置兩塊網卡。爲了減少啓動時可能出現的問題,Linux內核不會自動檢測多個網卡。若需要在伺服器上安裝多塊網卡,對於已經將網卡的驅動編譯進內核中的系統,則需要在“/etc/lilo.conf”文件中指定各個網卡的參數資訊;而對於沒有將網卡的驅動編譯到內核而是作爲模組動態載入的系統,應該在“conf.modules”文件中進行相應的配置。 若設備驅動被編譯爲模組(內核的模組):對於PCI設備,模組將自動檢測到所有已經安裝到系統上的設備;對於ISA卡,則需要向模組提供IO位址,以使模組知道在何處尋找該卡,這些資訊在“/etc/conf.modules”中提供。 例如,我們有兩塊ISA匯流排的3c509卡,一個IO位址是0x300,另一個是0x320。編輯“conf.modules”文件如下: alias eth0 3c509 alias eth1 3c509 options 3c509 io=0x300,0x320 這是說明3c509的驅動程式應當被eth0或eth1載入(alias eth0,eth1),並且它們應該以參數io=0x300,0x320被裝載,這樣驅動程式知道到哪里去尋找網卡,其中0x是不可缺少的。 對於PCI卡,僅僅需要alias命令來使ethN和適當的驅動模組名關聯,PCI卡的IO位址將會被自動的檢測到。對於PCI卡,編輯“conf.modules”文件如下: alias eth0 3c509 alias eth1 3c509 若驅動已經被編譯進了內核:系統啓動時的PCI檢測程式將會自動找到所有相關的網卡。ISA卡一般也能夠被自動檢測到,但是在某些情況下,ISA卡仍然需要做下面的配置工作: 在“/etc/lilo.conf”中增加配置資訊,其方法是通過LILO程式將啓動參數資訊傳遞給內核。對於ISA卡,編輯“lilo.conf”文件,增加如下內容: append="ether="0,0,eht1" 注意:先不要在“lilo.conf”中加入啓動參數,測試一下你的ISA卡,若失敗再使用啓動參數。 如果用傳遞啓動參數的方法,eth0和eth1將按照啓動時被發現的順序來設置。因爲我們已經重新編譯了內核,所以必須使用第二種方法(在lilo.conf中加入啓動參數)在系統中安裝我們的第二塊網卡。這種方法只對ISA卡有必要,PCI卡會被自動查找到,所以沒有什麽必要。 和網路相關的一些配置文件 在Linux系統中,TCP/IP網路是通過若干個文字檔案進行配置的,也許你需要編輯這些文件來完成聯網工作。下面的部分介紹基本的 TCP/IP配置文件: “/etc/HOSTNAME”文件: 該文件包含了系統的主機名稱,包括完全的功能變數名稱,如: deep.openarch.com “/etc/sysconfig/network-scripts/ifcfg-ethN”文件: 在RedHat6.1中,系統網路設備的配置文件保存在“/etc/sysconfig/network-scripts”目錄下,ifcfg-eth0包含第一塊網卡的配置資訊,ifcfg-eht1包含第二塊網卡的配置資訊。 下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例: DEVICE=eth0 IPADDR=208.164.186.1 NETMASK=255.255.255.0 NETWORK=208.164.186.0 BROADCAST=208.164.186.255 ONBOOT=yes BOOTPROTO=none USERCTL=no 若希望手工修改網路位址或在新的介面上增加新的網路介面,可以通過修改對應的文件(ifcfg-ethN)或創建新的文件來實現。 DEVICE=name name表示物理設備的名字 IPADDR=addr addr表示賦給該卡的IP地址 NETMASK=mask mask表示網路遮罩 NETWORK=addr addr表示網路位址 BROADCAST=addr addr表示廣播地址 ONBOOT=yes/no 啓動時是否啟動該卡 BOOTPROTO=proto proto取值可以是: none:無須啓動協定 bootp:使用bootp協定 dhcp:使用dhcp協定 USERCTL=yes/no 是否允許非root用戶控制該設備 “/etc/resolv.conf”文件: 該文件是由解析器(resolver,一個根據主機名解析IP位址的庫)使用的配置文件,示例如下: search openarch.com nameserver 208.164.186.1 nameserver 208.164.186.2 “search domainname.com”表示當提供了一個不包括完全功能變數名稱的主機名時,在該主機名後添加domainname.com的尾碼;“nameserver”表示解析功能變數名稱時使用該位址指定的主機爲功能變數名稱伺服器。其中功能變數名稱伺服器是按照文件中出現的順序來查詢的。 “/etc/host.conf”文件: 該文件指定如何解析主機名。Linux通過解析器庫來獲得主機名對應的IP位址。下面是一個“/etc/host.conf”的示例: order bind,hosts multi on ospoof on “order bind,hosts”指定主機名查詢順序,這裏規定先使用DNS來解析功能變數名稱,然後再查詢“/etc/hosts”文件。 “multi on”指定是否“/etc/hosts”文件中指定的主機可以有多個位址,擁有多個IP位址的主機一般稱爲具有多個網路介面。 “nospoof on”指不允許對該伺服器進行IP位址欺騙。IP欺騙是一種攻擊系統安全的手段,通過把IP位址僞裝成別的電腦,來取得其他電腦的信任。 “/etc/sysconfig/network”文件 該文件用來指定伺服器上的網路配置資訊,下面是一個示例: NETWORK=yes RORWARD_IPV4=yes HOSTNAME=deep.openarch.com GAREWAY=0.0.0.0 GATEWAYDEV= NETWORK=yes/no 網路是否被配置; FORWARD_IPV4=yes/no 是否開啓IP轉發功能 HOSTNAME=hostname hostname表示伺服器的主機名 GAREWAY=gw-ip gw-ip表示網路閘道的IP地址 GAREWAYDEV=gw-dev gw-dw表示閘道的設備名,如:etho等 注意:爲了和老的軟體相相容,“/etc/HOSTNAME”文件應該用和HOSTNAME=hostname相同的主機名。 “/etc/hosts”文件 當機器啓動時,在可以查詢DNS以前,機器需要查詢一些主機名到IP位址的匹配。這些匹配資訊存放在/etc/hosts文件中。在沒有功能變數名稱伺服器情況下,系統上的所有網路程式都通過查詢該文件來解析對應於某個主機名的IP位址。 下面是一個“/etc/hosts”文件的示例: IP Address Hostname Alias 127.0.0.1 Localhost Gate.openarch.com 208.164.186.1 gate.openarch.com Gate 208.164.186.2 forest.openarch.com Forest 208.164.186.3 deep.openarch.com Deep 最左邊一列是主機IP資訊,中間一列是主機名。任何後面的列都是該主機的別名。一旦配置完機器的網路配置文件,應該重新啓動網路以使修改生效。使用下面的命令來重新啓動網路: /etc/rc.d/init.d/network restart 注意:tcpd程式是負責檢測如telnet、ftp等的服務請求。 一旦有服務請求到來,inetd進程將啓動tcpd進程,tcpd在日誌文件中記錄該請求,並且完成一些其他的檢測工作。如果一切正常通過,tcpd將啓動相應的伺服器進程,然後自己結束。 tcpd要通過查詢DNS伺服器,先對該客戶機的IP位址進行反向解析得到主機名,然後再解析得到該主機名對應的IP位址,接著,把得到IP地址和發出請求的客戶的機器的IP位址進行比較,通過這些步驟來實現對發送請求的客戶機的驗證。若兩者不匹配,則tcpd認爲發出請求的機器在僞裝成其他的機器,則拒絕請求,這就是爲什麽有時候telnet到Linux機器要等待那麽長時間的原因,可以通過在“/etc/hosts”加入客戶的機器的IP位址和主機名的匹配項,就可以減少登錄等待時間。 tcpd可以設置成禁止源路徑路由(source-routing)socket的連接請求。這個設置可以避免黑客用把自己的IP位址僞裝成別的電腦的IP位址的方法,攻擊伺服器。請注意這個設置對UDP無效。當伺服器試圖把請求服務的客戶機的IP位址反向解析成主機名的時候經常會出現超時(timeout)錯誤。其原因可能是DNS伺服器沒有配置好,或者DNS根本沒有請求服務的用戶端電腦的任何資訊。 用命令行手工配置TCP/IP網路 ifconfig是用來設置和配置網卡的命令工行具,爲了手工配置網路你需要熟悉這個命令。用該命令的好處是無須重新啓動機器。 賦給eth0介面IP位址208.164.186.2,使用命令: [root@deep]#ifconfig eth0 208.164.186.2 netmask 255.255.255.0 列出所有的網路介面,你可以使用命令: [root@deep]# ifconfig 這個命令的輸出是這樣的: eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56 inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1295 errors:0 dropped:0 overruns:0 frame:0 TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:11 Base address:0xa800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:139 errors:0 dropped:0 overruns:0 frame:0 TX packets:139 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 若運行不帶任何參數的ifconfig命令,這個命令將顯示機器所有啟動的介面的資訊。帶有-a 參數的該命令則顯示所有的介面的資訊,包括沒有啟動的介面,例如: [root@deep]# ifconfig -a 這個命令的輸出是這樣的: eth0 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56 inet addr:208.164.186.2 Bcast:208.164.186.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1295 errors:0 dropped:0 overruns:0 frame:0 TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:11 Base address:0xa800 eth1 Link encap:Ethernet HWaddr 00:E0:18:90:1B:56 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1295 errors:0 dropped:0 overruns:0 frame:0 TX packets:1163 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:5 Base address:0xa320 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:139 errors:0 dropped:0 overruns:0 frame:0 TX packets:139 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 注意:用ifconfig命令配置的網路設備參數,在重新啓動以後,這些參數設置將會丟失。 給208.164.186.1配置缺省閘道,使用命令: [root@deep]# route add default gw 208.164.186.1 在這個例子中,缺省閘道設置爲208.164.186.1。 然後,測試一下是否可以連通本網段的機器,從網路上隨便選一台主機測試一下,比如選擇208.164.186.1。 用下面的命令測試一下能否連通這台電腦: [root@deep]# ping 208.164.186.1 輸出會是這樣的: PING 208.164.186.1 (208.164.186.1) from 208.164.186.2 : 56 data bytes 64 bytes from 208.164.186.2: icmp_seq=0 ttl=128 time=1.0 ms 64 bytes from 208.164.186.2: icmp_seq=1 ttl=128 time=1.0 ms 64 bytes from 208.164.186.2: icmp_seq=2 ttl=128 time=1.0 ms 64 bytes from 208.164.186.2: icmp_seq=3 ttl=128 time=1.0 ms --- 208.164.186.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1.0/1.0/1.0 ms 現在可以使用route命令輸出路由表資訊來查看。 用下面的命令顯示路由資訊: [root@deep]# route -n 輸出是這樣的: Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 208.164.186.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 208.164.186.0 208.164.186.2 255.255.255.0 UG 0 0 0 eth0 208.164.186.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 爲了快速檢查介面狀態資訊,使用netstat -i命令: [root@deep]# netstat -i 輸出是這樣的: Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 4236 0 0 0 3700 0 0 0 BRU lo 3924 0 13300 0 0 0 13300 0 0 0 LRU ppp0 1500 0 14 1 0 0 16 0 0 0 PRU netstat命令的另外一個有用處的選項是-t,其將顯示所有的啟動的TCP連接: [root@deep]# netstat -t 輸出是這樣的: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State Tcp 0 0 deep.openar:netbios-ssn gate.openarch.com:1045 ESTABLISHED Tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED Tcp 0 0 localhost:1033 localhost:1032 ESTABLISHED Tcp 0 0 localhost:1030 localhost:1034 ESTABLISHED Tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED Tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED Tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED Tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED Tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED Tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED Tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED 顯示所有的活動的和被監聽的TCP連接,使用命令: [root@deep]# netstat -vat 輸出是這樣的: Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 deep.openarch.co:domain *:* LISTEN tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 deep.openarch.com:ssh gate.openarch.com:1682 ESTABLISHED tcp 0 0 *:webcache *:* LISTEN tcp 0 0 deep.openar:netbios-ssn *:* LISTEN tcp 0 0 localhost:netbios-ssn *:* LISTEN tcp 0 0 localhost:1032 localhost:1033 ESTABLISHED tcp 0 0 localhost:1033 localhost:1032 ESTABLISHED tcp 0 0 localhost:1030 localhost:1031 ESTABLISHED tcp 0 0 localhost:1031 localhost:1030 ESTABLISHED tcp 0 0 localhost:1028 localhost:1029 ESTABLISHED tcp 0 0 localhost:1029 localhost:1028 ESTABLISHED tcp 0 0 localhost:1026 localhost:1027 ESTABLISHED tcp 0 0 localhost:1027 localhost:1026 ESTABLISHED tcp 0 0 localhost:1024 localhost:1025 ESTABLISHED tcp 0 0 localhost:1025 localhost:1024 ESTABLISHED tcp 0 0 deep.openarch.com:www *:* LISTEN tcp 0 0 deep.openarch.com:https *:* LISTEN tcp 0 0 *:389 *:* LISTEN tcp 0 0 *:ssh *:* LISTEN 使系統中所有的網路介面停止工作,用命令: [root@deep]# /etc/rc.d/init.d/network stop 啓動系統中所有的網路介面,用命令: [root@deep]# /etc/rc.d/init.d/network start TCP/IP安全問題概述 下面的內容要求讀者知道TCP/IP協定的基本原理,例如:IP和TCP頭的各個欄位的功能以及連接的建立過程。這裏先簡單地介紹一下TCP/IP協定。 IP資料包(packet) 資料包這個術語指的是IP協定消息。消息分爲消息頭和消息體,消息頭是IP協定使用的各種參數資訊,如:源、目的地址等等。消息體是上層協定—TCP協定的資料內容。 IP機制 Linux支援三種IP消息類型:ICMP、UDP和TCP。一個ICMP資料報是網路級的IP控制和狀態消息。ICMP消息控制兩臺端主機之間的與通信相關資訊。UDP 類型的IP包在網路應用程式之間傳送資料,但是不保證傳送質量和資料包的傳送順序。UDP資料的傳送類似郵局的明信片發送方式。TCP類型的IP包同樣在網路應用程式之間傳送資料,但是TCP資料包頭包含了更多的資訊,從而保證了可靠有序的資料傳輸。傳送TCP資料類似通過電話系統交談的過程:資料可靠而且保證傳送順序。大多數Internet應用程式都使用TCP協定,用UDP的比較少。也就是說絕大多數的Internet服務都傾向于在客戶程式和伺服器程式之間建立雙向的資料傳送通道(用TCP),而不是單向的資料傳送通道(用UDP)。 IP資料包頭 所有的IP資料包(ICMP、UDP或TCP)都要包含源、目的的IP位址和IP包的上層協定的類型,如:ICMP, UDP或TCP。根據不同的協定類型,IP資料包頭還包含其他不同的欄位。ICMP類型的IP資料包包含一個標識是控制或狀態消息的類型欄位,以及一個進一步指示是何種類型的控制或狀態消息類型的欄位。對於UDP和TCP類型還包含兩個分別標識源和目的埠號的欄位。TCP資料報頭還包含區分每個資料報的識別字及保證連接狀態的資訊的欄位。 TCP/IP 安全問題 TCP/IP協定本身有不少的缺陷,允許攻擊者利用隱藏通道的方式在看上去正常的資料包中秘密地傳輸資料。下面我們就通過理論結合例子來對這些缺陷進行進一步說明: 一個隱藏通道指:任何被進程用來進行可能對系統安全策略造成威脅的資料傳輸的通道。TCP/IP的設計本身並不想有什麽隱藏通道,但是設計上的缺陷導致了用來非法傳輸資訊的隱藏通道的存在。 在TCP/IP環境下,有若干可以用來建立隱藏通道,在主機之間實現非法通信的方法,例如: 旁路包篩檢程式,網路探測器(sniffer)和“不潔詞”(dirty word)搜索引擎。 以在正常的資訊包中封裝經過加密的或沒有經過加密的資訊的方式,通過網路秘密傳輸資訊。 通過將封裝有非法資訊的僞裝包在Internet上的某一個站點上"中轉"一次來隱藏被傳輸的資料的源發送位置。 衆所周知,TCP是面向連接的可靠的協定。簡單的說,TCP協定採取一定的措施保證到達遠端機器的資料沒有被篡改。實現這個特性依賴於TCP的三次握手建鏈機制: 第一步:發送一個帶有ISN(Initial Sequence Number,序列號)的同步資料包-SYN。 主機A希望同主機B建立連接。主機A發送一個資料包,該資料包的SYN位元被置位,表示希望建立一個新的連接,並且該資料包帶有一個ISN號,來識別主機之間發送的不同的資料包。 Host A ------ SYN(ISN) ------> Host B 第二步:遠端機器回應一個確認包ACK。 主機B通過發送一個SYN位和ACK位元被置位元的資料包來回應該主機A的連接請求。這個回應包中不但包含了主機B的ISN,而且包含了主機A的ISN 1表示剛才的連接請求資料包被正確的接收,等待接收SN爲ISN 1的資料包。 Host A <------ SYN(ISN 1)/ACK ------ Host B 第三步:主機A通過再發送一個確認包ACK給主機B來完成連接的建立。 Host A ------ ACK ------> Host B 整個連接過程在幾個毫秒內完成。握手協定確保在主機之間建立一個可靠的鏈結。這就是爲什麽TCP被看作是面向連接的協定。而UDP協定並沒有這樣的建立連接的協商過程,所以UDP被看作是不可靠的協定。 IP包頭: 0 4 8 12 16 19 20 24 28 31 32 VERS HLEN Service Type Total Length Identification Flags Fragment Offset Source IP Address Destination IP Address IP Options Padding Data TCP包頭: 0 4 8 12 16 20 24 28 31 Source Port Destination Port Sequence Number Acknowledgement Number HLEN Reserved Code Bits Window Checksum Urgent Pointer Options Padding Data 在兩種資料包頭內,都有多個欄位不是進行正常資料傳輸所必須的,這些選項欄位是由發送者根據需要來決定是否使用的。通過對這些選項欄位的分析可以發現有很多種可能來存儲和傳輸資料。利用這些欄位的基礎是對取值0-255的ASCII字元進行編碼。使用這個方法,可以通過在主機之間傳送看似正常的資料包如:建立連接請求、正常的資料傳輸等,來秘密的傳輸資料。這些資料報包可以在上層協定資料欄位中不包含任何資料或者包含一些無用的資料資訊。這些資料包甚至可以包含僞裝的目的、源地址和埠號,來實現穿越包過濾防火牆。另外,僞裝的資料報還可以估計經過網路上一個無關站點的中轉(bounce)來逃避追蹤。 安全問題的解決方案 下面的協定和系統通常被用來在電腦網路中解決和提供不同程度的安全服務。 包過濾 網路位址轉換(NAT) IP安全體系結構(IPSec) SOCKS 安全套接字層(SSL) 應用級代理 防火牆 Kerberos和其他認證系統 安全電子傳輸(SET) 下面這個圖解釋了這些安全解決方案的在TCP/IP層中的實現: 總結 通過學習和閱讀本章,應該掌握如下內容: 應該學會編輯如下的文件來配置Linux系統的網路:“/etc/hosts”、“/etc/host.conf”、“/etc/resolv.conf”、“/etc/HOSTNAME”、“/etc/sysconfig/network”和在“/etc/sysconfig/network-scripts”目錄下面的腳本文件。 發佈時間: 2003年01月23日 作 者: jack ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-05-16 8:37:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!