Dự án dang dở của tôi. Mạng 200 bộ định tuyến MikroTik

Dự án dang dở của tôi. Mạng 200 bộ định tuyến MikroTik

Chào mọi người. Bài viết này dành cho những người có nhiều thiết bị Mikrotik trong công viên và những người muốn thống nhất tối đa để không kết nối riêng lẻ với từng thiết bị. Trong bài viết này, tôi sẽ mô tả một dự án, thật không may, đã không đạt được điều kiện chiến đấu do yếu tố con người. Tóm lại: hơn 200 bộ định tuyến, thiết lập nhanh và đào tạo nhân viên, thống nhất theo khu vực, lọc mạng và máy chủ cụ thể, khả năng dễ dàng thêm quy tắc cho tất cả thiết bị, ghi nhật ký và kiểm soát truy cập.

Những gì được mô tả dưới đây không giả vờ là một trường hợp có sẵn, nhưng tôi hy vọng nó sẽ hữu ích cho bạn khi lập kế hoạch cho mạng của bạn và giảm thiểu lỗi. Có lẽ một số điểm và quyết định sẽ không hoàn toàn đúng với bạn - nếu vậy, hãy viết trong phần bình luận. Sự chỉ trích trong trường hợp này sẽ là một kinh nghiệm trong một con heo đất thông thường. Do đó, độc giả, hãy xem trong các bình luận, có lẽ tác giả đã mắc một sai lầm nghiêm trọng - cộng đồng sẽ giúp đỡ.

Số lượng bộ định tuyến là 200-300, nằm rải rác ở các thành phố khác nhau với chất lượng kết nối Internet khác nhau. Cần phải làm cho mọi thứ trở nên đẹp đẽ và giải thích cho quản trị viên địa phương theo cách dễ tiếp cận về cách mọi thứ sẽ hoạt động.

Vậy mọi dự án bắt đầu từ đâu? Tất nhiên, với TK.

  1. Tổ chức sơ đồ mạng cho tất cả các chi nhánh theo yêu cầu của khách hàng, phân vùng mạng (từ 3 đến 20 mạng tại các chi nhánh tùy theo số lượng thiết bị).
  2. Thiết lập các thiết bị trong mỗi chi nhánh. Kiểm tra băng thông thực của nhà cung cấp trong các điều kiện làm việc khác nhau.
  3. Tổ chức bảo vệ thiết bị, kiểm soát danh sách trắng, tự động phát hiện các cuộc tấn công bằng cách tự động đưa vào danh sách đen trong một khoảng thời gian nhất định, giảm thiểu việc sử dụng các phương tiện kỹ thuật khác nhau được sử dụng để chặn truy cập kiểm soát và từ chối dịch vụ.
  4. Tổ chức các kết nối vpn an toàn với bộ lọc mạng theo yêu cầu của khách hàng. Ít nhất 3 kết nối vpn từ mỗi chi nhánh đến trung tâm.
  5. Dựa trên điểm 1, 2. Chọn cách tốt nhất để xây dựng vpn chịu lỗi. Công nghệ định tuyến động, với sự biện minh chính xác, có thể được lựa chọn bởi nhà thầu.
  6. Tổ chức ưu tiên lưu lượng theo giao thức, cổng, máy chủ và các dịch vụ cụ thể khác mà khách hàng sử dụng. (VOIP, máy chủ với các dịch vụ quan trọng)
  7. Tổ chức giám sát và ghi nhật ký các sự kiện của bộ định tuyến để phản hồi cho nhân viên hỗ trợ kỹ thuật.

Như chúng tôi hiểu, trong một số trường hợp, TOR được tổng hợp từ các yêu cầu. Tôi đã tự xây dựng những yêu cầu này sau khi lắng nghe những vấn đề chính. Ông thừa nhận khả năng người khác có thể đảm nhận việc thực hiện những điểm này.

Những công cụ nào sẽ được sử dụng để đáp ứng các yêu cầu này:

  1. ELK stack (sau một thời gian, người ta hiểu rằng flud sẽ được sử dụng thay cho logstash).
  2. Ansible. Để dễ quản trị và chia sẻ quyền truy cập, chúng tôi sẽ sử dụng AWX.
  3. GITLAB. Không cần phải giải thích ở đây. Trường hợp không có kiểm soát phiên bản cấu hình của chúng tôi.
  4. PowerShell. Sẽ có một tập lệnh đơn giản để tạo cấu hình ban đầu.
  5. Doku wiki, để viết tài liệu và sách hướng dẫn. Trong trường hợp này, chúng tôi sử dụng habr.com.
  6. Giám sát sẽ được thực hiện thông qua zabbix. Cũng sẽ có một sơ đồ kết nối để hiểu chung.

Điểm thiết lập EFK

Về điểm đầu tiên, tôi sẽ chỉ mô tả hệ tư tưởng mà các chỉ số sẽ được xây dựng trên đó. Có nhiều
các bài viết xuất sắc về cách thiết lập và nhận nhật ký từ các thiết bị chạy mikrotik.

Tôi sẽ tập trung vào một số điểm:

1. Theo sơ đồ, đáng để xem xét việc nhận nhật ký từ những nơi khác nhau và trên các cổng khác nhau. Để làm điều này, chúng tôi sẽ sử dụng một trình tổng hợp nhật ký. Chúng tôi cũng muốn tạo đồ họa chung cho tất cả các bộ định tuyến với khả năng chia sẻ quyền truy cập. Sau đó, chúng tôi xây dựng các chỉ mục như sau:

đây là một phần của cấu hình vớifluidd tìm kiếm đàn hồi
logstash_format đúng
tên_chỉ mục mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10 giây
host nghiên cứu: 9200
cổng 9200

Do đó, chúng tôi có thể kết hợp các bộ định tuyến và phân đoạn theo kế hoạch - mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Tại sao làm cho nó quá khó khăn? Chúng tôi hiểu rằng chúng tôi sẽ có 200 thiết bị trở lên. Đừng chạy theo mọi thứ. Kể từ phiên bản 6.8 của elaticsearch, chúng tôi có sẵn các cài đặt bảo mật (không cần mua giấy phép), do đó, chúng tôi có thể phân phối quyền xem giữa các nhân viên hỗ trợ kỹ thuật hoặc quản trị viên hệ thống cục bộ.
Bảng, biểu đồ - ở đây bạn chỉ cần đồng ý - hoặc sử dụng những cái giống nhau, hoặc mọi người làm điều đó vì nó sẽ thuận tiện cho anh ta.

2. Bằng cách đăng nhập. Nếu chúng tôi kích hoạt đăng nhập trong các quy tắc tường lửa, thì chúng tôi sẽ đặt tên không có dấu cách. Có thể thấy với cách config đơn giản trong flux chúng ta có thể lọc dữ liệu và tạo panel tiện lợi. Hình bên dưới là router nhà mình.

Dự án dang dở của tôi. Mạng 200 bộ định tuyến MikroTik

3. Theo không gian chiếm dụng và các bản ghi. Trung bình, với 1000 tin nhắn mỗi giờ, nhật ký chiếm 2-3 MB mỗi ngày, bạn thấy đấy, không nhiều lắm. elaticsearch phiên bản 7.5.

ANSIBLE.AWX

May mắn thay cho chúng tôi, chúng tôi có một mô-đun làm sẵn cho bộ định tuyến
Tôi đã chỉ ra về AWX, nhưng các lệnh bên dưới chỉ nói về ansible ở dạng thuần túy nhất - tôi nghĩ đối với những người đã làm việc với ansible, sẽ không có vấn đề gì khi sử dụng awx thông qua gui.

Thành thật mà nói, trước đó tôi đã xem các hướng dẫn khác nơi họ sử dụng ssh và mọi người đều gặp các vấn đề khác nhau về thời gian phản hồi và một loạt các vấn đề khác. Tôi nhắc lại, nó không tham gia trận chiến , lấy thông tin này làm thử nghiệm không vượt quá giá đỡ 20 bộ định tuyến.

Chúng tôi cần sử dụng chứng chỉ hoặc tài khoản. Tùy bạn quyết định, tôi xin giấy chứng nhận. Một số điểm tinh tế về quyền. Tôi trao quyền viết - ít nhất là "thiết lập lại cấu hình" sẽ không hoạt động.

Sẽ không có vấn đề gì với việc tạo, sao chép chứng chỉ và nhập:

Liệt kê ngắn gọn các lệnhTrên máy tính của bạn
ssh-keygen -t RSA, trả lời câu hỏi, lưu khóa.
Sao chép vào mikrotik:
khóa ssh của người dùng nhập public-key-file=id_mtx.pub user=ansible
Trước tiên, bạn cần tạo một tài khoản và phân bổ quyền cho nó.
Kiểm tra kết nối với chứng chỉ
ssh -p 49475 -i/keys/mtx [email được bảo vệ]

Viết vi /etc/ansible/hosts
MT01 ansible_network_os=bộ định tuyến ansible_ssh_port=49475 ansible_ssh_user= ansible
MT02 ansible_network_os=bộ định tuyến ansible_ssh_port=49475 ansible_ssh_user= ansible
MT03 ansible_network_os=bộ định tuyến ansible_ssh_port=49475 ansible_ssh_user= ansible
MT04 ansible_network_os=bộ định tuyến ansible_ssh_port=49475 ansible_ssh_user= ansible

Vâng, một ví dụ về một playbook: tên: add_work_sites
máy chủ: testmt
nối tiếp: 1
kết nối: network_cli
remote_user: mikrotik.west
thu thập_sự thật: có
nhiệm vụ:
tên: thêm Work_sites
bộ định tuyến_lệnh:
lệnh:
- /danh sách địa chỉ tường lửa ip add address=gov.ru list=work_sites comment=Ticket665436_Ochen_nado
- /danh sách địa chỉ tường lửa ip add address=habr.com list=work_sites comment=for_habr

Như bạn có thể thấy từ cấu hình ở trên, việc biên soạn sách hướng dẫn của riêng bạn là một vấn đề đơn giản. Chỉ cần thành thạo cli mikrotik là đủ. Hãy tưởng tượng một tình huống mà bạn cần xóa danh sách địa chỉ với một số dữ liệu nhất định trên tất cả các bộ định tuyến, sau đó:

Tìm và loại bỏ/ip fireal address-list remove [tìm vị trí list="gov.ru"]

Tôi cố tình không bao gồm toàn bộ danh sách tường lửa ở đây. nó sẽ là cá nhân cho từng dự án. Nhưng tôi có thể nói chắc chắn một điều, chỉ sử dụng danh sách địa chỉ.

Theo GITLAB, mọi thứ đều rõ ràng. Tôi sẽ không dừng lại ở thời điểm này. Mọi thứ đều đẹp về các tác vụ, mẫu, trình xử lý riêng lẻ.

Powershell

Sẽ có 3 tệp. Tại sao vỏ điện? Công cụ để tạo cấu hình có thể được chọn bởi bất kỳ ai cảm thấy thoải mái hơn. Trong trường hợp này, mọi người đều có windows trên PC của họ, vậy tại sao lại làm trên bash khi powershell thuận tiện hơn. Ai thoải mái hơn.

Bản thân kịch bản (đơn giản và dễ hiểu):[cmdletBinding()] Tham số(
[Tham số(Bắt buộc=$true)] [chuỗi]$EXTERNALIPADDRESS,
[Tham số(Bắt buộc=$true)] [chuỗi]$EXTERNALIPROUTE,
[Tham số(Bắt buộc=$true)] [chuỗi]$BWorknets,
[Tham số(Bắt buộc=$true)] [chuỗi]$CWorknets,
[Tham số(Bắt buộc=$true)] [chuỗi]$BVoipNets,
[Tham số(Bắt buộc=$true)] [chuỗi]$CVoipNets,
[Tham số(Bắt buộc=$true)] [chuỗi]$CClientss,
[Tham số(Bắt buộc=$true)] [chuỗi]$BVPNWORKs,
[Tham số(Bắt buộc=$true)] [chuỗi]$CVPNWORKs,
[Tham số(Bắt buộc=$true)] [chuỗi]$BVPNCLIENTSs,
[Tham số(Bắt buộc=$true)] [chuỗi]$cVPNCLIENTSs,
[Tham số(Bắt buộc=$true)] [chuỗi]$NAMEROUTER,
[Tham số(Bắt buộc=$true)] [chuỗi]$ServerCertificates,
[Tham số(Bắt buộc=$true)] [chuỗi]$infile,
[Tham số(Bắt buộc=$true)] [chuỗi]$outfile
)

Lấy nội dung $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", $NAMERROUTER)} |
Foreach-Object {$_.Replace("ServerCertificate", $ServerCertificates)} | Đặt nội dung $outfile

Tôi xin lỗi, tôi không thể đặt ra tất cả các quy tắc. nó sẽ không được đẹp. Bạn có thể tự tạo ra các quy tắc, được hướng dẫn bởi các phương pháp hay nhất.

Ví dụ: đây là danh sách các liên kết mà tôi đã được hướng dẫn:wiki.mikrotik.com/wiki/Manual:Đang bảo mật_Bộ định tuyến của bạn
wiki.mikrotik.com/wiki/Manual:IP/Tường lửa/Bộ lọc
wiki.mikrotik.com/wiki/Manual:OSPF-ví dụ
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Hộp tiền
wiki.mikrotik.com/wiki/Manual:Đang nâng cấp_RouterOS
wiki.mikrotik.com/wiki/Manual:IP/Fasttrack - ở đây bạn cần biết rằng khi bật fasttrack, các quy tắc định hình và ưu tiên lưu lượng truy cập sẽ không hoạt động - hữu ích cho các thiết bị yếu.

Quy ước biến:Các mạng sau đây được lấy làm ví dụ:
Mạng làm việc 192.168.0.0/24
Mạng VOIP 172.22.4.0/24
Mạng 10.0.0.0/24 cho máy khách không có quyền truy cập mạng LAN
192.168.255.0/24 Mạng VPN cho các chi nhánh lớn
172.19.255.0/24 Mạng VPN cho quy mô nhỏ

Địa chỉ mạng bao gồm 4 số thập phân lần lượt là ABCD, việc thay thế hoạt động theo nguyên tắc tương tự, nếu nó hỏi B khi khởi động, thì bạn cần nhập số 192.168.0.0 cho mạng 24/0 và cho C = 0 .
$EXTERNALIPADDRESS - địa chỉ được phân bổ từ nhà cung cấp.
$EXTERNALIPROUTE - tuyến đường mặc định tới mạng 0.0.0.0/0
$BWorknets - Mạng làm việc, trong ví dụ của chúng tôi sẽ có 168
$CWorknets - Mạng công việc, trong ví dụ của chúng tôi, nó sẽ là 0
$BVoipNets - Mạng VOIP trong ví dụ của chúng tôi ở đây 22
$CVoipNets - Mạng VOIP trong ví dụ của chúng tôi ở đây 4
$CClientss - Mạng dành cho khách hàng - chỉ truy cập Internet, trong trường hợp của chúng tôi ở đây 0
$BVPNWORKs - Mạng VPN cho các chi nhánh lớn, trong ví dụ 20 của chúng tôi
$CVPNWORKs - Mạng VPN cho các chi nhánh lớn, trong ví dụ 255 của chúng tôi
$BVPNCLIENTS - Mạng VPN cho các chi nhánh nhỏ, nghĩa là 19
$CVPNCLIENTS - Mạng VPN cho các chi nhánh nhỏ, nghĩa là 255
$NAMEROUTER - tên bộ định tuyến
$ServerCertificate - tên của chứng chỉ mà bạn đang nhập đầu tiên
$infile - Chỉ định đường dẫn đến tệp mà chúng tôi sẽ đọc cấu hình, ví dụ: D:config.txt (đường dẫn tiếng Anh tốt hơn không có dấu ngoặc kép và dấu cách)
$outfile - chỉ định đường dẫn nơi lưu, ví dụ D:MT-test.txt

Tôi đã cố tình thay đổi địa chỉ trong các ví dụ vì những lý do rõ ràng.

Tôi đã bỏ lỡ điểm phát hiện các cuộc tấn công và hành vi bất thường - điều này xứng đáng có một bài viết riêng. Nhưng điều đáng nói là trong danh mục này, bạn có thể sử dụng các giá trị dữ liệu giám sát từ Zabbix + xử lý dữ liệu curl từ elaticsearch.

Những điểm cần tập trung vào:

  1. Kế hoạch mạng. Tốt hơn là viết nó ở dạng có thể đọc được. Excel là đủ. Thật không may, tôi thường thấy rằng các mạng được biên dịch theo nguyên tắc "Một nhánh mới đã xuất hiện, đây là /24 cho bạn." Không ai biết có bao nhiêu thiết bị được mong đợi ở một vị trí nhất định và liệu có tăng trưởng hơn nữa hay không. Ví dụ: một cửa hàng nhỏ đã mở, trong đó ban đầu rõ ràng là thiết bị sẽ không quá 10, tại sao lại phân bổ / 24? Ngược lại, đối với các chi nhánh lớn, họ phân bổ / 24 và có 500 thiết bị - bạn chỉ có thể thêm một mạng, nhưng bạn muốn suy nghĩ mọi thứ ngay lập tức.
  2. Lọc những nội quy. Nếu dự án giả định rằng sẽ có sự tách biệt của các mạng và phân đoạn tối đa. Thực tiễn tốt nhất thay đổi theo thời gian. Trước đây, họ đã chia sẻ mạng PC và mạng máy in, bây giờ việc không chia sẻ các mạng này là điều khá bình thường. Điều đáng làm là sử dụng lẽ thường và không tạo ra nhiều mạng con khi không cần thiết và không kết hợp tất cả các thiết bị vào một mạng.
  3. Cài đặt "Vàng" trên tất cả các bộ định tuyến. Những thứ kia. nếu bạn có một kế hoạch. Bạn nên thấy trước mọi thứ cùng một lúc và cố gắng đảm bảo rằng tất cả các cài đặt đều giống hệt nhau - chỉ có danh sách địa chỉ và địa chỉ IP khác nhau. Trong trường hợp có sự cố, thời gian gỡ lỗi sẽ ít hơn.
  4. Các khía cạnh tổ chức không kém phần quan trọng so với các khía cạnh kỹ thuật. Thông thường, những nhân viên lười biếng làm theo các khuyến nghị này một cách “thủ công”, không sử dụng các cấu hình và tập lệnh được tạo sẵn, điều này cuối cùng dẫn đến các vấn đề từ đầu.

Bằng định tuyến động. OSPF với phân vùng đã được sử dụng. Nhưng đây là một băng ghế thử nghiệm, trong điều kiện chiến đấu, những thứ như vậy sẽ thú vị hơn để thiết lập.

Tôi hy vọng không ai khó chịu vì tôi đã không đăng cấu hình của các bộ định tuyến. Tôi nghĩ rằng các liên kết sẽ là đủ, và sau đó tất cả phụ thuộc vào yêu cầu. Và tất nhiên các bài kiểm tra, nhiều bài kiểm tra hơn là cần thiết.

Chúc mọi người thực hiện được những dự án của mình trong năm mới. Có thể quyền truy cập được cấp với bạn!!!

Nguồn: www.habr.com

Thêm một lời nhận xét