RouterOS 6.41版應用於設有伺服器的家用網路(五):Port knocking

Mikrotik RB450G外觀

能想出Port knocking的人,真的滿聰明的,這個方法好用到我看到第一眼我就知道這是我要找的東西。
(其實有點文不對題了,前陣子把網路升到300/100Mbps,也換掉了使用好幾年的RB450G,現役的Mikrotik路由器是高通晶片的hAP ac^2,韌體是RouterOS v6.43rc7。)

路由器是一個區域網路的核心,重要性不言而喻,除了更改Port以及使用高強度的密碼外,在Mikrotik路由器的預設防火牆裡還有一條是禁止內網以外的連線存取路由器。

/ip firewall filter
add action=drop chain=input comment="defconf: drop all not coming from LAN" in-interface-list=!LAN

那萬一你要在外面使用怎麼辦?你也被擋在牆外了,這時候就敲一下門的方法就很好用了(Port knocking)。

Port knocking的原理是利用一個裝置,在一定的時間內依照順序存取一個或數個路由器上的Port來把這個裝置的IP位址放進白名單,並設定在白名單裡的IP位址在指定的時間內可以穿過防火牆存取路由器,就像是要連續敲對幾個門後才能到大廳刷卡進場。網路上的攻擊大多都是存取特定的Port,如果在一定的時間內被連續敲對了好幾個門而成了白名單,你就認了吧。

第一步,先建立起數個門(這裡以三個門為例)。
/ip firewall filter
add action=add-src-to-address-list address-list=Knock-LV1 address-list-timeout=15s chain=input comment="Port Knocking" dst-port=54987 protocol=tcp
add action=add-src-to-address-list address-list=Knock-LV2 address-list-timeout=15s chain=input dst-port=50987 protocol=tcp src-address-list=Knock-LV1
add action=add-src-to-address-list address-list=KnockWhiteList address-list-timeout=1h chain=input dst-port=59987 log=yes protocol=tcp src-address-list=Knock-LV2

第一條:透過tcp存取Port 54987,可以讓你加進Knock-LV1的名單之中。
第二條:在你被加進Knock-LV1的名單後的15秒內,若你透過tcp存取Port 50987,可以讓你加進Knock-LV2的名單之中。
第三條:在你被加進Knock-LV2的名單後的15秒內,若你透過tcp存取Port 59987,可以讓你加進KnockWhiteList的名單內一個小時,這裡有我有把log打開方便觀察是否有異狀(門都被別人橇開了當然要檢查一下)。

第二步,建立防火牆讓KnockWhiteList內的IP可以存取路由器。
/ip firewall filter
add action=accept chain=input log=yes src-address-list=KnockWhiteList

第三步,將第二步的防火牆規則拉到比禁止外網存取的防火牆規則之上。

就這麼簡單!卻有很高的安全性。

至於要怎麼敲門法?用telnet就可以了。
Port knocking-2

Port knocking-1

2017 日本放風自由行:東京

雪中紅(?)

果然念理工的就是對下標題這件事感到棘手,想很久還是沒一個像樣的標題=_=

年度放風的行程今年(應該說去年)來到東京,一共安排了九天八夜,小港機場早去早回的飛機,所以實際在地算是八天八夜。

踩點的範圍以東京市區(上野、澀谷、汐留、銀座、新宿、六本木等等)為主,離市區較遠的輕井澤、河口湖和昭和紀念公園也有到此一遊。使用的機身一樣是Nikon D810與Nikon D500再外加一台Sony RX100M5,鏡頭是Nikkor 20mm f/1.8G、Nikkor 24-70mm f/2.8E VR和Nikkor 70-200mm f/4G VR。

去年背了雙機出去結果覺得有些景不方便取,所以去買了一台RX100M5當輕便相機用,結果這次變成背了三台出去,並沒有比較輕鬆,而RX100M5讓我比較滿意的只有這張。對照片要求很高的人,還是不要有那種帶著輕便相機出門的念頭比較好,受限於感光元件的尺寸,很多拍攝上的小技巧沒辦法使用,例如曝光略不足來換ISO或是快門速度。
9天旅程從這開始

RouterOS 6.41版應用於設有伺服器的家用網路(四):QoS

Mikrotik RB450G外觀

100/40Mbps這樣的頻寬應該足以應付家用網路環境下大部分的情況,為什麼還需要做QoS(Quality of Service)?

個人的觀點,QoS的價值在於控制而不是限制,控制是將所有封包分門別類並依照其目的給予優先權和對應的保障與最大頻寬,在流量過大或滿載的時候分配頻寬,以至於重要的服務不至於延遲或停擺,才是QoS的目的。

RouterOS 6.41版應用於設有伺服器的家用網路(三):Port forwarding/NAT loopback/防止DNS遞迴攻擊

Mikrotik RB450G外觀

建立Port forwarding
若要透過外網的IP或網址存取在Router之後的裝置,需透過埠轉送(Port forwarding)來達成,否則Router無法知道這一條連線是要通往內網的哪一個裝置(將外網IP port為XXXX的連線轉送至內網IP ***.***.***.*** port YYYY)。
/ip firewall nat
add action=dst-nat chain=dstnat comment="NAS Port forwarding" dst-address-type=local dst-port=XXXX log=yes protocol=tcp to-addresses=***.***.***.*** to-ports=YYYY

防止NAT loopback
當你在內網想要用外網的IP或網址來存取內網裡的裝置(伺服器)時,會出現無法存取的情況,但在外網卻沒有這個問題,此現象稱為NAT Loopback,在RouterOS的WIKI裡稱為Hairpin_NAT,裡面有詳盡的解說!

RouterOS 6.41版應用於設有伺服器的家用網路(二):VPN

Mikrotik RB450G外觀

建立VPN server
RouterOS支援PPTP、L2TP、SSTP與OpenVPN(OVPN),SSTP需要憑證和網域而OpenVPN需要憑證,不過是家用環境而已不想弄得太麻煩,所以跳過SSTP與OpenVPN,只弄PPTP與L2TP的VPN server就好,L2TP的加密是256 bit,比PPTP的128 bit好一些,所以在外使用以L2TP為主,PPTP做備援。

建立VPN IP Pool方便控管
/ip pool
add name=PPTP_VPN ranges=192.168.88.171-192.168.88.180
add name=L2TP_VPN ranges=192.168.88.161-192.168.88.170

RouterOS 6.41版應用於設有伺服器的家用網路(一):Multi-PPPoE/DHCP/Route

Mikrotik RB450G外觀RouterOS在6.41算是個大改版,某些用戶會因為取消了Master-port並預設以Bridge代替之後出現無法上網的情況,
修正了Bridge後可能還是不行,因為DHCP server的interface也需要重新指向,沒錯,我的確是那個多數用戶之一。

由於還不知道有多少遺毒,且現行的設定已沿用好幾版更新,乾脆整包砍掉重練,避免日後有掌握不到原因的突發狀況要解。

目前家裡的網路環境如下
  • Router為RB450G,RouterOS 6.41版,重置後帶入6.41版本的預設值。
  • WAN為Hinet光世代,上行40Mbps下行100Mbps,RB450G透過ETH1與中華電信的小烏龜連結。
  • 共有一個固定IP及七個浮動IP可同時以PPPoE的方式撥號上網,機房端不鎖MAC。

這次的需求如下
  • LAN的部分只使用一個子網路192.168.88.0/24,並將ETH2、ETH3、ETH4與ETH5 port橋接在一起,其Interface命名為Bridge。
  • Multi-PPPoE,RB450G同時撥出一組固定IP與一組浮動IP。
  • Neptune Apex與Synology NAS走固定IP,其他裝置(電腦/手機/平板/Chromecast/...)走浮動IP,以該裝置是否在DHCP pool內來劃分。
  • 建立PPTP與L2TP二種VPN伺服器,方便從WAN取得LAN的資源。
  • 以HTB+PCQ建立QoS,優先權依序為各種服務→伺服器→一般網路使用→影音多媒體串流→P2P應用,以確保在流量滿載的情況下,重要的服務還可以正常使用。