Ang aking unrealized project. Network ng 200 MikroTik router

Ang aking unrealized project. Network ng 200 MikroTik router

Kamusta kayong lahat. Ang artikulong ito ay inilaan para sa mga may maraming Mikrotik device sa kanilang fleet, at gustong gumawa ng maximum na pag-iisa upang hindi kumonekta sa bawat device nang hiwalay. Sa artikulong ito ay ilalarawan ko ang isang proyekto na, sa kasamaang-palad, ay hindi umabot sa mga kondisyon ng labanan dahil sa mga kadahilanan ng tao. Sa madaling salita: higit sa 200 mga router, mabilis na pag-setup at pagsasanay sa kawani, pag-iisa ayon sa rehiyon, pag-filter ng mga network at mga partikular na host, ang kakayahang madaling magdagdag ng mga panuntunan sa lahat ng mga aparato, pag-log at kontrol sa pag-access.

Ang inilalarawan sa ibaba ay hindi nagpapanggap na isang handa na kaso, ngunit umaasa ako na ito ay magiging kapaki-pakinabang sa iyo kapag pinaplano ang iyong mga network at pinapaliit ang mga error. Marahil ang ilang mga punto at solusyon ay maaaring hindi ganap na tama sa iyo - kung gayon, sumulat sa mga komento. Ang pagpuna sa kasong ito ay magiging isang karanasan para sa karaniwang kabang-yaman. Samakatuwid, mambabasa, tingnan ang mga komento, marahil ang may-akda ay gumawa ng isang malubhang pagkakamali - ang komunidad ay makakatulong.

Ang bilang ng mga router ay 200-300, na nakakalat sa iba't ibang lungsod na may iba't ibang kalidad ng mga koneksyon sa Internet. Kinakailangang gawin ang lahat nang maganda at malinaw na ipaliwanag sa mga lokal na admin kung paano gagana ang lahat.

Kaya, saan magsisimula ang anumang proyekto? Siyempre, kasama TK.

  1. Organisasyon ng isang network plan para sa lahat ng sangay ayon sa mga kinakailangan ng customer, network segmentation (mula 3 hanggang 20 network sa mga sangay depende sa bilang ng mga device).
  2. Pagse-set up ng mga device sa bawat sangay. Sinusuri ang tunay na bilis ng throughput ng provider sa ilalim ng iba't ibang kondisyon ng operating.
  3. Organisasyon ng proteksyon ng device, pamamahala ng whitelist, awtomatikong pag-detect ng mga pag-atake na may awtomatikong pag-blacklist para sa isang tiyak na tagal ng panahon, pagliit sa paggamit ng iba't ibang teknikal na paraan na ginagamit upang maharang ang kontrolin ang pag-access at tanggihan ang serbisyo.
  4. Organisasyon ng mga secure na koneksyon sa VPN na may network filtering ayon sa mga kinakailangan ng customer. Pinakamababang 3 koneksyon sa VPN mula sa bawat sangay patungo sa gitna.
  5. Batay sa mga puntos 1, 2. Piliin ang pinakamainam na paraan upang bumuo ng mga fault-tolerant na VPN. Kung nabigyang-katwiran nang tama, ang dynamic na teknolohiya sa pagruruta ay maaaring piliin ng kontratista.
  6. Organisasyon ng prioritization ng trapiko ayon sa mga protocol, port, host at iba pang partikular na serbisyo na ginagamit ng customer. (VOIP, mga host na may mahahalagang serbisyo)
  7. Organisasyon ng pagsubaybay at pag-log ng mga kaganapan sa router para sa tugon ng mga kawani ng teknikal na suporta.

Tulad ng naiintindihan namin, sa ilang mga kaso ang mga teknikal na detalye ay iginuhit batay sa mga kinakailangan. Ako mismo ang bumalangkas sa mga kinakailangang ito, pagkatapos makinig sa mga pangunahing problema. Inamin niya ang posibilidad na may ibang makakapag-asikaso sa mga puntong ito.

Anong mga tool ang gagamitin upang matupad ang mga kinakailangang ito:

  1. ELK stack (pagkatapos ng ilang oras, naging malinaw na fluentd ang gagamitin sa halip na logstash).
  2. Ansible. Para sa kadalian ng pangangasiwa at pagbabahagi ng access, gagamitin namin ang AWX.
  3. GITLAB. Hindi na kailangang ipaliwanag dito. Nasaan tayo kung walang version control ng ating mga config?
  4. Power shell. Magkakaroon ng simpleng script para sa unang henerasyon ng config.
  5. Doku wiki, para sa pagsulat ng dokumentasyon at mga gabay. Sa kasong ito, ginagamit namin ang habr.com.
  6. Ang pagsubaybay ay isasagawa sa pamamagitan ng zabbix. Ang isang diagram ng koneksyon ay iguguhit din doon para sa isang pangkalahatang pag-unawa.

Mga punto sa pag-setup ng EFK

Tungkol sa unang punto, ilalarawan ko lamang ang ideolohiya kung saan itatayo ang mga indeks. marami naman
mahusay na mga artikulo sa pag-set up at pagtanggap ng mga log mula sa mga device na tumatakbo sa mikrotik.

Tatalakayin ko ang ilang mga punto:

1. Ayon sa diagram, ito ay nagkakahalaga ng pagsasaalang-alang sa pagtanggap ng mga log mula sa iba't ibang mga lugar at sa iba't ibang mga port. Para dito gagamitin namin ang isang log aggregator. Nais din naming gumawa ng mga unibersal na graphics para sa lahat ng mga router na may kakayahang magbahagi ng access. Pagkatapos ay binubuo namin ang mga index tulad ng sumusunod:

narito ang isang piraso ng config na may fluentd uri ng elasticsearch
totoo ang logstash_format
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
host nababanat: 9200
port 9200

Sa ganitong paraan maaari nating pagsamahin ang mga router at segment ayon sa plano - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Bakit ginagawa itong kumplikado? Naiintindihan namin na magkakaroon kami ng 200 o higit pang mga device. Hindi mo masusubaybayan ang lahat. Sa bersyon 6.8 ng elasticsearch, available sa amin ang mga setting ng seguridad (nang hindi bumibili ng lisensya), sa gayon maaari naming ipamahagi ang mga karapatan sa panonood sa pagitan ng mga empleyado ng teknikal na suporta o mga lokal na administrator ng system.
Mga talahanayan, mga graph - narito kailangan mo lamang na sumang-ayon - gamitin ang pareho, o ginagawa ng lahat kung ano ang maginhawa para sa kanya.

2. Sa pamamagitan ng pag-log. Kung pinagana namin ang pag-log in sa mga panuntunan ng firewall, gagawin namin ang mga pangalan nang walang mga puwang. Ito ay makikita na sa pamamagitan ng paggamit ng isang simpleng config sa fluentd, maaari naming i-filter ang data at gumawa ng mga maginhawang panel. Ang larawan sa ibaba ay ang aking home router.

Ang aking unrealized project. Network ng 200 MikroTik router

3. Sa pamamagitan ng espasyo na inookupahan at mga tala. Sa karaniwan, na may 1000 mensahe kada oras, ang mga log ay tumatagal ng 2-3 MB bawat araw, na, nakikita mo, ay hindi ganoon karami. Elasticsearch bersyon 7.5.

ANSIBLE.AWX

Sa kabutihang palad para sa amin, mayroon kaming handa na module para sa mga routero
Nabanggit ko ang tungkol sa AWX, ngunit ang mga utos sa ibaba ay tungkol lamang sa ansible sa dalisay nitong anyo - Sa palagay ko para sa mga nagtrabaho sa ansible, walang magiging problema sa paggamit ng awx sa pamamagitan ng gui.

Upang maging matapat, bago ito tumingin ako sa iba pang mga gabay kung saan ginamit nila ang ssh, at lahat sila ay may iba't ibang mga problema sa oras ng pagtugon at isang bungkos ng iba pang mga problema. Uulitin ko, hindi ito napunta sa isang away , kunin ang impormasyong ito bilang isang eksperimento na hindi nakalampas sa isang stand ng 20 router.

Kailangan nating gumamit ng sertipiko o account. Kayo na po ang magdesisyon, ako po ay para sa mga certificate. Ang ilang banayad na punto tungkol sa mga karapatan. Nagbibigay ako ng mga karapatan sa pagsulat - hindi bababa sa "reset config" ay hindi gagana.

Dapat ay walang mga problema sa pagbuo, pagkopya at pag-import ng sertipiko:

Maikling listahan ng commandSa iyong PC
ssh-keygen -t RSA, sagutin ang mga tanong, i-save ang susi.
Kopyahin sa mikrotik:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Una kailangan mong lumikha ng isang account at magtalaga ng mga karapatan dito.
Sinusuri ang koneksyon gamit ang sertipiko
ssh -p 49475 -i /keys/mtx [protektado ng email]

Magrehistro sa 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

Well, isang halimbawa ng playbook: - pangalan: add_work_sites
mga host: testmt
serye: 1
koneksyon: network_cli
remote_user: mikrotik.west
gather_facts: oo
gawain:
- pangalan: magdagdag ng Work_sites
routeros_command:
utos:
β€” /ip firewall address-list magdagdag ng address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
β€” /ip firewall address-list magdagdag ng address=habr.com list=work_sites comment=for_habr

Tulad ng nakikita mo mula sa pagsasaayos sa itaas, ang paggawa ng iyong sariling mga playbook ay hindi mahirap. Ito ay sapat na upang makabisado ng mabuti ang cli mikrotik. Isipin natin ang isang sitwasyon kung saan kailangan mong alisin ang listahan ng address na may ilang partikular na data sa lahat ng mga router, pagkatapos:

Hanapin at alisin/ip firewal address-list alisin [hanapin kung saan list="gov.ru"]

Sinadya kong hindi isama ang buong listahan ng firewall dito dahil... ito ay magiging indibidwal para sa bawat proyekto. Ngunit isang bagay ang masasabi kong sigurado, gamitin lamang ang listahan ng address.

Ayon sa GITLAB ang lahat ay malinaw. Hindi na ako magtatagal sa puntong ito. Ang lahat ay maganda para sa mga indibidwal na gawain, template, handler.

Powershell

Magkakaroon ng 3 file dito. Bakit powershell? Maaari kang pumili ng anumang tool para sa pagbuo ng mga config, anuman ang mas maginhawa para sa iyo. Sa kasong ito, lahat ay may Windows sa kanilang PC, kaya bakit ito gagawin sa bash kapag ang powershell ay mas maginhawa. Alin ang mas maginhawa?

Ang script mismo (simple at naiintindihan):[cmdletBinding()] Param(
[Parameter(Mandatory=$true)] [string]$EXTERNALIPADDRESS,
[Parameter(Mandatory=$true)] [string]$EXTERNALIPROUTE,
[Parameter(Mandatory=$true)] [string]$BWorknets,
[Parameter(Mandatory=$true)] [string]$CWorknets,
[Parameter(Mandatory=$true)] [string]$BVoipNets,
[Parameter(Mandatory=$true)] [string]$CVoipNets,
[Parameter(Mandatory=$true)] [string]$CClientss,
[Parameter(Mandatory=$true)] [string]$BVPNWORKs,
[Parameter(Mandatory=$true)] [string]$CVPNWORKs,
[Parameter(Mandatory=$true)] [string]$BVPNCLIENTSs,
[Parameter(Mandatory=$true)] [string]$cVPNCLIENTS,
[Parameter(Mandatory=$true)] [string]$NAMEROUTER,
[Parameter(Mandatory=$true)] [string]$ServerCertificates,
[Parameter(Mandatory=$true)] [string]$infile,
[Parameter(Mandatory=$true)] [string]$outfile
)

Kumuha ng Nilalaman $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", $ServerCertificate)} | Set-Content $outfile

Patawarin mo ako, hindi ko mai-post ang lahat ng mga patakaran dahil... hindi ito magiging napakaganda. Magagawa mo mismo ang mga panuntunan, na ginagabayan ng pinakamahuhusay na kagawian.

Halimbawa, narito ang isang listahan ng mga link na sinundan ko:wiki.mikrotik.com/wiki/Manual:Securing_Your_Router
wiki.mikrotik.com/wiki/Manual:IP/Firewall/Filter
wiki.mikrotik.com/wiki/Manual:OSPF-mga halimbawa
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/Manual:Upgrading_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - dito kailangan mong malaman na kapag ang fasttrack ay pinagana, ang traffic prioritization at mga panuntunan sa paghubog ay hindi gagana - kapaki-pakinabang para sa mga mahihinang device.

Mga simbolo para sa mga variable:Ang mga sumusunod na network ay kinuha bilang isang halimbawa:
192.168.0.0/24 gumaganang network
172.22.4.0/24 VOIP network
10.0.0.0/24 network para sa mga kliyenteng walang access sa lokal na network
192.168.255.0/24 VPN network para sa malalaking sangay
172.19.255.0/24 VPN network para sa maliit

Ang address ng network ay binubuo ng 4 na decimal na numero, ayon sa pagkakabanggit A.B.C.D, gumagana ang kapalit sa parehong prinsipyo, kung sa pagsisimula ay humihingi ito ng B, nangangahulugan ito na kailangan mong ipasok ang numero 192.168.0.0 para sa network 24/0, at para sa C = 0.
$EXTERNALIPADDDRESS - nakatuong address mula sa provider.
$EXTERNALIPROUTE - default na ruta sa network 0.0.0.0/0
$BWorknets - Work network, sa aming halimbawa ay magkakaroon ng 168
$CWorknets - Gumaganang network, sa aming halimbawa ito ay magiging 0
$BVoipNets - VOIP network sa aming halimbawa dito 22
$CVoipNets - VOIP network sa aming halimbawa dito 4
$CClientss - Network para sa mga kliyente - Internet access lamang, sa aming kaso dito 0
$BVPNWORKs - VPN network para sa malalaking sangay, sa aming halimbawa 20
$CVPNWORKs - VPN network para sa malalaking sangay, sa aming halimbawa 255
$BVPNCLIENTS - VPN network para sa maliliit na sangay, ibig sabihin 19
$CVPNCLIENTS - VPN network para sa maliliit na sangay, ibig sabihin ay 255
$NAMEROUTER - pangalan ng router
$ServerCertificate - ang pangalan ng certificate na dati mong na-import
$infile β€” Tukuyin ang path sa file kung saan babasahin natin ang config, halimbawa D:config.txt (mas mabuti ang English path na walang mga quote at espasyo)
$outfile β€” tukuyin ang path kung saan ito ise-save, halimbawa D:MT-test.txt

Sinadya kong binago ang mga address sa mga halimbawa para sa malinaw na mga kadahilanan.

Na-miss ko ang punto tungkol sa pag-detect ng mga pag-atake at maanomalyang pag-uugali - nararapat ito sa isang hiwalay na artikulo. Ngunit ito ay nagkakahalaga na ituro na sa kategoryang ito maaari mong gamitin ang pagsubaybay sa mga halaga ng data mula sa Zabbix + naprosesong curl data mula sa elasticsearch.

Anong mga punto ang dapat mong bigyang pansin:

  1. Plano ng network. Mas mainam na isulat ito kaagad sa isang nababasang anyo. Excel ay sapat na. Sa kasamaang palad, madalas kong nakikita na ang mga network ay binuo ayon sa prinsipyong "May lumitaw na bagong sangay, narito ang /24 para sa iyo." Walang nakakaalam kung gaano karaming mga device ang inaasahan sa isang partikular na lokasyon o kung magkakaroon ng karagdagang paglago. Halimbawa, nagbukas ang isang maliit na tindahan kung saan sa una ay malinaw na ang device ay hindi hihigit sa 10, bakit maglalaan ng /24? Para sa malalaking sangay, sa kabaligtaran, inilalaan nila ang /24, at mayroong 500 na mga aparato - maaari ka lamang magdagdag ng isang network, ngunit nais mong pag-isipan ang lahat nang sabay-sabay.
  2. Mga panuntunan sa pag-filter. Kung ipinapalagay ng proyekto na magkakaroon ng paghihiwalay ng mga network at maximum na segmentation. Nagbabago ang Pinakamahuhusay na Kasanayan sa paglipas ng panahon. Noong nakaraan, ang isang PC network at isang printer network ay nahahati, ngunit ngayon ay medyo normal na hindi hatiin ang mga network na ito. Ito ay nagkakahalaga ng paggamit ng sentido komun at hindi paglikha ng maraming mga subnet kung saan hindi kinakailangan at hindi pagsasama-sama ang lahat ng mga aparato sa isang network.
  3. Mga setting ng "Golden" sa lahat ng router. Yung. kung nagpasya ka sa isang plano. Sulit na mahulaan kaagad ang lahat at subukang tiyakin na ang lahat ng mga setting ay magkapareho - tanging ang listahan ng address at mga IP address ay naiiba. Kung may mga problema, magiging mas kaunti ang oras ng pag-debug.
  4. Ang mga isyu sa organisasyon ay hindi gaanong mahalaga kaysa sa mga teknikal. Kadalasan ang mga tamad na empleyado ay isinasagawa ang mga rekomendasyong ito nang "manu-mano", nang hindi gumagamit ng mga handa na mga pagsasaayos at script, na sa huli ay humahantong sa mga problema nang wala saan.

Sa pamamagitan ng dynamic na pagruruta. OSPF na may zone division ang ginamit. Ngunit ito ay isang test bench; mas kawili-wiling i-set up ang mga ganoong bagay sa mga kondisyon ng labanan.

Sana walang magalit na hindi ko na-post ang mga configuration ng router. Sa palagay ko ay sapat na ang mga link, at pagkatapos ang lahat ay nakasalalay sa mga kinakailangan. At syempre tests, kailangan pa ng tests.

Nais kong maisakatuparan ng lahat ang kanilang mga proyekto sa bagong taon. Nawa'y mapasaiyo ang pag-access!!!

Pinagmulan: www.habr.com

Magdagdag ng komento