
Hallo zusammen. Dieser Artikel richtet sich an alle, die viele MikroTik-GerĂ€te in ihrem Netzwerk haben und eine maximale Vereinheitlichung wĂŒnschen, um nicht jedes GerĂ€t einzeln anschlieĂen zu mĂŒssen. In diesem Artikel beschreibe ich ein Projekt, das leider aus menschlichen Faktoren nicht in den Einsatz gelangte. Kurz gesagt: ĂŒber 200 Router, schnelle Konfiguration und Schulung des Personals, Vereinheitlichung nach Regionen, Netzwerkinfilterung und gezielte Hosts, die Möglichkeit, Regeln einfach fĂŒr alle GerĂ€te hinzuzufĂŒgen, Protokollierung und Zugriffskontrolle.
Was im Folgenden beschrieben wird, ist kein fertig ausgearbeitetes Fallbeispiel, aber ich hoffe, es wird Ihnen bei der Planung Ihrer Netzwerke und der Minimierung von Fehlern nĂŒtzlich sein. Möglicherweise erscheinen Ihnen einige Punkte und Lösungen nicht ganz richtig â falls ja, schreiben Sie bitte einen Kommentar. Kritik wird in diesem Fall als wertvolle Erfahrung angesehen. Daher, liebe Leser, schauen Sie in die Kommentare, vielleicht hat der Autor einen groben Fehler gemacht â die Gemeinschaft hilft.
Anzahl der Router 200-300, verteilt auf verschiedene StÀdte mit unterschiedlicher Internetverbindung. Es ist wichtig, alles ansprechend zu gestalten und den lokalen Administratoren zu erklÀren, wie alles funktionieren wird.
Also, womit beginnt jedes Projekt? NatĂŒrlich mit Anforderungen.
- Der Organisation des Netzwerkplans fĂŒr alle Filialen gemÀà den Anforderungen des Kunden, Segmentierung der Netzwerke (von 3 bis 20 Netzen in den Filialen, abhĂ€ngig von der Anzahl der GerĂ€te).
- Die Konfiguration der GerĂ€te in jeder Filiale. ĂberprĂŒfung der tatsĂ€chlichen Bandbreite des Anbieters unter verschiedenen Arbeitsbedingungen.
- Die Organisation des GerĂ€teschutzes, Verwaltung nach Whitelist, automatisierte Erkennung von Angriffen mit automatischer Eintragung in die Blacklist fĂŒr einen bestimmten Zeitraum, Minimierung des Einsatzes verschiedener technischer Mittel zur Abfangung des Zugriffs und zur Vermeidung von AusfĂ€llen.
- Die Einrichtung sicherer VPN-Verbindungen mit einer Filterung nach Netzwerken gemÀà den Anforderungen des Kunden. Mindestens 3 VPN-Verbindungen von jeder Filiale zum Zentrum.
- Basierend auf Punkt 1, 2. WĂ€hlen Sie die optimalen AnsĂ€tze fĂŒr den Aufbau robuster VPNs. Die Technologie der dynamischen Routenwahl kann vom Auftragnehmer bei entsprechender BegrĂŒndung ausgewĂ€hlt werden.
- Organisation der Priorisierung des Datenverkehrs nach Protokollen, Ports, Hosts und anderen spezifischen Diensten, die der Kunde nutzt. (VOIP, Hosts mit wichtigen Diensten)
- Organisation der Ăberwachung und Protokollierung von Routerereignissen zur Reaktion des technischen Supports.
Wie wir verstehen, wird in einigen FÀllen das Pflichtenheft aus den Anforderungen erstellt. Diese Anforderungen habe ich selbst formuliert, indem ich die Hauptprobleme angehört habe. Dabei habe ich auch in Betracht gezogen, dass jemand anderes diese Punkte umsetzen könnte.
Welche Tools werden zur ErfĂŒllung dieser Anforderungen verwendet:
- ELK-Stack (nach einiger Zeit kam die Einsicht, dass anstelle von Logstash fluentd verwendet werden wird).
- Ansible. FĂŒr eine einfache Verwaltung und Zugriffstrennung werden wir AWX verwenden.
- GITLAB. Hier muss nichts erklÀrt werden. Wo wÀre unser Versionskontrollsystem ohne die Kontrolle unserer Konfigurationen?
- PowerShell. Es wird ein einfaches Skript zur initialen Generierung der Konfiguration geben.
- Dokuwiki fĂŒr die Erstellung von Dokumentationen und Anleitungen. In diesem Fall nutzen wir habr.com.
- Die Ăberwachung erfolgt ĂŒber Zabbix. Dort wird auch ein Schema der Verbindungen zur allgemeinen VerstĂ€ndnis dargestellt.
Einrichtungen von EFK
Zum ersten Punkt werde ich nur die Ideologie beschreiben, nach der die Indizes aufgebaut werden. Es gibt viele
erstklassige Artikel zur Konfiguration und zum Empfang von Logs von GerÀten, die mit MikroTik betrieben werden.
Ich werde auf einige Aspekte eingehen:
1. GemÀà dem Schema sollten wir den Empfang von Logs aus verschiedenen Quellen und ĂŒber verschiedene Ports durchdenken. Zu diesem Zweck werden wir einen Log-Aggregator verwenden. AuĂerdem möchten wir universelle Grafiken fĂŒr alle Router schaffen, mit der Möglichkeit zur Zugangstrennung. Daher bauen wir die Indizes wie folgt auf:
Hier ist ein Teil der Konfiguration mit Fluentd type elasticsearch
logstash_format true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10s
hosts :9200
port 9200
So können wir Router miteinander verbinden und gemÀà dem Plan segmentieren: mikrotiklogs.west, mikrotiklogs.south, mikrotiklogs.east. Warum das Ganze so kompliziert machen? Wir wissen, dass wir ĂŒber 200 GerĂ€te haben werden. Das lĂ€sst sich nicht alles im Auge behalten. Mit der Version 6.8 von Elasticsearch stehen uns Sicherheitsanpassungen zur VerfĂŒgung (ohne Lizenzkauf), sodass wir die Zugriffsrechte fĂŒr die Sichtbarkeit zwischen den Technikmitarbeitern oder lokalen Systemadministratoren verteilen können.
Tabellen, Grafiken â hier muss man einfach einen Konsens finden â entweder wir verwenden ein einheitliches Format, oder jeder macht es so, wie es ihm am besten passt.
2. Zum Logging. Wenn wir im Firewall-Regelwerk Logging aktivieren, sollten die Namen ohne Leerzeichen gestaltet werden. Offensichtlich können wir mit einer einfachen Konfiguration in Fluentd Daten filtern und ĂŒbersichtliche Dashboards erstellen. Auf dem Bild unten â mein Heimrouter.

3. Zum Speicherplatz und den Logs. Im Durchschnitt belegen 1.000 Nachrichten pro Stunde etwa 2-3 MB pro Tag, was, gehören Sie zu, nicht viel ist. Elasticsearch Version 7.5.
ANSIBLE.AWX
Zu unserem GlĂŒck haben wir ein fertiges Modul fĂŒr RouterOS.
Ich habe AWX erwĂ€hnt, aber die folgenden Befehle beziehen sich nur auf reines Ansible â ich denke, dass diejenigen, die mit Ansible gearbeitet haben, keine Probleme beim Zugriff ĂŒber die GUI von AWX haben werden.
Ich gebe ehrlich zu, dass ich zuvor andere Anleitungen gesehen habe, bei denen SSH verwendet wurde, und alle hatten unterschiedliche Probleme mit der Reaktionszeit und noch viele andere Probleme. Ich wiederhole, es kam nicht zum Kampf ï, betrachten Sie diese Informationen als Experiment, das nicht ĂŒber den Stand mit 20 Routern hinausgekommen ist.
Wir mĂŒssen ein Zertifikat oder ein Konto verwenden. Hier liegt die Entscheidung bei Ihnen, ich bevorzuge Zertifikate. Ein kleiner Punkt zu den Rechten. Ich gebe Schreibrechte â zumindest kann man "reset config" nicht durchfĂŒhren.
Bei der Generierung, Kopie des Zertifikats und dem Import sollten keine Probleme auftreten:
Kurz und bĂŒndig die Auflistung der BefehleAuf Ihrem PC
ssh-keygen -t RSA, beantworten Sie die Fragen, speichern Sie den SchlĂŒssel.
Kopieren auf Mikrotik:
user ssh-keys import public-key-file=id_mtx.pub user=ansible
Zuvor muss ein Konto erstellt und mit Rechten ausgestattet werden.
ĂberprĂŒfen Sie die Verbindung ĂŒber das Zertifikat
ssh -p 49475 -i /keys/mtx ansible@192.168.0.120
Wir tragen vi /etc/ansible/hosts ein
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
Und hier ist ein Beispiel fĂŒr ein Playbook: â name: add_work_sites
hosts: testmt
serial: 1
connection: network_cli
remote_user: mikrotik.west
gather_facts: ja
tasks:
â name: add Work_sites
routeros_command:
commands:
â /ip firewall address-list add address=gov.ru list=work_sites comment=Ticket665436_Es ist dringend notwendig
â /ip firewall address-list add address=habr.com list=work_sites comment=fĂŒr_habr
Wie aus der obigen Konfiguration ersichtlich, ist das Erstellen eigener Playbooks nicht schwierig. Man muss die CLI von MikroTik gut beherrschen. Stellen wir uns vor, dass auf allen Routern die Address-Listen mit bestimmten Daten entfernt werden sollen, dann:
Finden und löschen/ip firewal address-list remove [find where list=«gov.ru»]
Ich habe absichtlich nicht die gesamte Firewall-Listing hier eingefĂŒgt, da sie fĂŒr jedes Projekt individuell sein wird. Aber eines kann ich mit Sicherheit sagen: Benutzen Sie nur die Address-Liste.
Zu GITLAB ist alles klar. Ich werde nicht weiter auf diesen Punkt eingehen. Alles ist schön in separaten Tasks, Templates, Handlers.
Powershell
Hier werden 3 Dateien sein. Warum PowerShell? Man kann jedes Tool zur Generierung von Konfigurationen wÀhlen, je nach eigenem Komfort. In diesem Fall lÀuft auf allen PCs Windows, also warum Bash verwenden, wenn PowerShell einfacher ist? Je nach persönlichem Komfort.
Direkt das Skript selbst (einfach und verstÀndlich):[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]$cVPNCLIENTSs,
[Parameter(Mandatory=$true)]
[string]$NAMEROUTER,
[Parameter(Mandatory=$true)]
[string]$ServerCertificates,
[Parameter(Mandatory=$true)]
[string]$infile,
[Parameter(Mandatory=$true)]
[string]$outfile
)
Get-Content $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)} | Set-Content $outfile
Ich bitte um Entschuldigung, ich kann nicht alle Regeln auflisten, da es nicht ganz ansprechend wÀre. Sie können die Regeln selbst erstellen, basierend auf bewÀhrten Praktiken.
Hier ist beispielsweise eine Liste von Links, die ich verwendet habe::Sichern_Sie_Ihren_Router
:IP/Firewall/Filter
:OSPF-Beispiele
:Winbox
:Aktualisierung_RouterOS
:IP/Fasttrack â beachten Sie, dass beim Aktivieren von Fasttrack die Priorisierungs- und Traffic-Shaping-Regeln nicht funktionieren â nĂŒtzlich fĂŒr schwache GerĂ€te.
Bezeichnung fĂŒr Variablen:Als Beispiel werden die folgenden Netzwerke verwendet:
192.168.0.0/24 internes Netzwerk
172.22.4.0/24 VOIP Netzwerk
10.0.0.0/24 Netzwerk fĂŒr Kunden ohne Zugriff auf das lokale Netzwerk
192.168.255.0/24 VPN-Netzwerk fĂŒr groĂe Filialen
172.19.255.0/24 VPN-Netzwerk fĂŒr kleine Filialen
Die Netzwerkadresse besteht aus 4 Dezimalzahlen, wobei das Prinzip A.B.C.D verwendet wird. So funktioniert auch der Austausch: Wenn bei der AusfĂŒhrung nach B gefragt wird, bedeutet das, dass fĂŒr das Netzwerk 192.168.0.0/24 die Nummer 0 eingegeben werden muss, und fĂŒr C = 0.
$EXTERNALIPADDRESS â dedizierte Adresse vom Anbieter.
$EXTERNALIPROUTE â Standardroute fĂŒr das Netzwerk 0.0.0.0/0
$BWorknets â Arbeitsnetzwerk, in unserem Beispiel 168
$CWorknets â Arbeitsnetzwerk, in unserem Beispiel 0
$BVoipNets â VOIP-Netzwerk, in unserem Beispiel 22
$CVoipNets â VOIP-Netzwerk, in unserem Beispiel 4
$CClientss â Netzwerk fĂŒr Kunden â nur Internetzugang, in unserem Fall 0
$BVPNWORKs â VPN-Netzwerk fĂŒr groĂe Filialen, in unserem Beispiel 20
$CVPNWORKs â VPN-Netzwerk fĂŒr groĂe Filialen, in unserem Beispiel 255
$BVPNCLIENTS â VPN-Netzwerk fĂŒr kleine Filialen, bedeutet 19
$CVPNCLIENTS â VPN-Netzwerk fĂŒr kleine Filialen, bedeutet 255
$NAMEROUTER â Name des Routers
$ServerCertificate â Name des Zertifikats, das Sie zuvor importiert haben
$infile â Geben Sie den Pfad zur Datei an, von der wir die Konfiguration lesen, z.B. D:config.txt (am besten englischer Pfad ohne AnfĂŒhrungszeichen und Leerzeichen)
$outfile â den Pfad angeben, wo gespeichert werden soll, z. B. D:MT-test.txt
Ich habe die Adressen in den Beispielen aus offensichtlichen GrĂŒnden absichtlich geĂ€ndert.
Ich habe den Punkt zur Erkennung von Angriffen und anormalem Verhalten ausgelassen â das verdient einen eigenen Artikel. Es ist jedoch erwĂ€hnenswert, dass in dieser Kategorie Monitoring-Daten von Zabbix und verarbeitete Curl-Daten von Elasticsearch verwendet werden können.
Auf welche Punkte sollte man achten:
- Netzwerkplan. Am besten gleich in lesbarer Form erstellen. Excel reicht vollkommen aus. Leider sehe ich sehr oft, dass Netzwerke nach dem Prinzip âEin neuer Standort ist eröffnet, hier ist euer /24â erstellt werden. Niemand fragt nach, wie viele GerĂ€te an diesem Ort erwartet werden und ob ein zukĂŒnftiges Wachstum zu erwarten ist. Zum Beispiel wurde ein kleiner Laden eröffnet, in dem von Anfang an klar ist, dass nicht mehr als 10 GerĂ€te benötigt werden. Warum also ein /24 zuweisen? Bei groĂen Standorten hingegen wird ein /24 zugewiesen, obwohl es 500 GerĂ€te gibt â man könnte das Netzwerk einfach hinzufĂŒgen, aber es wĂ€re schön, das von Anfang an zu planen.
- Filterrichtlinien. Wenn das Projekt die Trennung von Netzwerken und eine maximale Segmentierung vorsieht. Best Practices Ă€ndern sich mit der Zeit. FrĂŒher wurden das Netzwerk von PCs und das Netzwerk von Druckern getrennt, heute ist es durchaus akzeptabel, diese Netzwerke nicht zu splitten. Es ist ratsam, gesundes Urteilsvermögen zu nutzen und nicht an Orten, wo es nicht notwendig ist, eine Vielzahl von Subnetzen zu schaffen, oder alle GerĂ€te in ein einziges Netzwerk zusammenzuschlieĂen.
- Die âGoldstandardeinstellungenâ auf allen Routern. Das heiĂt, wenn Sie sich fĂŒr einen Plan entschieden haben, sollten Sie alle Aspekte sofort berĂŒcksichtigen und versuchen, alle Einstellungen identisch zu gestalten â mit Ausnahme von verschiedenen Adresslisten und IP-Adressen. Bei auftretenden Problemen wird die Fehlersuche dann weniger Zeit in Anspruch nehmen.
- Organisatorische Aspekte sind ebenso wichtig wie technische. Oft handeln weniger engagierte Mitarbeiter nach den angegebenen Empfehlungen âmanuellâ und nutzen keine vorgefertigten Konfigurationen und Skripte, was letztendlich zu Problemen aus dem Nichts fĂŒhrt.
Zur dynamischen RoutenfĂŒhrung. OSPF mit zonaler Unterteilung wurde verwendet. Aber das ist doch eine Testumgebung; unter realen Bedingungen macht es mehr SpaĂ, solche Dinge einzurichten.
Ich hoffe, niemand ist enttĂ€uscht, dass ich die Router-Konfigurationen nicht geteilt habe. Ich denke, die Links sollten ausreichend sein, und alles hĂ€ngt von den Anforderungen ab. Und natĂŒrlich Tests â es mĂŒssen mehr Tests durchgefĂŒhrt werden.
Ich wĂŒnsche allen, dass sie im neuen Jahr ihre Projekte umsetzen können. Möge access granted mit Ihnen sein!!!
Quelle: habr.com
