RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

這邊先說設置目標,主要是讓2個pppoe能同時進行通訊,按照自己定義的規則進出
主要也是怕自己忘記,打在這邊讓自己以後能用到

------------------------------------新增雙WAN自訂路由----------------------------------------------------------
首先新增2個PPPOE介面,並且取消Add Default Route勾選
接著到Routing>table裡,建立2個table,如pppoe-1與pppoe-2,並且都勾選FIB選項

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著到Routing>Rule選項裡,新增自己的內網網段,如我2個都要走不同位址,那就用2個,並對應到我的WAN上,如我要讓10.10.10.0/24往pppoe-out2介面送,那就這樣設定把他綁定到pppoe2上

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


接著到IP>routes選項,建立預設路由,並且綁定到自己建立的Rule裡table上,建議Distance都一樣,然後預設
table main,也要建立,且Distance也要一樣,讓他們同時都能進出,不是standby

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊



接著到IP>Firewall>NAT裡,建立2條針對各2個網段的masquerade出去

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


下一步到IP>Firewall>Mangle裡,建立perouting,標記到我們的Routing table上

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

這樣就可以讓這2個網段,透過不同的pppoe介面出去
這邊要注意,如果不想讓內網網段,一樣也丟到pppoe介面上去,導致無法透過RouterOS幫忙中轉內網網段
需在Dst.AddressList新建清單,對應的清單,在FireWall的Address List下建立

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊



然後接著要讓2個pppoe介面,均能回應ping封包,需要進行這個操作
(也可以不做,已可進行基礎路由NAT進出)
到Routing>Rule裡,建立Dst Address:0.0.0.0的封包回應,在Src Address部分可以先不用填
僅需建立起對應table為剛剛建立的pppoe-1與pppoe-2,Action均lookup即可,然後comment輸入要注意,要自己能分辨,如這邊是用isp1與isp2進行分辨
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著到System>scripts裡,寫段自動執行腳本,更新剛剛建立的isp1與isp2的Rule中Src Address位置
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
Name部分,一樣設定你方便辨認的就好,這邊Name以ISP-1紀錄
Source內容部分如下

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

:local pppoe2IP ""
/ip address {
:foreach i in=[find where interface="pppoe-out1"] do={
:set pppoe2IP [:pick [get $i address] 0 [:find [get $i address] "/"]];
}
}
:if ($pppoe2IP != "") do={
:put ("PPPoE2 IP: " . $pppoe2IP);
# 添加遮罩 /32
:local maskedIP ("$pppoe2IP/32")
/routing/rule {
:foreach i in=[find comment="isp1"] do={
set $i src-address=$maskedIP; # 更新帶入遮罩的 IP
}
}
} else={
:put "PPPoE2 has no IP address assigned!";
}


完成後記得按下Apply後,在案Run Scripts有沒有成功更新到Rules中isp1的Src Address位置
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

最後再以Scheduler方式,完成自動每10秒更新,防止浮動IP自動斷線重播,位置變換
到System>Scheduler,Name一樣取你看的懂得,Interval部分為時間,格式為時、分、秒
然後在On Event那裡,輸入
/system script run isp1


RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

其中isp1為剛剛建立Scripts的名稱(要注意大小寫),完成後按下OK,即可完成自動更新位置
之後再用手機去ping自己的外網關看有沒有回應即可,如果沒有Ping成功,建議檢查步驟是否有無做錯
或是有無防火牆阻擋

------------------------------------自動黑名單更新----------------------------------------------------------
接著是防火牆黑名單自動更新部分,這邊採用Scripts自動抓取,與Scheduler方式進行更新
防火牆提供者,可以參考GitHub上提供者,如本篇使用的pwlgrzs / Mikrotik-Blacklist,喜歡的可以去支持作者下,截至目前,已高達19萬條黑名單規則,通常每週更新
或是也可以參考下這個最近常常更新的源
alsyundawy mikrotik-blacklist

首先到System>Scripts,新建2個專案

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

名稱(Name)
pwlgrzs-blacklist-replace
內容(On Event)
/ip firewall address-list remove [find where list="pwlgrzs-blacklist"]; /import file-name=blacklist.rsc; /file remove blacklist.rsc


名稱(Name)
pwlgrzs-blacklist-dl
內容(On Event)
/tool fetch url="https://raw.githubusercontent.com/pwlgrzs/Mikrotik-Blacklist/master/blacklist.rsc" mode=https


之後到System>scheduler下新增

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

名稱(Name)
dl-mt-blacklist
內容(On Event)
/system script run pwlgrzs-blacklist-dl


名稱(Name)
ins-mt-blacklist
內容(On Event)
/system script run pwlgrzs-blacklist-replace


時間(Interval)部分,建議1天跑一次就好,以我RB5009UG+S+,在新增黑名單時,CPU使用率會跑到30-40%
建議算好時間,挑離峰時間自動更新
並且注意更新防火牆本機的scripts,不可早於下載清單的時間,會導致沒清單可以套用!!

接著到IP>Firewall>Address Lists下看有沒有成功新增

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


之後到IP>Firewall>Filter Rule下定義要進行套用黑名單的規則
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
像這邊就是套用自動新增的pwlgrzs-blacklist這規則,套用到pppoe介面下自動丟包

------------------------------------常見資安漏洞封鎖----------------------------------------------------------
接著說下資安部分,首先這邊說明我建立的邏輯,我這邊如果要透過外網連回本家,一律透過wireguard方式回去,能從外網允許存取的,也僅我wireguard的IP192.168.3.2,其餘都視為可疑連線,都先關小黑屋再說
這邊也建議wireguard與WinBOX的port孔,都記得更改,如本範例wireguard為13232,WinBox為22000這樣

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


首先設定允許部分(這邊建議要執行剩下步驟前,將192.168.3.2、192.168.1.0/24、10.10.10.0/24,設定為白名單
然後將WAN回來的192.168.3.2獨立建一條,方便做紀錄(可看存取次數判斷有無非法連線),剩下2網段直接併這邊先設定WireGuard部分的私人IP允許規則

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


接著允許我設定Winbox端口,雖然RouterOS預設規則是會禁止外網存取,但是還是建議設定,避免意想不到的意外,這邊設定僅開放內網作存取,可以至AddressList底下建立清單後再套用
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
接著套用到FilterRules分頁下
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
再來是防範潛在ping攻擊或嘗試,這邊一樣到FilterRule下建立
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

完成後要在記得建立個規則,把這個類型的存取,都丟包掉
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

下一步為結合剛剛上面的自動黑名單部分,防止內網用戶端對黑名單服務進行存取

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
接著針對弱點端口進行防範,對試著建立連結的IP做紀錄
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著再試著針對自動執行弱點掃描與嘗試自動暴力破解存取的肉雞,建立存清單紀錄

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

最後一定要記得再設一個把上述2個規則清單,進行drop動作的原則,如本次會產生的BruteForce清單

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著嘗試丟棄Echo Request封包,建議不要直接拒絕ICMP全部類型回應,將會導致RouterOS某些服務會不正常,如DNS的DoH認證相關服務

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

最後拒絕特定IP一次建立大量連結

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


最後完成的清單大概如下方,如我的pppoe-out有1跟2,那就一份清單要建立2個,然後順序記得要排好,別把白名單方到最下面,那這樣白名單規則將被上面的拒絕清單給拒絕掉

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

如我這份清單,順序遞次為,黑名單拒絕>丟棄Echo Reply>pingFlood>對外黑名單拒絕連線>弱點服務連線拒絕>限制單次IP的TCP連線

至於WireGuard允許部分,如果是RouterOS建立的,他會自動允許該端口連線,如果不是透過RouterOS建立,則要自行建立端口放行

接著記得要把admin預設帳號進用掉,建立一個新的高級權限帳號,避免被暴力破解

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

最後一個針對浮動PPPOE用戶的優勢,遇到被高頻率弱點攻擊,直接變換IP,讓攻擊者肉雞群去跟空氣鬥智鬥勇,如果條件可以,建議還是設置下,要不然如我這張圖沒設的狀態下,10分鐘內被進行6萬次DDOS攻擊,導致家裡服務無法正常存取
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
首先到system>scripts下建立一個新腳本

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
source內容部分說明

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

source文字內容


:local threshold 50
:local detected 0

:log info "[DEBUG] 開始檢查防火牆規則..."

:foreach rule in=[/ip firewall filter find where comment="弱點服務坐牢房間"] do={
:local count [/ip firewall filter get $rule packets]
:log info ("檢查規則 ID:" . $rule . ",當前存取次數:" . $count)
:if ($count >= $threshold) do={
:set detected 1
}
}

:if ($detected = 1) do={
:log warning "[警告] 偵測到高頻存取,重新撥號!"

/interface pppoe-client disable [find name="pppoe-out1"]
/interface pppoe-client disable [find name="pppoe-out2"]
:delay 5
/interface pppoe-client enable [find name="pppoe-out1"]
/interface pppoe-client enable [find name="pppoe-out2"]
}

# **重置計數器**
/ip firewall filter reset-counters [find where comment="弱點服務坐牢房間"]

:log info "[DEBUG] 檢查完畢"

接著利用System>Scheduler下,建立一個1分鐘執行一次偵測

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

/system script run check_attack_count

附上低於50次的LOG狀態,此時並不會主動斷線重新連線,且會將該條目packets計數歸零
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
高於50次的LOG狀態,此時主動斷線重新連線,且會將該條目packets計數歸零

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

------------------------------------家用版防止DDOS----------------------------------------------------------
如果是家用,也沒特別要做什麼,就純上上網,打打遊戲,那可以考慮照下方設置
如本人用途,就也是打打遊戲,上上網,偶爾用DDNS透過WireGuard VPN連回來NAS這樣的話,可以參考如下設置
先把必定會用到的服務,排到最上面
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


這邊建議要開通MikroTik家的服務端口,如下IP位址
159.148.147.244、159.148.147.229、159.148.147.201、159.148.172.251、159.148.147.251
端口開放,TCP為443,8728,8729,80、UDP端口為15252,123
詳細方式如圖
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

然後第一個就是拒絕所有PING回應,僅允許自己內部網段這樣
先建立內部網網段清單表
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
接著建立規則
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著拒絕所有UDP封包,別讓對方探測到,因為UDP在某些情況會返回目標端口未開通,建議也是收到就丟包
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

下一步,拒絕全部TCP包回應
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

接著填寫自動化,偵測上方的TCP、UDP、ICMP,在1分鐘內,接收到25000個封包,直接重新撥號取得IP
先到Scripts輸入以下內容
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

Source內容解釋(此為統計指定類型的封包數總合,超過指定數值自動斷線重連)
RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊

Source內容

:local threshold 250000
:local detected 0
:local totalPackets 0


:log info "[DDOS_Guard] 開始檢查防火牆規則..."


# **定義 comment 規則列表**
:local comments {"TCP非核定丟包"; "丟棄UDP包"; "停止PING回應"}


# **遍歷所有 comment 名稱**
:foreach c in=$comments do={
:local ruleId [/ip firewall filter find where comment=$c]


# **確保找到規則**
:if ([:len $ruleId] > 0) do={
:local count [/ip firewall filter get $ruleId value-name=packets]
:set totalPackets ($totalPackets + $count)
} else={
:log warning "[錯誤] 找不到防火牆規則: $c"
}
}


:log info "[DDOS_Guard] 違規項目總計封包數量: $totalPackets"


# **判斷是否超過門檻**
:if ($totalPackets >= $threshold) do={
:set detected 1
:log warning "[警告] 偵測到高頻存取,重新撥號!"


/interface pppoe-client disable [find name="pppoe-out1"]
/interface pppoe-client disable [find name="pppoe-out2"]
:delay 5
/interface pppoe-client enable [find name="pppoe-out1"]
/interface pppoe-client enable [find name="pppoe-out2"]
}


# **重置計數器**
:foreach c in=$comments do={
/ip firewall filter reset-counters [find where comment=$c]
}


:log info "[DDOS_Guard] 檢查完畢,個別項目計數器清空"


接著創建schduler項目,讓他定時跑一次流量偵測

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
On Event內容
/system script run DDOS_guard


然後如果你有需要,你可以在設置一個統計當前流量使否為DDOS攻擊,然後生成LOG訊息
大概像這樣(非必要),可以有個參考訊息

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊
一樣是用Scripts方式+Scheduler方式達成

RouterOS新增雙WAN自訂路由、自動黑名單更新、常見資安漏洞封鎖、防止DDOS攻擊


Source內容
:local threshold 2000
:local detected 0

# **定義 comment 規則列表**
:local comments {"TCP非核定丟包"; "丟棄UDP包"; "停止PING回應"}

# **遍歷所有 comment 規則**
:foreach c in=$comments do={
:local ruleId [/ip firewall filter find where comment=$c]

# **確認找到規則**
:if ([:len $ruleId] > 0) do={
:local count [/ip firewall filter get $ruleId value-name=packets]
:local name [/ip firewall filter get $ruleId value-name=comment]

# **即時判斷是否超過門檻**
:if ($count >= $threshold) do={
:set detected 1
:log warning ("[警告] 偵測到特定 DDoS 攻擊區塊: " . $name . ",當前存取次數: " . $count)
}
} else={
:log warning ("[錯誤] 找不到防火牆規則: " . $c)
}
}



Scheduler的On Event內容
/system script run DDOS_Detected

這樣下來,至少我是沒被DDOS攻擊了,就算真的在遇到,就斷線自動重新撥號,基本上能抵擋許多許多基礎攻擊....
------------------------------------家用版防止DDOS----------------------------------------------------------

------------------------------------我是分隔線----------------------------------------------------------
另外這邊想詢問問下,要如何能讓wireguard回來的封包,能順利透過自定義的pppoe介面出去?
這邊試的結果,可以從pppoe-out1跟pppoe-out2回來沒問題,但是出去就一定只能透過pppoe-out1
用mangle方式強制引導,會導致只能連回來,但是無法進行任何通訊
想請知道的前輩們指導下
2024-11-30 20:25 發佈
https://raw.githubusercontent.com/pwlgrzs/Mikrotik-Blacklist/master/b
lacklist.rsc

404了
kis_987_654
kis_987_654 樓主

作者有更新了,已可正常訪問[微笑]

2024-12-02 10:05
elodie319 wrote:
https://raw...(恕刪)


應該是作者在更新,等明天看看應該就有了
目前裡面輕量版的blacklist-light.rsc還有更新,可以參考看看
wireguard 前一個禮拜有測試過單獨從pppoe-out2 連進來出去

我有調整過mangle 似乎一樣無法透過pppoe-out2 出去.

原本懷疑是不是浮動IP 是否有鎖定一些serivce ,後面驗證ipsec & wireguard 都只能透過pppoe-out1 進出樣子.

我在想是不是routeos 預設設定就是只能走pppoe-out1 進出.....
kendrv

routeros沒預設只能往pppoe-out1出去,可以的話把wireguard設定與路由設定貼出來看看

2024-12-02 21:29
billese10

kendrv 設定跟kis 大大差不多,之前有設定po在mikrotik 研究所內.

2024-12-03 10:36
kis_987_654 wrote:
要如何能讓wireguard回來的封包,能順利透過自定義的pppoe介面出去?
這邊試的結果,可以從pppoe-out1跟pppoe-out2回來沒問題,但是出去就一定只能透過pppoe-out1


wireguard 從pppoe-out2出去

例如wireguard client IP=10.10.10.2

table=你設定的路由table名稱

/routing rule add action=lookup src-address=10.10.10.2/32 table=pppoe-out2

再不行的話應該跟wireguard的allowed address設定有關
我的wireguard的client ip是192.168.3.2/32
我也是照你說的方案設定,然後allowed address 部分,路由器部分peer的allowed address為192.168.3.0/24,手機端這邊為0.0.0.0/0這樣

一樣造成上面的問題,可以連入,但是不能連出
一定只能pppoe-out1出去,不能強制往其他pppoe-out出去
kendrv

你路由表main做ECMP的話需要做策略,不然封包會在兩個pppoe任意切換,wireguard要指定出口的話,要做策略

2024-12-03 19:47
kis_987_654
kis_987_654 樓主

是指table中預設的main,也要進行策略路由嗎?wireguard部分有做完table綁定,但是防火牆那邊設定wireguard網段nat偽裝指定端口出去後,在設定關鍵mangle後,就死循環了

2024-12-03 21:22
kis_987_654
kis_987_654 樓主

目前看起來設定的邏輯,看來跟我設定的差不多,我等這週五回家後,在仔細檢查下看是不是有那邊疏漏了[鬱卒]

2024-12-03 18:29
billese10

昨天有嘗試大大設定,有遇到稍微斷線問題,我回去家裡找時間試試看~

2024-12-04 14:20
kis_987_654 wrote:
我的wireguard...(恕刪)


你在mangle加入這兩條規則試試

/ip firewall mangle

add action=mark-connection chain=prerouting comment=from_isp2 connection-state=new in-interface=pppoe-out2 new-connection-mark=isp2_conn passthrough=no

add action=mark-routing chain=output connection-mark=isp2_conn new-routing-mark=pppoe2 passthrough=no
kis_987_654
kis_987_654 樓主

我本週五回家在嘗試看看,遇到問題在跟大大做討論[微笑]

2024-12-04 17:28
kis_987_654
kis_987_654 樓主

還是一樣[淚]

2024-12-07 10:26
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?