• 860

[研究所] MikroTik RouterOS 學習 (持續更新)


Cowbell wrote:
但是, 最近在想, 有沒有辦法也是利用 Port Knocking 的方式, 送一段特定的 port 序列,
將現在的這個外面的 Source IP , 從原來的 "SAFE" Address List 移除,
達到 "關門" 的效果呢?...(恕刪)


你用另一個 port number 來做 Port Knocking, 不就可以做到嗎?
FB: Pctine

pctine wrote:
你用另一個 port number 來做 Port Knocking, 不就可以做到嗎?


偵測到 Port Knocking 後, 動作只能將 Source IP 加到 Address List,
但是, 卻沒有 Action 可以將 Source IP 移除 Address list.

這是小弟主要的問題.
Cowbell wrote:
偵測到 Port Knocking 後, 動作只能將 Source IP 加到 Address List,
但是, 卻沒有 Action 可以將 Source IP 移除 Address list.

這是小弟主要的問題....(恕刪)


oh, 是我腦筋打結了, 話說把 add to address list 的部份, 設一個時間到期, 應該也差不多是同樣的意思吧.

不然就像前面提的, 你用另一個 port number 去做 knocking, 然後把 ip 加到 remove_ip list, 每分鐘固定跑一個 script 去取出 remove_ip address list, 根據上面的 ip 把原本 allow 的 ip 移除就可以了.
FB: Pctine
Cowbell wrote:
偵測到 Port K...(恕刪)
小弟粗略的寫個腳本範例給您參考,不懂的可以問我.
https://dl.dropboxusercontent.com/u/34743921/checkphone.txt

把腳本放到排程,並設定12秒運行一次.

腳本會固定檢查手機是否在內網 ,手機是否正使用VPN ?

假如手機1分鐘內check 5次ip都沒反應 ,
則將address-list清單記錄手機address的選項關閉,讓ip無法穿越您的filter 10分鐘.
等10分鐘後再重新check手機是否連線,並更新ddns.
感謝 gfx 的 script !!
小弟好好研究一下.

現在, 我想了另一個笨方法, 感覺也可以達到效果,
原來的 Port Knocking 開門方式不變, Add Address List 的 timeout 設定為 5 分鐘,
在我 Android 手機上, 設定一個 Schedule Job , 每 4.5 分鐘就去 Port Knocking 一次,
只要手機對外網路還活著, 就會一直維持 5 分鐘的安全通過名單,
一旦手機網路斷掉, 反正 5 分鐘後, timeout 時間到, 自然這個 Public IP 就會從安全名單移除了.
感覺像是一種 Heart Beat Sync 的作法.
bob771025s00567 wrote:
請問一下RouterOS 的Script 可不可以取的網頁的特定內容呢?

RouterOS提供的工具裡面,有一個項目是fetch,而這個fetch是用來"Access"遠端的,所以不會只有部分,而RouterOS的scripting功能又沒有那麼強大,所以不容易做到
我自己修改了一個自動升級 RouterOS & bootloader的腳本第一版
還要麻煩各位幫忙抓bug

auto-upgrade-RouterOS schedule(run interval = 1d)
/system package update
check-for-updates
:delay 10s;
# 偵測到新版便會啟動另一個schedule(auto-upgrade-bootloader)
if ( [get current-version] != [get latest-version] ) do={ /system scheduler enable auto-upgrade-bootloader; :delay 10s; upgrade; }


auto-upgrade-bootloader schedule(run interval = 2min)
:delay 100s;
# 執行一次後disable自己,避免路由器消耗過多資源
/system scheduler disable auto-upgrade-bootloader;
/system routerboard
:global current [get current-firmware];
:global latest [get upgrade-firmware];
:if ($current != $latest) do={ /system routerboard upgrade; /system reboot; }
eavictor wrote:
我自己修改了一個自動...(恕刪)

若您要呼叫另一個程序 ,不需要再寫一個Script,用變數宣告就好.如:
(為了讓語法正確小弟擅自變更部份內容,先請eavictor大見諒)
:local autoupgradebootloader do={
:delay 100s;
:if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) \
do={ /system routerboard upgrade; /system reboot; }
}

所以這一段
if ( [get current-version] != [get latest-version] ) \
do={ /system scheduler enable auto-upgrade-bootloader; :delay 10s; upgrade; }
改成如下即可^^
if ( [get current-version] != [get latest-version] ) \
do={$autoupgradebootloader; :delay 10s; upgrade; }
我的想法是這樣
抱歉敘述得很爛也很難讓人理解

因為新的bootloader要在RouterOS更新到新版之後才會出現
所以一定要照著upgrade RouterOS > reboot > upgrade bootloader > reboot這四個步驟來自動更新


1. 每天檢查一次RouterOS是否有新版
2. 偵測到新版,enable另一個偵測bootloader版本的schedule並馬上更新RouterOS
3. 更新RouterOS後直接重開機
4. 偵測一次bootloader是否有新版,然後把自己disable。
5.1 沒新版bootloader就直接維持開機狀態
5.2 有偵測到新版bootloader就升級後重開機
eavictor wrote:
我自己修改了一個自動升級 RouterOS & bootloader的腳本第一版...(恕刪)


感謝分享!

不過 RouterOS 不太建議讓它自動升級, 不僅是 RouterOS, 而是絕大部份的 firewall 都不太建議讓系統自動升級(好像也很少 firewall 有自動升級的功能), 小弟也遇過 RouterOS 手動升級失敗的情況, 如果系統運作的很好, 一般都不太需要去升級 OS, 除非是一些已知的漏洞修正.
FB: Pctine
無責任小添

網兄所言我有深刻的體悟與經驗。沒問題,真的不要為了新功能更新OS,除非你真的一定要用到。新的OS不一定更穩。

2021-12-12 18:10
  • 860
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 860)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?