自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Samba服務(wù)器安全指南

系統(tǒng) Linux
Samba 有很多特性可以限制哪些人能訪問哪些共享文件 — 限制特定用戶名的訪問、強制要求密碼、檢查組成員或在網(wǎng)絡(luò)層過濾。本文介紹如何在防火墻級別配置進出 Samba 服務(wù)器的訪問,以及如何排除與 Samba 服務(wù)器有關(guān)的防火墻故障。

在本文中,將了解這些概念:

  • 在防火墻級別配置進出 Samba 服務(wù)器的訪問
  • 排除與 Samba 服務(wù)器有關(guān)的防火墻故障

本文幫助您準備 Linux Professional Institute (LPI) 的混合環(huán)境專業(yè)考試(302)的主題 315 下的目標 315.2。該目標的權(quán)值為 2。

先決條件

為了最有效地利用本系列中的文章,您應(yīng)該具備高級 Linux 知識,并需要準備一個 Linux 系統(tǒng),用它來練習(xí)本文介紹的命令。另外,您還要能訪問 Windows 環(huán)境,從而可以用它來測試安全設(shè)置。

防火墻

Samba 有很多特性可以限制哪些人能訪問哪些共享文件 — 限制特定用戶名的訪問、強制要求密碼、檢查組成員或在網(wǎng)絡(luò)層過濾。后面的參數(shù),比如 allow hosts 和 smb ports,它們對 IP 地址和 User Datagram Protocol (UDP)/TCP 端口進行操作,提供了一種簡單的方法來控制哪些主機可連接到 Samba 服務(wù)器上。

如果能識別哪些設(shè)備連接到服務(wù)器,比如屬于內(nèi)部網(wǎng)絡(luò),或者甚至是某個特定的子網(wǎng)或一組服務(wù)器,那么就實現(xiàn)了網(wǎng)絡(luò)層控制。這是第一道防線:如果攻擊者無法連接到設(shè)備,那么設(shè)備會更安全。

在 Samba 守護進程中控制網(wǎng)絡(luò)網(wǎng)絡(luò)訪問,這聽上去是完美的解決方案,但其實有更好的方法。為了確定遠程連接是否滿足要求,Samba 首先要接受連接,因為 Samba 只有在完成連接后才能獲取詳細信息。如果是想要防止不符合要求的用戶連接到 Samba,那么防止 Samba 看到這些連接更有意義。Samba 中的所有配置都只會影響 Samba,因此必須為其他的守護進程(比如 web 服務(wù)器和文件傳輸)找到類似的解決方案。

在典型環(huán)境中,網(wǎng)絡(luò)安全不是由系統(tǒng)管理員而是由其他 IT 員工負責(zé)。在主機層(而不是應(yīng)用程序?qū)樱┛刂圃L問能夠?qū)崿F(xiàn)業(yè)務(wù)分離,而且會減少由于更改 smb.conf 而導(dǎo)致的錯誤。

了解 iptables

Linux 提供了一個強大的基于主機的防火墻,稱為 iptables。該防火墻能夠檢查進出或通過 Linux 設(shè)備的包。iptables 也可以指 Linux 內(nèi)核中的包過濾系統(tǒng)或用來管理過濾器的命令名稱。經(jīng)過幾年的發(fā)展,內(nèi)核中的包過濾系統(tǒng)已經(jīng)從簡單的匹配引擎發(fā)展成可動態(tài)加載插件的強大防火墻。因此,如果是在基本用例范圍之外,配置起來就相當復(fù)雜。

關(guān)于 iptables 的第一個重要概念就是表本身。一個表就是一組規(guī)則和操作的自包含列表。當內(nèi)核需要過濾包時,它會查詢 filter 表。如果需要網(wǎng)絡(luò)地址轉(zhuǎn)換 (NAT),就會用到 nat 表。根據(jù)加載到內(nèi)核的網(wǎng)絡(luò)特性的不同,還會用到其他表。一個數(shù)據(jù)包可遍歷多個表 — 例如,在地址轉(zhuǎn)換前執(zhí)行包過濾。

每個表的內(nèi)部都是一組鏈。每個表都有一些預(yù)定義的鏈,您也可以將自定義鏈加入列表中。這些預(yù)定義的鏈會在數(shù)據(jù)包生命周期不同時刻使用。例如,filter 表有三個預(yù)定義鏈:

  • INPUT。 用來定義如何處理傳向主機自身的數(shù)據(jù)包。
  • OUTPUT。 適用于從主機傳出的包。
  • FORWARD。 僅用于從一個接口傳遞到另一個接口,比如當主機充當路由器時的數(shù)據(jù)包。

每條鏈都是一個包含零個或多個規(guī)則的有序列表,每個規(guī)則由匹配的子句和目標組成。匹配子句可以是任何內(nèi)容,從 IP 地址或端口到只在特定操作過于頻繁時起作用的速率限制語句。目標可以是另一個鏈或一個操作,比如接受或丟棄數(shù)據(jù)包的指令。您可以通過內(nèi)核模塊創(chuàng)建匹配子句和目標,沒有任何限制。

內(nèi)核會根據(jù)需要做什么來選擇鏈,并按順序查看每條規(guī)則。符合第一條匹配規(guī)則后,內(nèi)核就跳到目標上。大多數(shù)情況下,規(guī)則處理會停止,盡管有些目標—比如登錄—被認為是不會結(jié)束的,因此內(nèi)核將繼續(xù)處理下一條規(guī)則。如果沒有匹配任何規(guī)則,將會使用鏈的默認目標。

請注意:出于本文的目的,本文只用到 filter 表。

使用防火墻保護 Samba

有多種不同的方法來設(shè)計 Samba 的防火墻策略,選擇時要考慮網(wǎng)絡(luò)布局以及誰或哪些主機需要訪問 Samba 服務(wù)器等事項。從較高的層面來看,您可以選擇保護整個主機或只關(guān)注 Samba。

如果您想要保護整個主機,那么您就不必擔(dān)心 Samba 使用哪個端口。以下代碼是一個簡單策略,只允許來自 10.0.0.0/8 專用網(wǎng)絡(luò)的流量傳輸?shù)奖镜胤?wù)器:

iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

第一個命令向 INPUT 鏈添加了一條規(guī)則,它將規(guī)則添加到當前的規(guī)則列表中。該規(guī)則設(shè)置了來自源網(wǎng)絡(luò)(-s)10.0.0.0/8 的所有內(nèi)容都跳到 ACCEPT 目標,它將會接受數(shù)據(jù)包。第二個命令允許來自現(xiàn)有會話的包,這是通過調(diào)用帶有 -m state 的狀態(tài)匹配器實現(xiàn)的。匹配器會追蹤哪些連接離開主機。傳出的連接的響應(yīng)包被認為是 established 或 related,因此規(guī)則的其余部分會接受這些包。

最后一個命令設(shè)置 INPUT 鏈丟棄數(shù)據(jù)包的默認策略。如果數(shù)據(jù)包不是來自 10.0.0.0/8 網(wǎng)絡(luò)或者不是主機生成的連接的一部分,那么它不會被接受。

您可以通過在端口層過濾來獲得更加精細的粒度。前一個示例過濾源地址,因此會阻塞所有服務(wù)。如果在您的主機上有一個 web 服務(wù)器,您想讓它對一般的 Internet 開放訪問,那么之前的策略就不起作用了。

回想一下 “學(xué)習(xí) Linux,302(混合環(huán)境):配置 Samba”,Samba 使用了四種不同的端口:

  • 137 UDP。 網(wǎng)絡(luò)基本輸入/輸出系統(tǒng) (NetBIOS) 名稱服務(wù)。
  • 138 UDP。 NetBIOS 數(shù)據(jù)報服務(wù)。
  • 139 TCP。 NetBIOS 會話服務(wù)。
  • 445 TCP。 直接托管(TCP 上的 Common Internet File System [CIFS])。

清單 1 演示了一個策略,允許從 10.0.0.0/8 網(wǎng)絡(luò)連接到 Samba 服務(wù),也允許 web 服務(wù)器沒有任何限制地進行操作。

清單 1. 在端口層操作的策略

				
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 137 -j ACCEPT
iptables -A INPUT -p udp -s 10.0.0.0/8 --dport 138 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -s 10.0.0.0/8 --dport 139 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -s 10.0.0.0/8 --dport 445 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P INPUT DROP

清單 1 的策略比之前的策略復(fù)雜得多,因為它對不同的應(yīng)用程序進行了設(shè)置,每個都有不同的策略。前兩條規(guī)則匹配所有作為新會話(-m state --state NEW)的一部分,并且發(fā)送到端口 80 或端口 443(--dport 80、 --dport 443)的傳入的 TCP 數(shù)據(jù)包(-p tcp)。對于源地址沒有任何限制,因此會支持所有人。

接下來的兩行匹配所有從內(nèi)部網(wǎng)絡(luò)(-s 10.0.0.0/8)發(fā)送到端口 137 或端口 138(--dport 137、--dport 138)的 UDP 數(shù)據(jù)包(-p udp)。UDP 沒有狀態(tài),因此無需擔(dān)心連接是新的還是已建立的。

第 5 行和第 6 行結(jié)合狀態(tài)匹配器和源地址過濾器,僅僅允許端口 139 和端口 445 上來自內(nèi)部網(wǎng)絡(luò)的新連接。

最后兩行與之前策略的操作相同。如果數(shù)據(jù)包與當前連接有關(guān),則支持它。其他的將會被丟棄。

排除防火墻故障

防火墻問題很常見,因為會遇到?jīng)]有想到的的需求或發(fā)現(xiàn)應(yīng)用程序并沒有按您預(yù)計的方式運行。規(guī)則本身的錯誤也很常見,尤其是處理一長串端口號和 IP 地址時。但也不是所有問題都與防火墻有關(guān),因此您應(yīng)該了解一些基本的網(wǎng)絡(luò)故障排除步驟。

查看策略

使用 iptables 命令查看策略。-L 選項會列出策略,而 verbose(-v)選項會添加額外的細節(jié)信息,比如數(shù)據(jù)包計數(shù)器。清單 2 顯示了 清單 1 的策略。

清單 2. 查看詳細策略

				
# iptables -L -v
Chain INPUT (policy DROP 47 packets, 5125 bytes)
 pkts bytes target  prot opt in   out  source      destination
    0     0 ACCEPT  tcp  --  any  any  anywhere    anywhere     state NEW tcp dpt:http
    0     0 ACCEPT  tcp  --  any  any  anywhere    anywhere     state NEW tcp dpt:https
    0     0 ACCEPT  udp  --  any  any  10.0.0.0/8  anywhere     udp dpt:netbios-ns
    0     0 ACCEPT  udp  --  any  any  10.0.0.0/8  anywhere     udp dpt:netbios-dgm
    0     0 ACCEPT  tcp  --  any  any  10.0.0.0/8  anywhere     state NEW tcp dpt:139
    0     0 ACCEPT  tcp  --  any  any  10.0.0.0/8  anywhere     state NEW tcp dpt:445
  214 15216 ACCEPT  all  --  any  any  anywhere    anywhere     state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 292 packets, 35009 bytes)
 pkts bytes target     prot opt in     out     source               destination

明細統(tǒng)計數(shù)據(jù)會顯示匹配頭兩列規(guī)則的數(shù)據(jù)包數(shù)目和字節(jié)數(shù)目。對于清單 2,您會看到該數(shù)據(jù)包只匹配最后一條規(guī)則。仔細看輸出的第一行,您會看到默認的目標也有一個數(shù)據(jù)包數(shù)目。有 45 個數(shù)據(jù)包被丟棄,因為它們不匹配任何一條規(guī)則;這表示或者是未授權(quán)的用戶試圖訪問主機,或者是合法的流量被不正確的防火墻策略所阻塞。

查看防火墻策略的另一用途是完整地了解策略。由于處理會在第一次匹配后停止,因此您應(yīng)該從策略開頭處開始,一直往下看,確定是否有一條規(guī)則會丟棄您的流量。

一個常見場景是不具體的規(guī)則出現(xiàn)在具體的規(guī)則之前。為了避免出現(xiàn)問題,將最具體的規(guī)則放在策略頭部,以便首先發(fā)現(xiàn)例外。但這樣的慣例并不總是有效,因此您應(yīng)該自己查找那些不能連接到服務(wù)器的用戶。

清單 3 顯示了 Engineering 網(wǎng)絡(luò)中一臺服務(wù)器的策略。同一個網(wǎng)絡(luò)中的用戶無法連接到服務(wù)。

清單 3. 含有覆蓋規(guī)則的策略

				
# iptables -L -v
Chain INPUT (policy DROP 21 packets, 2967 bytes)
target   prot opt in   out  source       destination
ACCEPT   tcp  --  any  any  anywhere     anywhere      state NEW tcp dpt:http
ACCEPT   tcp  --  any  any  anywhere     anywhere      state NEW tcp dpt:https
DROP     tcp  --  any  any  10.0.0.0/8   anywhere
ACCEPT   udp  --  any  any  10.2.3.0/24  anywhere      udp dpt:netbios-ns
ACCEPT   udp  --  any  any  10.2.3.0/24  anywhere      udp dpt:netbios-dgm
ACCEPT   tcp  --  any  any  10.2.3.0/24  anywhere      state NEW tcp dpt:netbios-ssn
ACCEPT   tcp  --  any  any  10.2.3.0/24  anywhere      state NEW tcp dpt:microsoft-ds
ACCEPT   all  --  any  any  anywhere     anywhere      state RELATED,ESTABLISHED

清單 3 中的服務(wù)器屬于 Engineering 網(wǎng)絡(luò),它是 10.2.3.0/24。從公司其他地方,即 10.0.0.0/8 的訪問也會被阻塞。10.2.3.0/24 網(wǎng)絡(luò)是更大網(wǎng)絡(luò)的子網(wǎng),因此阻塞整個 10.0.0.0/8 網(wǎng)絡(luò)的規(guī)則在 Server Message Block (SMB) 相關(guān)規(guī)則之前;因此,即使是 Engineering 用戶也會被 DROP 捕獲,因為 iptables 使用的是首次匹配,而非最佳匹配概念。

以上問題的解決方案是在具體規(guī)則處理之后阻塞公司網(wǎng)絡(luò)。那樣的話,將首先接受 Engineering 網(wǎng)絡(luò)的包。

高級故障排除

您通常無法確定是防火墻的問題,還是網(wǎng)絡(luò)其他地方出了問題。最簡單的測試方法是關(guān)閉防火墻,看看連接是否成功。當然,并不總能這么做,如果不能關(guān)閉防火墻,那么其次的最佳方案是觀察進入服務(wù)器的數(shù)據(jù)包。

tcpdump 工具能顯示服務(wù)器看到的網(wǎng)絡(luò)包,即使防火墻策略丟棄了該包。如果能看到來自服務(wù)器的連接嘗試,那么您就知道數(shù)據(jù)包到達了服務(wù)器。假設(shè)服務(wù)正在運行,那么您很有可能得出防火墻丟棄數(shù)據(jù)包的結(jié)論。清單 4 顯示了 tcpdump 工具正在執(zhí)行。

清單 4. 被阻塞的 SMB 連接的數(shù)據(jù)包跟蹤

				
# tcpdump -i eth0 tcp port 445
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
20:24:18.392106 IP CLIENT.search > SERVER.microsoft-ds: S ...
20:24:21.358458 IP CLIENT.search > SERVER.microsoft-ds: S ...
20:24:27.393604 IP CLIENT.search > SERVER.microsoft-ds: S ...

tcpdump 選項如下所示:

  • -i eth0。 監(jiān)聽 eth0 接口。
  • tcp port 445。 檢查 TCP 端口 445 的數(shù)據(jù)包。

清單 4 的結(jié)果顯示有三個數(shù)據(jù)包進入服務(wù)器。箭頭表示數(shù)據(jù)流的方向:三個包在 microsoft-ds port 端口(即 455)上從客戶端到達服務(wù)器。行末的 S 表示連接嘗試,沒有響應(yīng)表示服務(wù)器未響應(yīng)。

連接失敗的另一個跡象是連續(xù)數(shù)據(jù)包之間的差別。左側(cè)的時間戳顯示第二個包在第一個包之后約 3 秒鐘才到達,第三個包又在這 6 秒鐘后到達。大多數(shù)網(wǎng)絡(luò)協(xié)議會實現(xiàn)指數(shù)后退 (exponential back-off) 算法,這意味著每次連續(xù)嘗試之間的時間會翻倍。

原文:http://www.ibm.com/developerworks/cn/linux/l-lpic3-315-2/index.html?ca=drs-

責(zé)任編輯:yangsai 來源: IBMDW
相關(guān)推薦

2010-10-27 10:14:34

2017-12-04 10:03:45

2014-08-04 11:22:21

linuxsamba服務(wù)器

2017-01-05 13:41:56

2009-09-01 09:50:22

Samba服務(wù)器

2009-09-24 17:37:23

2009-09-18 13:00:20

2010-03-31 10:05:40

CentOS Samb

2011-11-10 13:05:40

刀片服務(wù)器機架服務(wù)器采購指南

2009-07-29 15:54:52

家用服務(wù)器DIY

2023-01-27 14:50:45

2010-03-31 10:41:49

CentOS Samb

2009-10-10 17:29:00

RHEL 5搭建Sam

2009-12-28 17:23:54

Fedora Samb

2012-12-31 10:58:12

2011-08-08 18:43:26

2018-01-31 11:20:48

2010-06-02 16:48:49

postfix郵件服務(wù)

2009-09-24 16:08:29

打印服務(wù)器

2009-02-27 14:31:00

點贊
收藏

51CTO技術(shù)棧公眾號