โครงการที่ยังไม่เสร็จของฉัน เครือข่ายเราเตอร์ MikroTik 200 เครื่อง

โครงการที่ยังไม่เสร็จของฉัน เครือข่ายเราเตอร์ MikroTik 200 เครื่อง

สวัสดีทุกคน. บทความนี้มีไว้สำหรับผู้ที่มีอุปกรณ์ Mikrotik จำนวนมากในสวนสาธารณะ และผู้ที่ต้องการสร้างการรวมสูงสุดเพื่อไม่ให้เชื่อมต่อกับอุปกรณ์แต่ละเครื่องแยกจากกัน ในบทความนี้ ฉันจะอธิบายโครงการที่โชคไม่ดีที่ไม่ถึงเงื่อนไขการต่อสู้เนื่องจากปัจจัยมนุษย์ สรุป: เราเตอร์มากกว่า 200 ตัว การตั้งค่าอย่างรวดเร็วและการฝึกอบรมพนักงาน การรวมเป็นหนึ่งตามภูมิภาค การกรองเครือข่ายและโฮสต์เฉพาะ ความสามารถในการเพิ่มกฎให้กับอุปกรณ์ทั้งหมด การบันทึกและการควบคุมการเข้าถึงได้อย่างง่ายดาย

สิ่งที่อธิบายด้านล่างนี้ไม่ได้หลอกว่าเป็นกรณีสำเร็จรูป แต่ฉันหวังว่ามันจะเป็นประโยชน์กับคุณเมื่อวางแผนเครือข่ายและลดข้อผิดพลาดให้เหลือน้อยที่สุด บางทีประเด็นและการตัดสินใจบางอย่างอาจดูไม่ถูกต้องสำหรับคุณ - ถ้าเป็นเช่นนั้น เขียนความคิดเห็น การวิจารณ์ในกรณีนี้จะเป็นประสบการณ์ในกระปุกออมสินทั่วไป ดังนั้นผู้อ่านดูความคิดเห็นบางทีผู้เขียนอาจทำผิดพลาดอย่างร้ายแรง - ชุมชนจะช่วย

จำนวนเราเตอร์คือ 200-300 กระจายอยู่ในเมืองต่างๆ ด้วยคุณภาพการเชื่อมต่ออินเทอร์เน็ตที่แตกต่างกัน จำเป็นต้องทำให้ทุกอย่างสวยงามและอธิบายให้ผู้ดูแลระบบในพื้นที่เข้าใจถึงวิธีการทำงานทุกอย่าง

แล้วทุกโครงการเริ่มต้นที่ไหน? แน่นอนด้วย TK.

  1. การจัดแผนเครือข่ายสำหรับทุกสาขาตามความต้องการของลูกค้า การแบ่งส่วนเครือข่าย (ตั้งแต่ 3 ถึง 20 เครือข่ายในสาขา ขึ้นอยู่กับจำนวนอุปกรณ์)
  2. ตั้งค่าอุปกรณ์ในแต่ละสาขา การตรวจสอบแบนด์วิธที่แท้จริงของผู้ให้บริการในสภาพการทำงานที่แตกต่างกัน
  3. การจัดระเบียบการป้องกันอุปกรณ์ การควบคุมรายการที่อนุญาตพิเศษ การตรวจจับการโจมตีอัตโนมัติด้วยบัญชีดำอัตโนมัติในช่วงระยะเวลาหนึ่ง การลดการใช้วิธีการทางเทคนิคต่างๆ ที่ใช้ในการสกัดกั้นการเข้าถึงการควบคุมและการปฏิเสธบริการ
  4. จัดระเบียบการเชื่อมต่อ VPN ที่ปลอดภัยด้วยการกรองเครือข่ายตามความต้องการของลูกค้า อย่างน้อย 3 การเชื่อมต่อ VPN จากแต่ละสาขาไปยังศูนย์กลาง
  5. ตามข้อ 1, 2 เลือกวิธีที่ดีที่สุดในการสร้าง VPN ที่ทนทานต่อความผิดพลาด ผู้รับเหมาสามารถเลือกเทคโนโลยีการกำหนดเส้นทางแบบไดนามิกพร้อมเหตุผลที่ถูกต้องได้
  6. การจัดลำดับความสำคัญของการรับส่งข้อมูลตามโปรโตคอล พอร์ต โฮสต์ และบริการเฉพาะอื่นๆ ที่ลูกค้าใช้ (VOIP โฮสต์พร้อมบริการที่สำคัญ)
  7. องค์กรของการตรวจสอบและการบันทึกกิจกรรมของเราเตอร์สำหรับการตอบสนองของเจ้าหน้าที่สนับสนุนด้านเทคนิค

ตามที่เราเข้าใจ TOR บางกรณีก็รวบรวมมาจากข้อกำหนด ฉันกำหนดข้อกำหนดเหล่านี้ด้วยตัวเองหลังจากรับฟังปัญหาหลัก เขายอมรับความเป็นไปได้ที่จะมีคนอื่นดำเนินการตามประเด็นเหล่านี้

เครื่องมือใดที่จะใช้ในการปฏิบัติตามข้อกำหนดเหล่านี้:

  1. กอง ELK (หลังจากนั้นไม่นานก็เข้าใจว่าจะใช้ Fluffid แทน Logstash)
  2. คำตอบ เพื่อความสะดวกในการจัดการและการแบ่งปันการเข้าถึง เราจะใช้ AWX
  3. GITLAB ไม่จำเป็นต้องอธิบายที่นี่ หากไม่มีการควบคุมเวอร์ชันของการกำหนดค่าของเรา
  4. พาวเวอร์เชลล์ จะมีสคริปต์อย่างง่ายสำหรับการกำหนดค่าเริ่มต้น
  5. Doku wiki สำหรับเขียนเอกสารและคู่มือ ในกรณีนี้ เราใช้ habr.com
  6. การตรวจสอบจะทำผ่าน zabbix นอกจากนี้ยังจะมีแผนภาพการเชื่อมต่อเพื่อความเข้าใจทั่วไป

จุดตั้งค่า EFK

ในประเด็นแรก ฉันจะอธิบายเฉพาะอุดมการณ์ที่จะสร้างดัชนี มีมากมาย
บทความดีๆ เกี่ยวกับการตั้งค่าและรับบันทึกจากอุปกรณ์ที่ใช้ mikrotik

ฉันจะอยู่ในบางจุด:

1. ตามรูปแบบ การพิจารณารับบันทึกจากสถานที่ต่างๆ และบนพอร์ตต่างๆ นั้นคุ้มค่า ในการทำเช่นนี้ เราจะใช้ตัวรวบรวมบันทึก เราต้องการสร้างกราฟิกสากลสำหรับเราเตอร์ทั้งหมดที่มีความสามารถในการแบ่งปันการเข้าถึง จากนั้นเราสร้างดัชนีดังนี้:

นี่คือส่วนกำหนดค่าที่มีความคล่องแคล่ว การค้นหาแบบยืดหยุ่น
logstash_format จริง
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10 วินาที
เจ้าภาพ ElasticSearch: 9200
พอร์ต 9200

ดังนั้นเราจึงสามารถรวมเราเตอร์และแบ่งส่วนตามแผน - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east ทำไมทำให้มันยาก? เราเข้าใจว่าเราจะมี 200 เครื่องขึ้นไป อย่าทำตามทุกอย่าง ตั้งแต่ elasticsearch เวอร์ชัน 6.8 การตั้งค่าความปลอดภัยมีให้ใช้งาน (โดยไม่ต้องซื้อใบอนุญาต) ดังนั้นเราจึงสามารถกระจายสิทธิ์การรับชมระหว่างพนักงานฝ่ายสนับสนุนด้านเทคนิคหรือผู้ดูแลระบบในพื้นที่
ตาราง กราฟ - ที่นี่คุณเพียงแค่ต้องตกลง - ใช้อันเดียวกันหรือทุกคนทำตามที่มันสะดวกสำหรับเขา

2. โดยเข้าสู่ระบบ หากเราเปิดใช้งานการเข้าสู่ระบบในกฎไฟร์วอลล์ เราจะสร้างชื่อโดยไม่มีช่องว่าง จะเห็นได้ว่าการใช้ config แบบง่าย ๆ ใน flured เราสามารถกรองข้อมูลและสร้างพาเนลที่สะดวกได้ ภาพด้านล่างคือเราเตอร์ที่บ้านของฉัน

โครงการที่ยังไม่เสร็จของฉัน เครือข่ายเราเตอร์ MikroTik 200 เครื่อง

3. ตามพื้นที่ว่างและบันทึก โดยเฉลี่ยแล้ว 1000 ข้อความต่อชั่วโมง บันทึกจะใช้พื้นที่ 2-3 MB ต่อวัน ซึ่งคุณเห็นว่าไม่มากนัก elasticsearch เวอร์ชั่น 7.5.

ANSIBLE.AWX

โชคดีสำหรับเรา เรามีโมดูลสำเร็จรูปสำหรับเราเตอร์
ฉันชี้ให้เห็นเกี่ยวกับ AWX แต่คำสั่งด้านล่างเป็นเพียงเกี่ยวกับ ansible ในรูปแบบที่บริสุทธิ์ที่สุด - ฉันคิดว่าสำหรับผู้ที่ทำงานกับ ansible จะไม่มีปัญหาในการใช้ awx ผ่าน gui

พูดตามตรง ก่อนหน้านั้นฉันเคยดูคำแนะนำอื่นๆ ที่พวกเขาใช้ 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=เราเตอร์ ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=เราเตอร์ ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=เราเตอร์ ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=เราเตอร์ ansible_ssh_port=49475 ansible_ssh_user= ansible

ตัวอย่างของ playbook: ชื่อ: add_work_sites
โฮสต์:testmt
อนุกรม: 1
การเชื่อมต่อ:network_cli
remote_user: mikrotik.west
Gather_facts: ใช่
งาน:
ชื่อ: เพิ่ม Work_sites
คำสั่ง routeros_:
คำสั่ง:
- / รายการที่อยู่ไฟร์วอลล์ ip เพิ่ม address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /รายการที่อยู่ไฟร์วอลล์ ip เพิ่ม address=habr.com list=work_sites comment=for_habr

ดังที่คุณเห็นจากการกำหนดค่าด้านบน การรวบรวม playbooks ของคุณเองนั้นเป็นเรื่องง่าย เพียงพอที่จะเชี่ยวชาญ cli mikrotik ได้ดีพอ ลองนึกภาพสถานการณ์ที่คุณต้องการลบรายการที่อยู่ที่มีข้อมูลบางอย่างในเราเตอร์ทั้งหมด จากนั้น:

ค้นหาและนำออก/ip รายการที่อยู่ไฟร์วอลล์ลบ [ค้นหาที่ list="gov.ru"]

ฉันจงใจไม่รวมรายการไฟร์วอลล์ทั้งหมดไว้ที่นี่ จะเป็นรายบุคคลสำหรับแต่ละโครงการ แต่ฉันสามารถพูดได้อย่างหนึ่งว่าใช้เฉพาะรายการที่อยู่เท่านั้น

ตาม GITLAB ทุกอย่างชัดเจน ฉันจะไม่อยู่กับช่วงเวลานี้ ทุกอย่างสวยงามในแง่ของงานแต่ละอย่าง เทมเพลต ตัวจัดการ

PowerShell

จะมี 3 ไฟล์ ทำไมต้องพาวเวอร์เชลล์? เครื่องมือสำหรับสร้างการกำหนดค่าสามารถเลือกได้โดยใครก็ตามที่สะดวกกว่า ในกรณีนี้ ทุกคนมี Windows บนพีซี เหตุใดจึงต้องใช้ Bash ในเมื่อ PowerShell สะดวกกว่า ใครสบายกว่ากัน.

สคริปต์เอง (ง่ายและเข้าใจได้):[cmdletBinding()] พารามิเตอร์(
[พารามิเตอร์(บังคับ=$true)] [string]$EXTERNALIPADDRESS,
[พารามิเตอร์(บังคับ=$true)] [string]$EXTERNALIPROUTE,
[พารามิเตอร์(บังคับ=$true)] [สตริง]$BWorknets
[พารามิเตอร์(บังคับ=$true)] [สตริง]$CWorknets
[พารามิเตอร์(จำเป็น=$true)] [สตริง]$BVoipNets
[พารามิเตอร์(บังคับ=$true)] [สตริง]$CVoipNets
[พารามิเตอร์(บังคับ=$true)] [สตริง]$CClientss
[Parameter(Mandatory=$true)] [string]$BVPNWORKs,
[Parameter(Mandatory=$true)] [string]$CVPNWORKs,
[Parameter(Mandatory=$true)] [string]$BVPNCLIENTSs,
[พารามิเตอร์(บังคับ=$true)] [string]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)] [string]$NAMEROUTER,
[Parameter(Mandatory=$true)] [string]$ServerCertificates,
[พารามิเตอร์(บังคับ=$true)] [สตริง]$infile,
[Parameter(Mandatory=$true)] [string]$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", $CClients)} |
Foreach-Object {$_.Replace("BVPNWORK", $BVPNWORKs)} |
Foreach-Object {$_.Replace("CVPNWORK", $CVPNWORKs)} |
Foreach-Object {$_.Replace("BVPNCLIENTS", $BVPNCLIENTSs)} |
Foreach-Object {$_.Replace("CVPNCLIENTS", $cVPNCLIENTS)} |
Foreach-Object {$_.Replace("MYNAMERROUTER", $NAMEROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | ชุดเนื้อหา $outfile

ฉันขอโทษ ฉันไม่สามารถวางกฎเกณฑ์ทั้งหมดได้ มันจะไม่สวย คุณสามารถสร้างกฎได้เองตามแนวทางปฏิบัติที่ดีที่สุด

ตัวอย่างเช่น นี่คือรายการลิงก์ที่ฉันได้รับคำแนะนำจาก:wiki.mikrotik.com/wiki/คู่มือ:Securing_Your_Router
wiki.mikrotik.com/wiki/คู่มือ:IP/ไฟร์วอลล์/ตัวกรอง
wiki.mikrotik.com/wiki/คู่มือ:OSPF-ตัวอย่าง
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/คู่มือ:วินบ็อกซ์
wiki.mikrotik.com/wiki/คู่มือ:การอัพเกรด_RouterOS
wiki.mikrotik.com/wiki/คู่มือ:IP/Fasttrack - คุณจำเป็นต้องทราบว่าเมื่อเปิดใช้งาน Fasttrack การจัดลำดับความสำคัญของทราฟฟิกและกฎการกำหนดรูปร่างจะไม่ทำงาน - มีประโยชน์สำหรับอุปกรณ์ที่อ่อนแอ

อนุสัญญาตัวแปร:เครือข่ายต่อไปนี้นำมาเป็นตัวอย่าง:
192.168.0.0/24 ข่ายงาน
172.22.4.0/24 เครือข่าย VOIP
เครือข่าย 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 - Work network ในตัวอย่างของเรา ค่าจะเป็น 0
$BVoipNets - เครือข่าย VOIP ในตัวอย่างของเราที่นี่ 22
$CVoipNets - เครือข่าย VOIP ในตัวอย่างของเราที่นี่ 4
$CClientss - เครือข่ายสำหรับลูกค้า - เข้าถึงอินเทอร์เน็ตเท่านั้น ในกรณีของเราที่นี่ 0
$BVPNWORKs - เครือข่าย VPN สำหรับสาขาขนาดใหญ่ ในตัวอย่างที่ 20 ของเรา
$CVPNWORKs - เครือข่าย VPN สำหรับสาขาขนาดใหญ่ ในตัวอย่างของเรา 255
$BVPNCLIENTS - เครือข่าย VPN สำหรับสาขาขนาดเล็ก หมายถึง 19
$CVPNCLIENTS - เครือข่าย VPN สำหรับสาขาขนาดเล็ก หมายถึง 255
$NAMEROUTER - ชื่อเราเตอร์
$ServerCertificate - ชื่อของใบรับรองที่คุณกำลังนำเข้าก่อน
$infile - ระบุเส้นทางไปยังไฟล์ที่เราจะอ่านการกำหนดค่า ตัวอย่างเช่น D:config.txt (เส้นทางภาษาอังกฤษที่ดีกว่าโดยไม่มีเครื่องหมายอัญประกาศและช่องว่าง)
$outfile - ระบุเส้นทางที่จะบันทึก เช่น D:MT-test.txt

ฉันจงใจเปลี่ยนที่อยู่ในตัวอย่างด้วยเหตุผลที่ชัดเจน

ฉันพลาดประเด็นในการตรวจจับการโจมตีและพฤติกรรมที่ผิดปกติ - นี่สมควรได้รับบทความแยกต่างหาก แต่ควรสังเกตว่าในหมวดหมู่นี้คุณสามารถใช้ค่าข้อมูลการตรวจสอบจาก Zabbix + คำนวณข้อมูล curl จาก elasticsearch

จุดที่ต้องเน้น:

  1. แผนเครือข่าย มันจะดีกว่าที่จะเขียนในรูปแบบที่อ่านได้ เอ็กเซลก็พอได้ น่าเสียดายที่ฉันมักจะเห็นว่าเครือข่ายถูกรวบรวมตามหลักการ "มีสาขาใหม่ปรากฏขึ้นนี่คือ /24 สำหรับคุณ" ไม่มีใครทราบได้ว่าสถานที่หนึ่ง ๆ คาดว่าจะมีอุปกรณ์กี่เครื่องและจะมีการเติบโตต่อไปหรือไม่ ตัวอย่างเช่นมีร้านค้าเล็ก ๆ เปิดขึ้นซึ่งในตอนแรกเป็นที่ชัดเจนว่าอุปกรณ์จะไม่เกิน 10 ทำไมต้องจัดสรร / 24 ในทางกลับกันสำหรับสาขาขนาดใหญ่พวกเขาจัดสรร / 24 และมีอุปกรณ์ 500 เครื่อง - คุณสามารถเพิ่มเครือข่ายได้ แต่คุณต้องการคิดทุกอย่างทันที
  2. กฎการกรอง หากโครงการสันนิษฐานว่าจะมีการแยกเครือข่ายและการแบ่งส่วนสูงสุด แนวทางปฏิบัติที่ดีที่สุดเปลี่ยนแปลงตลอดเวลา ก่อนหน้านี้พวกเขาแชร์เครือข่ายพีซีและเครือข่ายเครื่องพิมพ์ ตอนนี้เป็นเรื่องปกติที่จะไม่แชร์เครือข่ายเหล่านี้ การใช้สามัญสำนึกนั้นคุ้มค่าและไม่สร้างเครือข่ายย่อยจำนวนมากที่ไม่จำเป็นและไม่รวมอุปกรณ์ทั้งหมดไว้ในเครือข่ายเดียว
  3. การตั้งค่า "Golden" บนเราเตอร์ทั้งหมด เหล่านั้น. ถ้าคุณมีแผน ควรคาดการณ์ทุกอย่างทันทีและพยายามตรวจสอบให้แน่ใจว่าการตั้งค่าทั้งหมดเหมือนกัน - มีเพียงรายการที่อยู่และที่อยู่ IP ที่แตกต่างกันเท่านั้น ในกรณีที่เกิดปัญหา เวลาในการดีบักจะน้อยลง
  4. ด้านองค์กรมีความสำคัญไม่น้อยไปกว่าด้านเทคนิค บ่อยครั้งที่พนักงานขี้เกียจทำตามคำแนะนำเหล่านี้ "ด้วยตนเอง" โดยไม่ใช้การกำหนดค่าและสคริปต์สำเร็จรูป ซึ่งท้ายที่สุดจะนำไปสู่ปัญหาตั้งแต่เริ่มต้น

โดยการกำหนดเส้นทางแบบไดนามิก OSPF ที่มีการแบ่งเขตถูกนำมาใช้ แต่นี่คือแท่นทดสอบ ในสภาพการต่อสู้ สิ่งเหล่านี้น่าสนใจกว่าในการตั้งค่า

ฉันหวังว่าจะไม่มีใครอารมณ์เสียที่ฉันไม่ได้โพสต์การกำหนดค่าของเราเตอร์ ฉันคิดว่าลิงก์จะเพียงพอแล้ว ทั้งหมดขึ้นอยู่กับข้อกำหนด และแน่นอนว่าต้องมีการทดสอบเพิ่มเติม

ฉันขอให้ทุกคนตระหนักถึงโครงการของพวกเขาในปีใหม่ ขอให้สิทธิ์เข้าถึงอยู่กับคุณ!!!

ที่มา: will.com

เพิ่มความคิดเห็น