Mikrotik

Z Net47 2.0
(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(INFORMACJA)
(Konfiguracja Mikrotik)
 
(Nie pokazano 6 wersji utworzonych przez 2 użytkowników)
Linia 8: Linia 8:
 
Moduł MIKROTIK działa poprawnie od wersji <span style="color: red"><big>'''RouterOS 6.x'''</big></span>, poniżej tej wersji mogą występować problemy z odczytem informacji.
 
Moduł MIKROTIK działa poprawnie od wersji <span style="color: red"><big>'''RouterOS 6.x'''</big></span>, poniżej tej wersji mogą występować problemy z odczytem informacji.
  
Dla obsługi poprzez wykonywanie poleceń CoA działa prawidłowo od wersji: <span style="color: red"><big>'''RouterOS 6.37'''</big></span>,
+
Dla obsługi poprzez wykonywanie poleceń CoA działa prawidłowo od wersji: <span style="color: red"><big>'''RouterOS 6.37'''</big></span>
  
 
===Skrypt===
 
===Skrypt===
W miejsce '''IP_MIKROTIKA''' oraz '''IP_RADIUSA''' należy podać swoje dane.
+
'''Komunikaty działają wyłącznie dla stron wykorzystujących protokół HTTP.'''
<pre>/interface pppoe-server server
+
add authentication=chap default-profile=default disabled=no interface=wlan14 \
+
    keepalive-timeout=10 max-mru=1480 max-mtu=1480 max-sessions=0 mrru=\
+
    disabled one-session-per-host=yes service-name=testowy
+
  
/ppp profile
+
Proponowana wersja minimalna. Każdy z operatorów powinien sobie ją rozbudować i do konfigurować do potrzeb własnej sieci.
set 0 address-list="" !bridge !bridge-path-cost !bridge-port-priority \
+
    change-tcp-mss=yes !dns-server !idle-timeout !incoming-filter \
+
    local-address=IP_MIKROTIKA name=default only-one=default !outgoing-filter \
+
    !rate-limit !remote-address !session-timeout use-compression=default \
+
    use-encryption=default use-mpls=default use-vj-compression=default \
+
    !wins-server
+
set 1 address-list="" !bridge !bridge-path-cost !bridge-port-priority \
+
    change-tcp-mss=yes !dns-server !idle-timeout !incoming-filter \
+
    !local-address name=default-encryption only-one=default !outgoing-filter \
+
    !rate-limit !remote-address !session-timeout use-compression=default \
+
    use-encryption=yes use-mpls=default use-vj-compression=default \
+
    !wins-server
+
  
/ppp aaa
+
GDZIE:
set accounting=yes interim-update=15m use-radius=yes
+
  
 +
*adres '''1.1.1.1''' to adres strony z komunikatem
  
/ip firewall filter
+
*'''redirect-to=nasza.strona/notification'''  — należy zamienić na własną stronę z komunikatem
add action=jump chain=forward !connection-bytes !connection-limit \
+
<pre>/ip firewall filter
    !connection-mark !connection-rate !connection-state !connection-type \
+
add action=jump chain=forward jump-target=ppp
    !content disabled=no !dscp !dst-address !dst-address-list \
+
add action=add-src-to-address-list address-list=przekierowanie address-list-timeout=30s chain=przypominajka dst-address=!1.1.1.1
    !dst-address-type !dst-limit !dst-port !fragment !hotspot !icmp-options \
+
add action=accept chain=forward comment="Akceptujemy ruch dnsa" dst-port=53 protocol=udp src-address-list=przekierowanie
    !in-bridge-port !in-interface !ingress-priority !ipv4-options \
+
add action=accept chain=forward comment="Akceptujemy ruch o strony z komunikatem i do panelu usera" dst-address=1.1.1.1 src-address-list=przekierowanie
    jump-target=ppp !layer7-protocol !limit !nth !out-bridge-port \
+
add action=drop chain=forward comment="Blokujemy ruch komputer\F3w z komunikatami" dst-address=!1.1.1.1 src-address-list=przekierowanie
    !out-interface !p2p !packet-mark !packet-size !per-connection-classifier \
+
    !port !priority !protocol !psd !random !routing-mark !routing-table \
+
    !src-address !src-address-list !src-address-type !src-mac-address \
+
    !src-port !tcp-flags !tcp-mss !time !ttl
+
add action=add-src-to-address-list address-list=przekierowanie \
+
    address-list-timeout=10m chain=przypominajka !connection-bytes \
+
    !connection-limit !connection-mark !connection-rate !connection-state \
+
    !connection-type !content disabled=no !dscp dst-address=!IP_RADIUSA \
+
    !dst-address-list !dst-address-type !dst-limit !dst-port !fragment \
+
    !hotspot !icmp-options !in-bridge-port !in-interface !ingress-priority \
+
    !ipv4-options !layer7-protocol !limit !nth !out-bridge-port \
+
    !out-interface !p2p !packet-mark !packet-size !per-connection-classifier \
+
    !port !priority !protocol !psd !random !routing-mark !routing-table \
+
    !src-address !src-address-list !src-address-type !src-mac-address \
+
    !src-port !tcp-flags !tcp-mss !time !ttl
+
add action=accept chain=forward comment="Akceptujemy ruch dnsa" \
+
    !connection-bytes !connection-limit !connection-mark !connection-rate \
+
    !connection-state !connection-type !content disabled=no !dscp \
+
    !dst-address !dst-address-list !dst-address-type !dst-limit dst-port=53 \
+
    !fragment !hotspot !icmp-options !in-bridge-port !in-interface \
+
    !ingress-priority !ipv4-options !layer7-protocol !limit !nth \
+
    !out-bridge-port !out-interface !p2p !packet-mark !packet-size \
+
    !per-connection-classifier !port !priority protocol=udp !psd !random \
+
    !routing-mark !routing-table !src-address src-address-list=przekierowanie \
+
    !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \
+
    !ttl
+
add action=accept chain=forward comment=\
+
    "Akceptujemy ruch o strony z komunikatem i do panelu usera" \
+
    !connection-bytes !connection-limit !connection-mark !connection-rate \
+
    !connection-state !connection-type !content disabled=no !dscp \
+
    dst-address=IP_RADIUSA !dst-address-list !dst-address-type !dst-limit \
+
    !dst-port !fragment !hotspot !icmp-options !in-bridge-port !in-interface \
+
    !ingress-priority !ipv4-options !layer7-protocol !limit !nth \
+
    !out-bridge-port !out-interface !p2p !packet-mark !packet-size \
+
    !per-connection-classifier !port !priority !protocol !psd !random \
+
    !routing-mark !routing-table !src-address src-address-list=przekierowanie \
+
    !src-address-type !src-mac-address !src-port !tcp-flags !tcp-mss !time \
+
    !ttl
+
add action=drop chain=forward comment=\
+
    "Blokujemy ruch z komputer\F3w z komunikatami" !connection-bytes \
+
    !connection-limit !connection-mark !connection-rate !connection-state \
+
    !connection-type !content disabled=no !dscp !dst-address \
+
    !dst-address-list !dst-address-type !dst-limit !dst-port !fragment \
+
    !hotspot !icmp-options !in-bridge-port !in-interface !ingress-priority \
+
    !ipv4-options !layer7-protocol !limit !nth !out-bridge-port \
+
    !out-interface !p2p !packet-mark !packet-size !per-connection-classifier \
+
    !port !priority !protocol !psd !random !routing-mark !routing-table \
+
    !src-address src-address-list=przekierowanie !src-address-type \
+
    !src-mac-address !src-port !tcp-flags !tcp-mss !time !ttl
+
 
+
  
 
/ip firewall nat
 
/ip firewall nat
add action=redirect chain=dstnat comment=Przekierowanie !connection-bytes \
+
add action=redirect chain=dstnat comment="Przekierowanie na komunikat" dst-port=80 protocol=tcp src-address-list=przekierowanie to-ports=58080
    !connection-limit !connection-mark !connection-rate !connection-type \
+
add action=redirect chain=dstnat comment="Przekierowanie na komunikat" dst-port=443 protocol=tcp src-address-list=przekierowanie to-ports=58080
    !content disabled=no !dscp !dst-address !dst-address-list \
+
    !dst-address-type !dst-limit dst-port=80 !fragment !hotspot !icmp-options \
+
    !in-bridge-port !in-interface !ingress-priority !ipv4-options \
+
    !layer7-protocol !limit !nth !out-bridge-port !out-interface !packet-mark \
+
    !packet-size !per-connection-classifier !port !priority protocol=tcp !psd \
+
    !random !routing-mark !routing-table !src-address src-address-list=\
+
    przekierowanie !src-address-type !src-mac-address !src-port !tcp-mss \
+
    !time !to-addresses to-ports=8080 !ttl
+
 
+
 
+
  
 
/ip proxy
 
/ip proxy
set always-from-cache=no cache-administrator=webmaster cache-hit-dscp=4 \
+
set cache-path=web-proxy1 enabled=yes max-cache-size=none max-client-connections=900 max-server-connections=900 port=58080 src-address=12.345.678.912
    cache-on-disk=no enabled=yes max-cache-object-size=2048KiB \
+
    max-cache-size=none max-client-connections=600 max-fresh-time=3d \
+
    max-server-connections=600 parent-proxy=0.0.0.0 parent-proxy-port=0 port=\
+
    8080 serialize-connections=no src-address=IP_MIKROTIKA
+
 
/ip proxy access
 
/ip proxy access
add action=allow comment="Akceptujemy ruch do strony z komunikatem" disabled=\
+
add dst-address=1.1.1.1 dst-port=80
    no dst-address=IP_RADIUSA !dst-host dst-port="" !local-port !method !path \
+
add dst-address=1.1.1.1 dst-port=443
    !redirect-to !src-address
+
add action=deny comment="Przekierowujemy ruch na adres url" dst-port=80 redirect-to=nasza.strona/notification src-address=0.0.0.0/0
add action=allow comment="Ruch do mBank" disabled=no !dst-address dst-host=\
+
    *.mbank.pl dst-port="" !local-port !method !path !redirect-to \
+
    src-address=0.0.0.0/0
+
add action=allow comment="Ruch do mBank" disabled=no !dst-address dst-host=\
+
    *.mbank.com.pl dst-port="" !local-port !method !path !redirect-to \
+
    src-address=0.0.0.0/0
+
add action=allow comment="Ruch do BZWBK" disabled=no !dst-address dst-host=\
+
    *.centrum24.pl dst-port="" !local-port !method !path !redirect-to \
+
    src-address=0.0.0.0/0
+
add action=allow comment="Ruch do BZWBK" disabled=no !dst-address dst-host=\
+
    *.bzwbk.pl dst-port="" !local-port !method !path !redirect-to \
+
    src-address=0.0.0.0/0
+
add action=deny comment="Przekierowujemy ruch na adres url" disabled=no \
+
    !dst-address !dst-host dst-port=80 !local-port !method !path redirect-to=\
+
    nowynet.ostrog.net/notification src-address=0.0.0.0/0
+
 
/ip proxy direct
 
/ip proxy direct
add action=deny disabled=no !dst-address !dst-host dst-port="" !local-port \
+
add action=deny src-address=0.0.0.0/0
    !method !path src-address=0.0.0.0/0
+
 
+
/radius
+
add accounting-backup=no accounting-port=1813 address=IP_RADIUSA \
+
    authentication-port=1812 called-id="" disabled=no domain="" realm="" \
+
    secret=amen service=ppp timeout=2000ms
+
/radius incoming
+
set accept=no port=3799
+
  
 
</pre>
 
</pre>
 +
Zalecane jest  żeby dokonać zabezpieczenia proxy. Mamy na to dwie metody:
 +
# możemy globalnie firewall i blokować ruch od strony internetu i dopuścić tylko wybrane klasy
 +
# albo możemy  w samym proxy
 +
<pre>
 +
/ip proxy access
 +
add dst-address=1.1.1.1 dst-port=80
 +
#####tutaj też można dodać wyjątki dla stron które klient może otworzyć np do banków ############
 +
#####nadal proponuję kontrolować src żeby nie zrobiono ataku na te wyjątki przez nasz serwer##########
 +
add dst-address=1.1.1.1 dst-port=443
 +
add action=deny comment="Przekierowujemy ruch na adres url" dst-port=80 redirect-to=nasza.strona/notification src-address=0.0.0.0/0
 +
</pre>
 +
określając src adresy jakie mogą z niego korzystać, w przypadku ataku na proxy zabije nam stronę z komunikatem.
 +
Jest jeszcze jeden problem z mikrotikiem. Przy przekierowaniu portu 80 czy 443 mikrotik nie rozróżnia czy to ruch http czy inny i przekierowuje wszystko. Jest duże ryzyko, że klient może ustawić np torrent na docelowy port 80 i
 +
będzie tysiące pakietów wysyłać do strony z komunikatem. Mamy dwie metody rozwiązania problemu:
 +
# albo filtrujemy w L7 i przekierowujemy tylko http https
 +
# albo ustawiamy limit pakietów w przekierowaniu resztę blokujemy.
  
 
===Utworzenie konta===
 
===Utworzenie konta===

Aktualna wersja na dzień 15:46, 3 lis 2020

Skrypt do konfiguracji urządzeń Mikrotik.

Spis treści

[edytuj] Instalacja modułu

Jeżeli moduł nie został jeszcze zainstalowany należy go zainstalować według instrukcji znajdującej się TUTAJ

[edytuj] Konfiguracja Mikrotik

[edytuj] INFORMACJA

Moduł MIKROTIK działa poprawnie od wersji RouterOS 6.x, poniżej tej wersji mogą występować problemy z odczytem informacji.

Dla obsługi poprzez wykonywanie poleceń CoA działa prawidłowo od wersji: RouterOS 6.37

[edytuj] Skrypt

Komunikaty działają wyłącznie dla stron wykorzystujących protokół HTTP.

Proponowana wersja minimalna. Każdy z operatorów powinien sobie ją rozbudować i do konfigurować do potrzeb własnej sieci.

GDZIE:

  • adres 1.1.1.1 to adres strony z komunikatem
  • redirect-to=nasza.strona/notification — należy zamienić na własną stronę z komunikatem
/ip firewall filter
add action=jump chain=forward jump-target=ppp
add action=add-src-to-address-list address-list=przekierowanie address-list-timeout=30s chain=przypominajka dst-address=!1.1.1.1
add action=accept chain=forward comment="Akceptujemy ruch dnsa" dst-port=53 protocol=udp src-address-list=przekierowanie
add action=accept chain=forward comment="Akceptujemy ruch o strony z komunikatem i do panelu usera" dst-address=1.1.1.1 src-address-list=przekierowanie
add action=drop chain=forward comment="Blokujemy ruch komputer\F3w z komunikatami" dst-address=!1.1.1.1 src-address-list=przekierowanie

/ip firewall nat
add action=redirect chain=dstnat comment="Przekierowanie na komunikat" dst-port=80 protocol=tcp src-address-list=przekierowanie to-ports=58080
add action=redirect chain=dstnat comment="Przekierowanie na komunikat" dst-port=443 protocol=tcp src-address-list=przekierowanie to-ports=58080

/ip proxy
set cache-path=web-proxy1 enabled=yes max-cache-size=none max-client-connections=900 max-server-connections=900 port=58080 src-address=12.345.678.912
/ip proxy access
add dst-address=1.1.1.1 dst-port=80
add dst-address=1.1.1.1 dst-port=443
add action=deny comment="Przekierowujemy ruch na adres url" dst-port=80 redirect-to=nasza.strona/notification src-address=0.0.0.0/0
/ip proxy direct
add action=deny src-address=0.0.0.0/0

Zalecane jest żeby dokonać zabezpieczenia proxy. Mamy na to dwie metody:

  1. możemy globalnie firewall i blokować ruch od strony internetu i dopuścić tylko wybrane klasy
  2. albo możemy w samym proxy
/ip proxy access
add dst-address=1.1.1.1 dst-port=80
#####tutaj też można dodać wyjątki dla stron które klient może otworzyć np do banków ############
#####nadal proponuję kontrolować src żeby nie zrobiono ataku na te wyjątki przez nasz serwer##########
add dst-address=1.1.1.1 dst-port=443
add action=deny comment="Przekierowujemy ruch na adres url" dst-port=80 redirect-to=nasza.strona/notification src-address=0.0.0.0/0

określając src adresy jakie mogą z niego korzystać, w przypadku ataku na proxy zabije nam stronę z komunikatem. Jest jeszcze jeden problem z mikrotikiem. Przy przekierowaniu portu 80 czy 443 mikrotik nie rozróżnia czy to ruch http czy inny i przekierowuje wszystko. Jest duże ryzyko, że klient może ustawić np torrent na docelowy port 80 i będzie tysiące pakietów wysyłać do strony z komunikatem. Mamy dwie metody rozwiązania problemu:

  1. albo filtrujemy w L7 i przekierowujemy tylko http https
  2. albo ustawiamy limit pakietów w przekierowaniu resztę blokujemy.

[edytuj] Utworzenie konta

Na Mikrotiku należy utworzyć konto o takiej nazwie jaka podana jest w zmiennej konfiguracyjnej: MIKROTIK_Login (zmienną można znaleźć w: System->Ustawienia systemu->Zmienne systemowe->Mikrotik). Domyślnie jest to:

net47

Jeżeli utworzymy konto z inną nazwą niż podana w zmiennej MIKROTIK_Login to musimy także podać tą nazwę w tej zmiennej w systemie i wykonać restart modułu mikrotika:

systemctl restart net47mikrotikd

[edytuj] Przypisanie klucza DSA do konta

Do utworzonego konta należy przypisać publiczny klucz DSA. Zawartość klucza znajduje się w zmiennej: DSA_public (zmienną można znaleźć w: System->Ustawienia systemu->Zmienne systemowe->Klucze). Plik z kluczem należy wgrać na urządzenie i przypisać do loginu. System komunikuje się z Mikrotikiem przy użyciu komunikacji SSH.

[edytuj] Sprawdzenie poprawności konfiguracji

Po wykonaniu powyższych kroków można sprawdzić czy konfiguracja jest poprawna i czy system loguję się na Mikrotika bez podawania hasła. W tym celu należy wykonać z poziomu systemu net47 z konsoli komendy:

Przejście na użytkownika net47:

su -l net47

Połączenie z mikrotikiem:

ssh  -i /etc/pki/tls/private/devices.key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=error -o PasswordAuthentication=no -o ConnectTimeout=2 -p3022 net47@IP_MIKROTIKA

Podajemy odpowiedni port, login oraz adres IP Mikrotika.

[edytuj] Automatyczne generowanie backupów

[edytuj] Utworzenie skryptu

Należy utworzyć skrypt CRONTAB w podanej lokalizacji /home/net47/cron-script/MikrotikAutoBackup.sh

Zawartość skryptu MikrotikAutoBackup.sh:

#!/bin/bash

/bin/su -l postgres -c "psql -d net47 -c \"SELECT network.getmikrotikautobackup();\" ";

[edytuj] Dodanie wpisu do Crontab

Wartości czasowe podajemy według własnego uznania z jaką częstotliwością chcemy mieć backupy.

0	19	*	*	*	/home/net47/cron-script/MikrotikAutoBackup.sh > /dev/null 2>&1

[edytuj] Zapis backupu do pliku i/lub bazy

W celu uruchomienia automatycznego generowania backupów z urządzeń Mikrotik należy odpowiednio ustawić zmienne systemowe: MIKROTIK_Backup_Sciezka, MIKROTIK_Backup_Typ, MIKROTIK_Backup_Zapis.

[edytuj] Zapis backupu na serwerze FTP

W celu uruchomienia automatycznego generowania backupów z urządzeń Mikrotik należy odpowiednio ustawić zmienne systemowe: FTP_Backup, FTP_Backup_Dir, FTP_Backup_Login, FTP_Backup_Pass, FTP_Backup_IP, FTP_Backup_Port.

[edytuj] Kontrola Pasma

Opis kontroli pasma dla urządzeń można znaleźć TUTAJ.

Osobiste
Przestrzenie nazw
Warianty
Działania
Nawigacja
Konfiguracja Systemu
Szablony
API
PostgreSQL
Narzędzia
MENU