1. 程式人生 > >OpenWrt防火墻配置(極路由)

OpenWrt防火墻配置(極路由)

detail order forward tar 列表 指定 inpu -c tails

說明:

1、極路由使用的是OpenWrt做為操作系統,本身就是一個Linux,包管理使用opkg,只是改了一個界面而已。

2、Linux下的防火墻最終都會歸iptables進行管理,OpenWrt的防火墻機制同樣也是,最上層采用了自己基於UCI標準的配置方法管理防火墻firewall,最終寫入到iptables。

3、UCI是OpenWrt統一配置文件的標準,真心不太喜歡這種語法,沒iptables來的清晰。

4、OpenWrt基於firewall的配置,由於涉及到多個網口,有Wan和Lan這些,最終會轉換成很多自定義的鏈,看來來很吃力,我的建議是直接在firewall層全部開啟,然後自己使用iptables做限制。不建議停掉之後再自己寫配置,不然你無法知道哪些網口是走向什麽地方的。

5、firewall不能單獨關閉,不然會無法上網。

簡單教程:

OpenWrt下的NAT、DMZ、Firewall rules都是由配置文件“/etc/config/firewall”進行控制管理的。此文件可以使用UCI進行控制,也可以使用vi編輯器直接修改。

該文件最後會在/etc/init.d/firewall啟動的時候由UCI進行解碼並且生成iptables規則生效。因此使用者不需要了解iptables即可通過配置文件實現防火墻規則。

防火墻的修改生效,需要重啟防火墻執行一下命令:

/etc/init.d/firewall reload  

/etc/init.d/firewall restart  

查看當前iptables的已啟用策略語法為:

iptables -L  

防火墻的基本設置

  • config defaults防火墻默認參數表
    是否必須設置 說明
    input ACCEPT 設置 INPUT 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    output ACCEPT 設置 OUTPUT 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    forward REJECT 設置 FORWARD 鏈(chain) 的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    syn_flood 1 是否啟用防洪水攻擊。可選值:0關閉,1啟用。
    synflood_rate 字符串 設置 SYN 包傳輸洪水攻擊檢測比率值,默認為:25 單位(包/秒)
    synflood_burst 字符串 設置 SYN 包傳輸比率值識別洪水攻擊,默認為:50 單位(包/秒)
    disable_ipv6 1 設置關閉掉 IPv6 的防火墻策略, 可選值:0忽略,1關閉。

這部分參考值使用系統默認值即可,無需修改:

config defaults  
        option syn_flood        1  
        option input            ACCEPT  
        option output           ACCEPT  
        option forward          REJECT  
# Uncomment this line to disable ipv6 rules  
#       option disable_ipv6     1  
  • config zone用於WAN/LAN域(zone)的參數表
    是否必須設置 說明
    name 字符串 域,必須是唯一值,可選值:wan,lan
    network 列表值 哪些接口被捆綁到這個域中,可選接口的名稱,比如:lan,wan,wan6
    input ACCEPT 設置INPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    output ACCEPT 設置OUTPUT鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    forward ACCEPT 設置FORWARD鏈(chain)的過濾策略,可選值: ACCEPT 允許, REJECT 拒絕
    masq 1 設置傳輸偽裝,如果是WAN口必須為1
    mtu_fix 1 設置MTU的MSS鉗制,如果是WAN口請為1

這部分配置也不需要做修改,參考:

config zone  
        option name             lan  
        list   network          lan  
        option input            ACCEPT  
        option output           ACCEPT  
        option forward          ACCEPT  
  
config zone  
        option name             wan  
        list   network          wan  
        list   network          wan6  
        option input            REJECT  
        option output           ACCEPT  
        option forward          REJECT  
        option masq             1  
        option mtu_fix          1
  • config forwarding路由轉發參數表
    是否必須設置 說明
    src lan 設置轉發來源
    dest wan 設置轉發目標

這部分也需要修改,參考:

config forwarding  
        option src              lan  
        option dest             wan  

防火墻的規則

如果在路由產品中需要開發 “允許 WAN 口訪問設備的特定端口”,可以設置本規則(比如開放 WAN 口允許 SSH 登入,或允許 WAN 口訪問設備的 FTP),一般情況下無需設置。

防火墻規則在 /etc/config/firewall 中可以有任意數量的規則,這些規則定義了數據傳輸的動作和行為是被允許還是拒絕。

規則配置文件結構
config rule  
option name 規則名稱  
.....  
config rule可選參數表
是否必須設置 說明
name 字符串 設置當前這個 rule 的名稱
target 字符串 設置防火墻的動作,可選值:ACCEPT 許可, REJECT 拒絕, DROP 拋棄
src 字符串 數據源的zone域是哪個。可選值: wan / lan
src_ip 字符串 數據源的IP地址是哪個。
src_mac 字符串 數據源的 MAC 地址是哪個。
src_port 字符串 數據源的端口,可以是一個端口,或一個端口範圍,但是必須同時指定了協議類型
proto 字符串 數據源的協議類型,可選值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部
dest 字符串 數據目標的 zone 域是哪個,可選值:wan / lan
dest_ip 字符串 數據目標的IP地址。
dest_port 字符串 數據目標的端口,可以是一個端口,或一個端口範圍,但是必須同時指定了協議類型
family 字符串 數據的協議族,可選值: ipv4, ipv6, any

rule規則可以靈活設置,比如允許WAN口可以ssh到系統,舉例:

config rule  
option name wan-ssh  
option src wan  
option dest_port 22  
option proto tcp  
option target ACCEPT  

端口轉發和 DMZ(demilitarized zone 隔離區)

端口轉發是路由產品中常見的配置,它允許使用者通過WAN口訪問特定的端口轉發給局域網的一臺電腦設備(比如WAN口訪問80端口(HTTP)將轉發給局域網某臺網站服務器)。

端口轉發也是在防火墻配置/etc/config/firewall中定義redirect段策略實現的。所有匹配的來源數據將根據目標設置轉發到目標主機上。

firewall配置中可以有多個redirect轉發策略,默認是沒有開放任何轉發的,如果需要轉發請使用vi或UCI進行配置。

規則配置文件結構

config redirect  
option name 名稱  
....  

config redirect可選參數表

是否必須設置 說明
name 字符串 設置當前這個 redirect 的名稱
src 字符串 轉發源的 zone 域,一般轉發都是轉發從 wan 過來的訪問
src_ip 字符串 轉發源的 IP 地址指定
src_mac 字符串 轉發源的 MAC 地址指定
src_port 字符串 轉發源的端口指定
proto 字符串 轉發源的協議類型,可選值:tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或all表示全部
dest 字符串 轉發目標的 zone 域
dest_ip 字符串 轉發目標的IP地址指定
dest_mac 字符串 轉發目標的MAC地址指定
dest_port 字符串 轉發目標的端口指定

端口轉發的可配置性十分靈活,比如我們將 9020 這個端口轉發給內網一臺服務器的 80,舉例:

config redirect  
option name 9020-80  
option proto tcp  
option src wan  
option src_dport 9020  
option dest lan  
option dest_ip 192.168.1.100  
option dest_port 80  

將電腦192.168.1.2設置DMZ隔離區,舉例:

config redirect  
option src wan  
option proto all  
option dest_ip 192.168.1.2  

參考:

http://wiki.openwrt.org/zh-cn/doc/uci(UCI)

http://wiki.openwrt.org/zh-cn/doc/uci/firewall(防火墻配置)

https://www.haiyun.me/archives/openwrt-iptables.html(自定義iptables替換firewall)

http://blog.csdn.net/u011641885/article/details/49303699(以上內容部分轉自此篇文章)

OpenWrt防火墻配置(極路由)