Mikrotik

(Różnice między wersjami)
Skocz do: nawigacji, wyszukiwania
(INFORMACJA)
(Skrypt)
Linia 11: Linia 11:
  
 
===Skrypt===
 
===Skrypt===
W miejsce '''IP_MIKROTIKA''' oraz '''IP_RADIUSA''' należy podać swoje dane.
+
Proponowana wersja minimalna. Każdy z operatorów powinien sobie ją rozbudować i do konfigurować do potrzeb własnej sieci.
<pre>/interface pppoe-server server
+
adres '''1.1.1.1''' to adres strony z komunikatem
add authentication=chap default-profile=default disabled=no interface=wlan14 \
+
'''redirect-to=nasza.strona/notification''' należy zamienić na własną stronę z komunikatem
    keepalive-timeout=10 max-mru=1480 max-mtu=1480 max-sessions=0 mrru=\
+
<pre>/ip firewall filter
    disabled one-session-per-host=yes service-name=testowy
+
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
/ppp profile
+
add action=accept chain=forward comment="Akceptujemy ruch dnsa" dst-port=53 protocol=udp src-address-list=przekierowanie
set 0 address-list="" !bridge !bridge-path-cost !bridge-port-priority \
+
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
    change-tcp-mss=yes !dns-server !idle-timeout !incoming-filter \
+
add action=drop chain=forward comment="Blokujemy ruch komputer\F3w z komunikatami" dst-address=!1.1.1.1 src-address-list=przekierowanie
    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
+
set accounting=yes interim-update=15m use-radius=yes
+
 
+
 
+
/ip firewall filter
+
add action=jump chain=forward !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 \
+
    jump-target=ppp !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=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=95.171.198.219
    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===

Wersja z 10:38, 6 gru 2016

Skrypt do konfiguracji urządzeń Mikrotik.

Spis treści

Instalacja modułu

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

Konfiguracja Mikrotik

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

Skrypt

Proponowana wersja minimalna. Każdy z operatorów powinien sobie ją rozbudować i do konfigurować do potrzeb własnej sieci. 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=95.171.198.219
/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.

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

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.

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.

Automatyczne generowanie backupów

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();\" ";

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

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.

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.

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