MikroTik RouterOS能對包狀態過濾;P2P協議過濾;源和目標NAT;對源MAC、IP地址、端口、IP協議、協議(ICMP、TCP、MSS等)、接口、對內部的數據包和連接作標記、ToS 字節、內容過濾、順序優先與數據頻繁和時間控制、包長度控制...
下面是RouterOS對IP流的處理流程:
RouterOS防火牆類型
MikroTik RouterOS具備強大的防火牆,根據不同的環境和類別我們可以把RouterOS的分未如下幾個類型:
從網絡層上分類:分為二層過濾防火牆和三層與三層以上過濾防火牆,他們分別在bridge filter和ip firewall filter下進行操作,能對各層的數據進行處理。
從數據傳輸上分類:分為input、foreward和output三種鏈表(chain)過濾,不管是二層或者三層過濾上都包含這三個鏈表。
同時RouterOS還支持自定義防火牆鏈表。如下面的virus病毒鏈表。我們可以通過jump命令將數據跳轉到指定的鏈表。
上面的圖片是顯示了幾個自定義鏈表,除了我們在右上角,下拉菜單看到的input、forward、output基本鏈表外(all、dynamic、static是系統狀態鏈表),可以看到自定義的Robotdog、ICMP、virus這三個鏈表。
RouterOS IP firewall filter工作原理
下面是三條預先設置好了的chains,他們是不被能刪除的:
input – 用於處理進入路由器的數據包,即數據包目標IP地址是到達路由器一個接口的IP地址,經過路由器的數據包不會在input-chains處理。
forward – 用於處理通過路由器的數據包
output – 用於處理源於路由器並從其中一個接口出去的數據包。
當處理一個chain(數據鏈),策略是從chain列表的頂部從上而下執行的。即先進先出法(First In First Out)如圖:
我們通過先進先出法可以理解到,過濾數據時我們可以通過以下的兩種原則“先丟棄后接受和先接受后丟棄”:
現在我來看事例中的防火牆規則,我先從input鏈表開始,這里是對所有訪問路由的數據進行過濾和處理:
從input鏈表中可以看到,我們對進入路由器的數據采用先拒絕非法的數據和連接,並將ICMP數據跳轉到自定義的ICMP的鏈表中過濾。
下面是forward鏈表一個應用防火牆事例:
forward鏈表,我們首先拒絕大多數機器狗訪問的目標地址,然后跳轉到機器狗鏈表中對相應的域名和IP進行過濾,接下來是對非法數據包、TCP連接數、非單播數據、ICMP協議和常見的病毒等進行過濾。
事例:
下面是禁止任何地址通過TCP/135端口訪問到本地路由器,因為是訪問本地路由器的數據,這里進入input鏈表進行操作:
禁止內網192.168.1.100的電腦上網,我們通過forward鏈表進行控制:
我們來看看Jump操作在forward鏈表中的工作過程:
在forward中數據遇到jump規則,會判斷數據是否符合定義jump規則,如果滿足條件將跳轉到指定的鏈表,如上圖的ICMP和virus鏈表,當在數據進入這些鏈表執行完后,會返回jump規則所在的forward鏈表中。
IP Firewall協議深入解析
TCP/IP協議和構架
我們首先理解一下,TCP/IP體系結構:
(1)網絡接口層
網絡接口層,也被稱為網絡訪問層,包括了能使用TCP/IP與物理網絡進行通信的協議,它對應OSI的物理層和數據鏈路層。TCP/IP標准並沒有定義具體的網絡接口協議。具體的網絡接口協議在實際應用的網絡如Ethernet、ATM、FDDI、X.25、PPP、Token-Ring 等中定義。
(2)網絡層
網絡層是在TCP/IP標准中正式定義的第一層。網絡層所執行的主要功能是處理來自傳輸層的分組,將分組形成數據包(IP數據包),並為該數據包進行路徑選擇,最終將數據包從源主機發送到目的主機,在網絡層中,最常用是網絡協議IP,其他一些協議用來協助IP的操作。
網絡層的協議有:IP、ARP、RARP、ICMP、IGMP
(3)傳輸層
TCP/IP的傳輸層也被稱為主機至主機層,與OSI的傳輸層類似,主要負責主機到主機之間的端對端通信,該層使用了兩種協議來支持兩種數據的傳送方法,即TCP協議和UDP協議。
(4)應用層
在TCP/IP模型中,應用程序接口是最高層,它與OSI模型中的高三層的任務相同,用於提供網絡服務,比如文件傳輸、遠程登錄、域名服務和簡單網絡管理等。
我們的RouterOS 中,ip firewall filter主要負責的是網絡層、傳輸層和應用層,網絡接口層則由bridge filter負責處理。
我們從上面的圖看到,在RouterOS的filter規則中,可以找到Protocol(協議)的選項,我們可以根據情況,選擇自己需要的協議。
TCP/IP協議是一族協議,包括上百個互為關聯的協議,不同功能的協議分布在不同的協議層, 下面是幾個常用協議:
一、網際層協議
IP:網際協議
ARP:地址解析協議
RARP:反向地址解析協議
ICMP/ICMPv6:Internet 消息控制協議
IPCP and IPv6CP:IP控制協議和IPV6控制協議
IGMP:Internet 組管理協議
二、傳輸層協議
TCP:傳輸控制協議
UDP:用戶數據報協議
RDP:可靠數據協議,RDP 是一種面向連接的傳輸協議,其主要設計來為主機監控應用程序如下載 / 上傳以及遠程調試進行有效的大批數據傳輸。
RUDP:可靠用戶數據報協議,RUDP 用於傳輸 IP 網絡間的電話信號。
三、應用層協議應用層協議
HTTP:超文本傳輸協議,用於Internet中的客戶機與WWW服務器之間的數據傳輸
DHCP:動態主機配置協議,實現對主機的地址分配和配置工作
DNS:域名系統(服務)系統,用於實現主機名與IP地址之間的映射
FTP:文件傳輸協議,實現主機之間的文件傳送
TFTP:簡單文件傳輸協議
TELNET:TCP/IP 終端仿真協議(又稱遠程登錄協議),本地主機作為仿真終端,登錄到遠程主機上運行應用程序
SMTP:簡單郵件傳輸協議,實現主機之間電子郵件的傳送;
IMAP4:因特網信息訪問協議,用於訪問存儲在郵件服務器系統內的電子郵件和電子公告板信息。
POP(POP3):郵局協議,用於用戶與服務器之間進行郵件的收發。
SNMP:簡單網絡管理協議,實現網絡的管理
NNTP:網絡新聞傳輸協議
UUCP:Unix到Unix的拷貝程序
BOOTP:引導協議,用於無盤主機或工作站的啟動
NFS:網絡文件系統,實現主機之間的文件系統的共享
NAT:網絡地址轉換
IRCP/IRC:因特網在線聊天協議
LDAP:輕量級目錄訪問協議
NTP:網絡時間協議
RLOGIN:遠程登錄命令,僅支持Unix到Unix的連接。
RMON:遠程監控
RWhois:遠程目錄訪問協議
SLP:服務定位協議
SNTP:簡單網絡時間協議
Finger:用戶信息協議
IP源地址和目標地址概念
如何判斷源地址和目標地址,與他們在ip firewall filter的鏈表,我們先看看下面的圖:
我們從該圖上可以看到,內網主機192.168.10.88與路由器192.168.10.1通信的情況,內網主機192.168.10.88向路由和外網的web服務器時,不同情況下源目標IP地址的轉變和使用的chain鏈表情況。
注:在這里要記住任何通信是雙向的,而不僅只有源到目標一條鏈路。
在RouterOS中兩個選擇涉及到源和目標地址,General標簽中的src-address、dst-address和Advanced的src-address-list、dst-address-list如下圖:
Src-address和dst-address可以支持子網格式,同樣支持一段連續的地址如:“192.168.10.10-192.168.10.100”。在src-address-list和dst-address-list里需要調用/ip firewall address-list的地址列表,通過該地址列表可以設置不同地址段和不連續的IP地址。
試驗:
1、 允許192.168.10.9和192.168.10.15能訪問外網,禁止其他地址訪問外網數據
2、 路由器有兩段內網IP地址192.168.10.0/24和192.168.11.0/24,禁止這兩個地址段互訪,但允許192.168.10.9訪問192.168.11.9的主機
病毒和應用程序過濾
在RouterOS中能做到內容過濾,即content,對一些明文傳輸的字符進行過濾,特別是web中的內容
上面是一個過濾www.test.com的域名過濾
至於最新的機器狗病毒我們可以通過導入機器狗的存在的病毒地址和域名進行過濾,我們在對機器狗目標地址過濾時調用了address-list的地址列表。
我們在下圖中,我們看到對機器狗的目標地址控制我們設置了dst-address-list選擇Robotdog,而Robotdog定義則是在ip firewall address-list中定義:
在address-list常用於某一組相同類型或屬性的IP地址,但這些又不連續,則可以通過address-list來定義。以上的防火牆規則,可以在http://www.mikrotik.com.cn/down.asp下載到。
在RouterOS3.0中增加了Layer7協議過濾功能,即對應用程序的代碼進行過濾,這些代碼我們通過Regexp的腳本進行編輯,也可以通過我們預先編輯好的RouterOS腳本導入Layer7協議應用列表(下載http://www.mikrotik.com.cn/down.asp)
我們可以同在ip firewall filter中調用,操作如下:
我們可以同上面的列表看到,RouterOS的Layer7協議能對常見的網絡協議、網絡程序和游戲進行操作,根據我們需要進行拒絕、接受和跳轉等。
RouterOS防火牆規則操作相對比較靈活,相應的操作人員能掌握常見的網絡協議和原理,操作中需要根據不同情況進行自定義,特別是防火牆前中上下結構能靈活的處理。