我未完成的項目。 200 個 MikroTik 路由器的網絡

我未完成的項目。 200 個 MikroTik 路由器的網絡

大家好。 本文適用於那些在公園裡擁有大量 Mikrotik 設備並且希望實現最大程度的統一以免分別連接到每個設備的人。 在這篇文章中,我將描述一個不幸的是由於人為因素而未能達到戰鬥條件的項目。 簡而言之:超過 200 個路由器、快速設置和員工培訓、按區域統一、過濾網絡和特定主機、輕鬆向所有設備添加規則、日誌記錄和訪問控制的能力。

下面描述的內容並不假裝是現成的案例,但我希望它對您規劃網絡和最大限度地減少錯誤時有用。 也許有些觀點和決定對您來說似乎不太正確 - 如果是這樣,請寫在評論中。 這種情況下的批評將是一個普通存錢罐中的經歷。 因此,讀者,看看評論,也許作者犯了一個嚴重的錯誤——社區會提供幫助。

路由器數量為200-300個,分散在不同城市,互聯網連接質量不同。 有必要讓一切變得美麗,並以一種易於理解的方式向當地管理員解釋一切將如何運作。

那麼每個項目從哪裡開始呢? 當然,與 傳統知識.

  1. 根據客戶要求組織所有分支機構的網絡規劃,網絡分段(分支機構3到20個網絡,具體取決於設備數量)。
  2. 在每個分支機構設置設備。 檢查提供商在不同工作條件下的真實帶寬。
  3. 組織設備保護、白名單控制、自動檢測攻擊並在一定時間內自動列入黑名單,最大限度地減少使用各種技術手段來攔截控制訪問和拒絕服務。
  4. 根據客戶要求組織安全 VPN 連接和網絡過濾。 從每個分支機構到中心至少有 3 個 VPN 連接。
  5. 基於第 1、2 點。選擇構建容錯 VPN 的最佳方法。 承包商可以在有正確理由的情況下選擇動態佈線技術。
  6. 按協議、端口、主機和客戶使用的其他特定服務組織流量優先級。 (VOIP、提供重要服務的主機)
  7. 組織監控和記錄路由器事件,以便技術支持人員做出響應。

據我們了解,在某些情況下,TOR 是根據要求編寫的。 我在聽取主要問題後,自己制定了這些要求。 他承認其他人可以負責實施這些要點。

將使用哪些工具來滿足這些要求:

  1. ELK 堆棧(一段時間後,了解到將使用 Fluentd 代替 Logstash)。
  2. 安西布爾。 為了便於管理和共享訪問,我們將使用 AWX。
  3. GITLAB。 這裡無需解釋。 我們的配置沒有版本控制。
  4. 電源外殼。 將有一個用於初始生成配置的簡單腳本。
  5. Doku wiki,用於編寫文檔和手冊。 在本例中,我們使用 habr.com。
  6. 監控將通過zabbix完成。 還會有一個連接圖,方便大家有個大概的了解。

EFK 設置點

關於第一點,我將僅描述索引構建的意識形態。 有許多
關於從運行 mikrotik 的設備設置和接收日誌的優秀文章。

我將詳細闡述以下幾點:

1.根據方案,值得考慮的是從不同地方、不同端口接收日誌。 為此,我們將使用日誌聚合器。 我們還希望為所有具有共享訪問能力的路由器製作通用圖形。 然後我們構建索引如下:

這是 fluidd 的一段配置 彈性搜索
Logstash_format true
索引名稱 mikrotiklogs.north
logstash_prefix mikrotiklogs.north
刷新間隔 10s
主機 彈性搜索:9200
9200口

因此,我們可以根據計劃組合路由器和分段 - mikrotiklogs.west、mikrotiklogs.south、mikrotiklogs.east。 為什麼讓事情變得如此困難? 我們知道我們將擁有 200 台或更多設備。 不要遵循一切。 從elasticsearch 6.8版本開始,我們可以使用安全設置(無需購買許可證),因此,我們可以在技術支持員工或本地系統管理員之間分配查看權限。
表格、圖表——這裡你只需要同意——要么使用相同的,要么每個人都這樣做,因為這對他來說很方便。

2. 通過日誌記錄。 如果我們在防火牆規則中啟用登錄,那麼我們的名稱中不包含空格。 可以看出,在fluidd中使用簡單的配置,我們就可以過濾數據並製作方便的面板。 下圖是我家的路由器。

我未完成的項目。 200 個 MikroTik 路由器的網絡

3.根據佔用空間和日誌。 平均而言,每小時 1000 條消息,日誌每天佔用 2-3 MB,您會發現,這並不算多。 彈性搜索版本 7.5。

ANSIBLE.AWX

幸運的是,我們有一個現成的 routeros 模塊
我指出了關於 AWX 的問題,但下面的命令只是關於 ansible 最純粹的形式 - 我認為對於那些使用過 ansible 的人來說,通過 gui 使用 awx 不會有任何問題。

老實說,在此之前我查看了其他使用 ssh 的指南,每個人都有不同的響應時間問題和一堆其他問題。 我再說一遍,它沒有進入戰鬥,將此信息作為一個不超過 20 台路由器的實驗。

我們需要使用證書或帳戶。 這由你決定,我要證書。 關於權利的一些微妙觀點。 我授予寫入權限-至少“重置配置”不起作用。

生成、複製證書和導入應該沒有問題:

命令簡要列表在您的電腦上
ssh-keygen -t RSA,回答問題,保存密鑰。
複製到 mikrotik:
用戶 ssh-keys 導入 public-key-file=id_mtx.pub user=ansible
首先,您需要創建一個帳戶並為其分配權限。
檢查與證書的連接
ssh -p 49475 -i /keys/mtx [電子郵件保護]

寫入 vi /etc/ansible/hosts
MT01 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=routeros ansible_ssh_port=49475 ansible_ssh_user= ansible

好吧,一個劇本的例子: 名稱:add_work_sites
主持人:testmt
序列號:1
連接:network_cli
遠程用戶:mikrotik.west
收集事實:是的
任務:
名稱:添加工作站點
路由器命令:
命令:
- /ip 防火牆地址列表添加地址=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /ip 防火牆地址列表添加地址=habr.com 列表=work_sites 註釋=for_habr

從上面的配置可以看出,編譯自己的劇本是一件簡單的事情。 掌握 cli mikrotik 就足夠了。 想像一下這樣的情況,你需要刪除所有路由器上包含某些數據的地址列表,那麼:

查找並刪除/ip 防火牆地址列表刪除 [查找 list="gov.ru" 的位置]

我故意沒有在此處列出整個防火牆列表。 每個項目都是單獨的。 但我可以肯定地說一件事,只使用地址列表。

根據 GITLAB 的說法,一切都清楚了。 我不會詳述這一刻。 就單個任務、模板、處理程序而言,一切都很漂亮。

PowerShell的

將有 3 個文件。 為什麼要使用powershell? 任何更熟悉的人都可以選擇用於生成配置的工具。 既然如此,每個人的 PC 上都有 Windows,那麼當 powershell 更方便時為什麼要在 bash 上呢? 誰更舒服。

腳本本身(簡單易懂):[cmdletBinding()] 參數(
[參數(強制=$true)] [字符串]$EXTERNALIPADDRESS,
[參數(強制=$true)] [字符串]$EXTERNALIPROUTE,
[參數(強制=$true)] [字符串]$BWorknets,
[參數(強制=$true)] [字符串]$CWorknets,
[參數(強制=$true)] [字符串]$BVoipNets,
[參數(強制=$true)] [字符串]$CVoipNets,
[參數(強制=$true)] [字符串]$CClientss,
[參數(強制=$true)] [字符串]$BVPNWORKs,
[參數(強制=$true)] [字符串]$CVPNWORKs,
[參數(強制=$true)] [字符串]$BVPNCLIENTSs,
[參數(強制=$true)] [字符串]$cVPNCLIENTSs,
[參數(強制=$true)] [字符串]$NAMEROUTER,
[參數(強制=$true)] [字符串]$ServerCertificates,
[參數(強制=$true)] [字符串]$infile,
[參數(強制=$true)] [字符串]$outfile
)

獲取內容 $infile | Foreach-Object {$_.Replace("EXTERNIP", $EXTERNALIPADDRESS)} |
Foreach-Object {$_.Replace("EXTROUTE", $EXTERNALIPROUTE)} |
Foreach-Object {$_.Replace("BWorknet", $BWorknets)} |
Foreach-Object {$_.Replace("CWorknet", $CWorknets)} |
Foreach-Object {$_.Replace("BVoipNet", $BVoipNets)} |
Foreach-Object {$_.Replace("CVoipNet", $CVoipNets)} |
Foreach-Object {$_.Replace("CClients", $CClientss)} |
Foreach-Object {$_.Replace("BVPNWORK", $BVPNWORKs)} |
Foreach-Object {$_.Replace("CVPNWORK", $CVPNWORKs)} |
Foreach-Object {$_.Replace("BVPNCLIENTS", $BVPNCLIENTSs)} |
Foreach-Object {$_.Replace("CVPNCLIENTS", $cVPNCLIENTSs)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | 設置內容 $outfile

抱歉,我無法列出所有規則。 它不會很漂亮。 您可以在最佳實踐的指導下自己制定規則。

例如,以下是我所引導的鏈接列表:wiki.mikrotik.com/wiki/手冊:保護您的路由器
wiki.mikrotik.com/wiki/手冊:IP/防火牆/過濾器
wiki.mikrotik.com/wiki/手冊:OSPF-示例
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/手冊:Winbox
wiki.mikrotik.com/wiki/手冊:升級_RouterOS
wiki.mikrotik.com/wiki/手冊:IP/Fasttrack - 在這裡您需要知道,當啟用 fasttrack 時,流量優先級和整形規則將不起作用 - 對於弱設備很有用。

變量約定:以下面的網絡為例:
192.168.0.0/24工作網絡
172.22.4.0/24 網絡電話
10.0.0.0/24 網絡,適用於無法訪問 LAN 的客戶端
192.168.255.0/24 大型分支機構VPN網絡
172.19.255.0/24 小型VPN網絡

網絡地址由4個十進制數字組成,分別為ABCD,替換按照同樣的原理進行,如果啟動時詢問B,那麼對於網絡192.168.0.0/24,需要輸入數字0,對於C = 0 。
$EXTERNALIPADDRESS - 由提供商分配的地址。
$EXTERNALIPROUTE - 到網絡 0.0.0.0/0 的默認路由
$BWorknets - 工作網絡,在我們的示例中將有 168 個
$CWorknets - 工作網絡,在我們的示例中為 0
$BVoipNets - 我們的示例中的 VOIP 網絡 22
$CVoipNets - 我們的示例中的 VOIP 網絡 4
$CClientss - 客戶端網絡 - 僅訪問互聯網,在我們的例子中為 0
$BVPNWORKs - 大型分支機構的 VPN 網絡,在我們的示例中為 20
$CVPNWORKs - 適用於大型分支機構的 VPN 網絡,在我們的示例中為 255
$BVPNCLIENTS - 小型分支機構的 VPN 網絡,意味著 19
$CVNCLIENTS - 小型分支機構的 VPN 網絡,意味著 255
$NAMEROUTER - 路由器名稱
$ServerCertificate - 您首先導入的證書的名稱
$infile - 指定我們將從中讀取配置的文件的路徑,例如 D:config.txt (更好的英文路徑,不帶引號和空格)
$outfile - 指定保存路徑,例如D:MT-test.txt

出於顯而易見的原因,我故意更改了示例中的地址。

我錯過了檢測攻擊和異常行為的要點——這值得單獨寫一篇文章。 但值得指出的是,在這個類別中,您可以使用來自Zabbix的監控數據值+從elasticsearch計算出的curl數據。

需要注意哪些要點:

  1. 網絡計劃。 最好以可讀的形式編寫。 Excel 就足夠了。 不幸的是,我經常看到網絡是按照“一個新分支已經出現,這裡是/24給你”的原則來編譯的。 沒有人知道某一特定地點預計有多少設備以及是否會進一步增長。 例如,開了一家小商店,最初明確設備不會超過10個,為什麼要分配/24? 相反,對於大型分支機構,他們分配 / 24,並且有 500 個設備 - 您可以只添加一個網絡,但您想立即考慮所有事情。
  2. 過濾規則。 如果該項目假設將存在網絡分離和最大分段。 最佳實踐隨著時間的推移而變化。 以前,他們共享一個PC網絡和一個打印機網絡,現在不共享這些網絡是很正常的。 值得使用常識,不要在不需要的地方生成許多子網,也不要將所有設備組合到一個網絡中。
  3. 所有路由器上的“黃金”設置。 那些。 如果你有計劃。 值得立即預見所有事情並嘗試確保所有設置都相同 - 只有不同的地址列表和 IP 地址。 一旦出現問題,調試的時間就會減少。
  4. 組織方面的重要性不亞於技術方面。 通常,懶惰的員工會“手動”遵循這些建議,而不使用現成的配置和腳本,這最終會導致從頭開始出現問題。

通過動態路由。 使用帶有分區的 OSPF。 但這是一個測試台,在戰鬥條件下設置這樣的東西更有趣。

我希望沒有人因為我沒有發布路由器的配置而感到不安。 我認為鏈接就足夠了,然後一切都取決於要求。 當然,還需要測試,更多的測試。

祝愿大家在新的一年裡實現自己的計劃。 願您獲得訪問權限!

來源: www.habr.com

添加評論