使用 AIX TCP/IP 過濾功能設置防火牆

簡介

一個 POWER 服務器具有承載上百個 LPAR 或分區(一個分區就是操作系統安裝的一個獨立實例)的處理能力,這意味着,虛擬化功能讓您能在一個物理機器中擁有上百個服務器。如果這上百個服務器在處理 Internet 或其他敏感的數據,那麼您可能想要在其中設置一些防火牆規則作爲額外的安全層(以及網絡防火牆和***防禦設備)。

本文從簡短回顧 TCP/IP 網絡開始。如果您熟悉 TCP/IP 及其工作方式,那麼可以跳過下一節。接下來,您還將回顧在 AIX 機器中啓用並設置 TCP/IP 過濾功能需要用到的包、步驟和命令。最後,您要使用第一節中講述的概念,在示例場景中進行配置。


TCP/IP 回顧

TCP/IP 是賦予網絡生命的精髓。通過網絡傳輸的數據被分割成小塊,稱爲 “包” 或 “IP 包”(表示 Internet Protocol 包)。當傳輸信息的時候,它被數據發送者分成包,並標有源和目標電腦的信息,然後通過網絡發送。

現在我們從更高的層次看看網絡包的結構是怎樣的。根據通信所使用協議的不同,您可能會處理以下的 IP 包:

  • 普通 IP 包IP 數據報:IP 包可用來封裝以下任何協議。通常情況下,在網絡中看不到普通 IP 包。但是可以使用 IP 包中傳輸的信息創建防火牆過濾。
  • ICMP 消息:ICMP 是用來報告和診斷網絡問題的協議。生成 ICMP 消息的最常見命令是 ping,它用來測試是否能連接到某個設備上。可以配置過濾功能來過濾掉某些 ICMP 包,例如,您可能想要防止某些 ICMP 流量發送到與 Internet 相連的服務器上。
  • UDP 包用戶數據報:UDP 是不可靠、無連接的協議。UDP 數據包可能會丟失,或者不按順序發送給接收的應用程序;必須在應用程序層進行錯誤處理。由於協議棧執行的控制少,其優點是處理時間短、延時少,而且數據傳輸更快。有一些熟知的服務就是基於 UDP,如 DNS 查詢、TFTP 和 VoIP。
  • TCP 包:TCP 是可靠的、面向連接的協議。TCP 段能保證以發送時的順序進行交付,代價是需要額外的包來建立和完成連接,且協議棧要執行更多的處理來確保這一點。有很多熟知的服務依賴於 TCP:HTTP(web 流量)、SMTP(郵件流量)、FTP(文件傳輸)、SSH (Secure Shell)、Telnet 及其他。

一般來說,您的服務器只提供其中一項或幾項服務,因此您可能想只允許您所提供的服務的流量。

剖析 ICMP、TCP 和 UDP

以下表格顯示了不同類型的網絡包的結構,更重要的是,您可以看到,哪一個是允許我們基於此字段內容過濾包的 AIX 過濾管理命令的命令行選項。在稍後對過濾所使用的 AIX 命令進行分析時會用到這些命令行選項。


表 1 – IP 包格式

比特位 0-15 16-31
0 版本 (-v) IHL 服務類型 總長度
32 標識 標誌 (-f) 分段偏移
64 使用期限 協議 (-c) 報頭檢驗和
96 源地址 (-s)
128 目的地址 (-d)
160 選項 邊距

表 2 – ICMP 格式
比特位 0-15 16 -31
0 類型 (-o / -O) 編碼 校驗和
32 IP 報頭 + 64 位原始數據報

表 3 – UDP 格式
比特位 0-15 16-31
0 源端口 (-o) 目標端口 (-O)
32 長度 校驗和

表 4 – TCP 格式
比特位 0-15 16-31
0 源端口 (-o) 目標端口 (-O)
32 序列號
64 確認號
96 偏移 保留 標誌 窗口
128 校驗和 緊急指針
160 選項 邊距
192 數據

AIX 過濾功能簡介

某些情況下,您可能想要阻止某些包到達其目的地,或者只讓某一些包到達。

需要的包

一些常見的場景包括,只允許來自信任源的連接、阻止連接到服務器未提供的服務,以及只允許連接到特定服務。在這些情況下,您都可以使用 AIX 操作系統附帶的 TCP/IP 過濾功能。

TCP/IP 過濾功能包含在 IPSec 包中,因此檢查是否存在的最簡單的方法就是用 lslpp –l 列出已安裝的包,並驗證是否有以下兩個包:


bos.net.ipsec.keymgt
bos.net.ipsec.rte

 

IPsec 是用來創建服務器之間加密通信通道的協議,此通道也常被稱爲隧道或 *** 隧道。本文不會詳細討論 IPsec,如果想要在您的環境中使用 IPSec,要保證已安裝以下包:


bos.msg.LANG.net.ipsec 
bos.net.ipsec.websm 
bos.crypto-priv

 

有關 IPSec 的更完整的描述,您可以參考本文 參考資料 一節中的 Security Guide 文檔。

命令參考

要使用 TCP/IP 過濾功能,只要用到幾個命令,本節將加以說明,下節將會用到。如果您熟悉 AIX 命令,您將會看到它們很類似,在名稱前都有描述性前綴,如 mklsrm,後面還有 filt 後綴。

  • lsfilt:列出表中的過濾規則。創建之後,每條規則都會被分配一個編號,可以輕鬆地使用該命令看到。
  • genfilt:向表中添加一條過濾規則。這是用來創建新過濾的命令。如果未使用 –n 參數來指定位置,那麼新的規則將會被添加到表格末尾。
  • chfilt:用來改變現有的過濾規則。您需要提供規則 ID 以指明要修改哪條規則。規則 1 是默認規則,無法使用此命令修改。
  • rmfiltrm 後綴對所有 UNIX 管理員來說應該很熟悉。您可以使用此命令在任何時候根據規則 ID 來刪除過濾規則。
  • mkfilt:這是一個重要的命令,它可以激活或停用表中的過濾規則,啓用或禁用過濾日誌,並改變默認規則。如果要使對過濾表的更改生效,需要在運行此命令時帶上一些參數。

過濾策略的方法

當談到 TCP/IP 過濾中的策略時,通常是指兩種可能的安全方法:

  • 默認拒絕所有流量,只允許您許可的。
  • 默認允許所有流量,只拒絕您限制的。

從安全角度出發,拒絕所有策略是最安全的。但是如果您是配置正在使用中的服務器,那麼您在運用此策略前一定要非常謹慎,防止產生不必要的服務中斷。對於新的服務器,從開始就使用此策略要簡單一些,因爲在投入使用之前有足夠的時間進行測試。

允許所有策略更加寬鬆,而且它適用於您有生產服務並想要保護一個特定服務的情況。


示例場景

在本節中,我將會展示一個簡單的示例場景,以此作爲在服務器上實現其他過濾配置的良好開端。

場景

您的公司在 p710 Express 服務器的 AIX LPAR 上部署了一個新的內網應用程序,公司的安全部門要求限制對 Web 應用程序的訪問,只允許來自地址爲 172.16.10.5 的內部代理服務器的流量。Web 應用程序監聽 TCP 端口 80 和 443。安全部門提出第二條要求,只允許與連接到管理網絡 10.1.1.x 的接口的 SSH 連接。安全部門強調,這些要求是強制性的,與服務的的所有配置無關,作爲額外的保護層。服務器的 IP 地址是 172.16.10.45 和 10.1.1.45(第一個是提供給用戶的地址,第二個是供管理員登錄服務器並執行維護任務使用的)。下列圖形顯示了此場景。


圖 1:示例場景
示例場景演示
 

實現 – 設置規則

首先啓用服務器中的 IPSec 以啓用 IP 過濾。爲此,使用 ipsec4 的 smitty 快速路徑:


# smitty ipsec4

 

選擇 Start/Stop IP Security 並按下 Enter 鍵:


Move cursor to desired item and press Enter
    Start/Stop IP Security
    Basic IP Security Congiguration
    Advanced IP Security Configuration

 

選擇 Start IP Security 並按下 Enter 鍵:


Move cursor to desired item and press Enter
    Start IP Security
    Stop IP Security

 

從以下各項中選擇 Start IP Security 並按下 Enter 鍵:


Type or select values in the entry field
Press Enter AFTER making all desired changes              [EntryFields]
    Start IP Security                    [Now and AfterReboot]                  
    Deny ALL Non0Secure IP Packets                        [No]  

 

之前的步驟演示瞭如何啓用 IPSec,從而利用 IP 過濾功能。成功完成後,會顯示如下內容:


Command:OK    stdout: yes    stderr: no
 
Before command completion, additional instructions may appear below.

ipsec_v4 Available
Default rule for IPv4 in ODM has been changed.Successfully set default action to PERMIT 
 

 

如果在這裏看到錯誤,那麼可能是系統丟失了某些在 需要的包 一節中提到過的包。確認 IP Sec 是否在系統中啓用的一個方法是使用如下命令:


# lsdev -l ipsec_v4
ipsec_v4 Available  IP Version 4 Security Extension

 
對於日誌功能,決定要記錄哪些事件時要非常慎重。像 “記錄所有內容” 這樣的策略可能會變成填寫日誌文件系統的噩夢,甚至可能對服務器造成副作用。要理性對待日誌策略。在此場景中,只要記錄被過濾功能拒絕的包,因此日誌將會幫助您識別未授權的連接源。日誌是由每條規則中的 -l(小寫 L)參數控制的,其後是 Y 或 N(Yes 或 No)。

現在可以使用 lsfilt 命令來查看創建的默認規則。不要急着修改默認規則,先搞懂它們的用途和影響。

現在,創建符合安全部門要求的規則。

我們首先創建限制對管理網絡的管理訪問的規則。


## Rules to allow authorized administration traffic
# genfilt -v 4 -a P -s 10.1.1.0 -m 255.255.255.0 -d 10.1.1.45 -M
255.255.255.255 -g N -c tcp -o gt -p 1023 -O eq -P 22 -r L -w I -l 
N -f Y -i all
Filter rule 3 for IPv4 has been added successfully.
# genfilt -v 4 -a P -s 10.1.1.45 -m 255.255.255.255 -d 10.1.1.0 -M 
255.255.255.0 -g N -c tcp/ack -o eq -p 22 -O gt -P 1023 -r L -w O -l
N -f Y -i en1
Filter rule 4 for IPv4 has been added successfully.

## Rules to deny and log unauthorized administration traffic. 
## Note that we add one rule per server address to have 
## independence from service configuration.
# genfilt -v 4 -a D -s 0 -m 0 -d 10.1.1.45 -M 255.255.255.255 -g N -c 
tcp -O eq -P 22 -r L -w I -l Y -f Y -i all
Filter rule 5 for IPv4 has been added successfully.
# genfilt -v 4 -a D -s 0 -m 0 -d 172.16.10.45 -M 255.255.255.255 -g N 
-c tcp -O eq -P 22 -r L -w I -l Y -f Y -i all
Filter rule 6 for IPv4 has been added successfully.

 

以上規則實現了管理員連接的目標。請注意,儘管我故意在第 1 條、第 3 條規則留下空擋,不限制 en1 的接口。我這麼做是爲了展示如何使用 chfilt 命令來修改已有的規則,如下所示:


# chfilt -v 4 -n 3 -i en1
Filter rule 3 for IPv4 has been changed successfully.#

 

現在我們添加規則來限制來自內部代理服務器 172.16.10.5 對內網應用程序的訪問。


## Rules to allow traffic between Proxy and Web Application
# genfilt -v 4 -a P -s 172.16.10.5 -m 255.255.255.255 -d 172.16.10.45 
-M 255.255.255.255 -g N -c tcp -o gt -p 1023 -O eq -P 80 -r L -w I -l 
N -f Y -i en2
Filter rule 7 for IPv4 has been added successfully.
# genfilt -v 4 -a P -s 172.16.10.45 -m 255.255.255.255 -d 172.16.10.5 
-M 255.255.255.255 -g N -c tcp/ack -o eq -p 80 -O gt -P 1023 -r L -w O 
-l N -f Y -i en2
Filter rule 8 for IPv4 has been added successfully.
# genfilt -v 4 -a P -s 172.16.10.5 -m 255.255.255.255 -d 172.16.10.45 
-M 255.255.255.255 -g N -c tcp -o gt -p 1023 -O eq -P 443 -r L -w I -l N 
-f Y -i en2
Filter rule 9 for IPv4 has been added successfully.
# genfilt -v 4 -a P -s 172.16.10.45 -m 255.255.255.255 -d 172.16.10.5 
-M 255.255.255.255 -g N -c tcp/ack -o eq -p 443 -O gt -P 1023 -r L -w 
O -l N -f Y -i en2
Filter rule 10 for IPv4 has been added successfully.

## Rules to reject traffic to the Web Application not coming from the Proxy
# genfilt -v 4 -a D -s 0 -m 0 -d 172.16.10.45 -M 255.255.255.255 -g N 
-c tcp -O eq -P 80 -r L -w I -l Y -f Y -i all
Filter rule 11 for IPv4 has been added successfully.
# genfilt -v 4 -a D -s 0 -m 0 -d 10.1.1.45 -M 255.255.255.255 -g N 
-c tcp -O eq -P 80 -r L -w I -l Y -f Y -i all
Filter rule 12 for IPv4 has been added successfully.
# genfilt -v 4 -a D -s 0 -m 0 -d 172.16.10.45 -M 255.255.255.255 -g N
-c tcp -O eq -P 443 -r L -w I -l Y -f Y -i all
Filter rule 13 for IPv4 has been added successfully.
# genfilt -v 4 -a D -s 0 -m 0 -d 10.1.1.45 -M 255.255.255.255 -g N 
-c tcp -O eq -P 443 -r L -w I -l Y -f Y -i all
Filter rule 14 for IPv4 has been added successfully.

 

以上命令已經創建了滿足此場景要求的所有規則。請注意,規則的順序對實現目標是非常重要的。

下一步,還需要做一些事來啓用對拒絕包的記錄,並激活配置。

實現 – 設置日誌

現在配置 syslog 守護進程將所有來自 IP 過濾的條目記錄在指定的文件中。


## Backup syslog.conf file before modifying it.
# cp /etc/syslog.conf /etc/syslog.conf.bak
## Append entry for IP filters logs.
# echo "local4.debug /var/adm/ipsec.log" >> /etc/syslog.conf
## Create log file and set permissions (permissions may depend on 
## company policies)
# touch /var/adm/ipsec.log
# chmod 644 /var/adm/ipsec.log
## Refresh the syslog subsystem to activate the new configuration.
# refresh -s syslogd
0513-095 The request for subsystem refresh was completed successfully.

 

實現 – 激活所有內容

到此爲止,您已經創建了過濾規則,並準備好了 syslog 以記錄被拒絕包的日誌。現在可以使用 mkfilt 命令激活配置。


 # Start the log functionality of the filter rule module
# mkfilt -g start
# # Activates the filter rules
# mkfilt –u

 
應急模式:假設您通過控制檯登錄到服務器,創建並激活了新的防火牆規則。此時突然接到某人的電話,說他無法訪問服務器中運行的某一項服務。您意識到,其中一條規則有疏漏,或不正確,但此時來不及逐條檢查,需要立即恢復服務。如果發生這種情況,您只要運行 mkfilt –d 來停用這些規則。不要誤用 rmfilt,此命令不僅會影響表中的規則,而且在運行 mkfilt 命令後纔會起作用。

一旦完成配置,您就可以定期檢查 /var/adm/ipsec.log 文件丟棄了哪些包,並檢測潛在***以及對配置所做的調整。


結束語

在本文中,我演示了 AIX IP 過濾功能,這是一項內置的而且很有用的功能,可讓系統管理員在服務器中實現額外的安全層。同時還講解了一些基本的網絡概念,並總結了執行過濾所要用到的包和命令。與往常一樣,所有的防火牆配置都要認真規劃,以避免產生副作用,這些副作用往往很難排除。

本文是一個對想要使用此模塊進行配置的 UNIX 管理員的很好的入門指導。


 

參考資料

學習

  • RFC768 - User Datagram Protocol 提供了對協議、格式和接口的簡介。

     
  • RFC791 - Internet Protocol 專門介紹 DoD Standard Internet Protocol。

     
  • RFC792 - Internet Control Message Protocol 用於主機到主機的數據報服務。

     
  • RFC793 - Transmission Control Protocol 描述了 DoD Standard Transmission Control Protocol (TCP)。

     
  • AIX Security Guide 爲系統管理員提供了關於文件、系統和網絡安全的完整信息。

     
  • AIX and UNIX 專區:developerWorks 的“AIX and UNIX 專區”提供了大量與 AIX 系統管理的所有方面相關的信息,您可以利用它們來擴展自己的 UNIX 技能。

     
  • AIX and UNIX 新手入門:訪問“AIX and UNIX 新手入門”頁面可瞭解更多關於 AIX 和 UNIX 的內容。

     
  • AIX and UNIX 專題彙總:AIX and UNIX 專區已經爲您推出了很多的技術專題,爲您總結了很多熱門的知識點。我們在後面還會繼續推出很多相關的熱門專題給您,爲了方便您的訪問,我們在這裏爲您把本專區的所有專題進行彙總,讓您更方便的找到您需要的內容。

     
  • AIX and UNIX 下載中心:在這裏你可以下載到可以運行在 AIX 或者是 UNIX 系統上的 IBM 服務器軟件以及工具,讓您可以提前免費試用他們的強大功能。

     
  • IBM Systems Magazine for AIX 中文版:本雜誌的內容更加關注於趨勢和企業級架構應用方面的內容,同時對於新興的技術、產品、應用方式等也有很深入的探討。IBM Systems Magazine 的內容都是由十分資深的業內人士撰寫的,包括 IBM 的合作伙伴、IBM 的主機工程師以及高級管理人員。所以,從這些內容中,您可以瞭解到更高層次的應用理念,讓您在選擇和應用 IBM 系統時有一個更好的認識。

     

獲得產品和技術

  • 免費 試用 IBM 軟件 。下載試用版,登錄在線試用,在沙箱環境中使用產品,或是通過雲來訪問。有超過 100 種 IBM 產品試用版選擇。

     

討論

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章