Mikrotik
(→Konfiguracja Mikrotik) |
(→Konfiguracja Mikrotik) |
||
(Nie pokazano 7 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=== | ||
− | + | '''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 | ||
− | /ip firewall filter | + | *'''redirect-to=nasza.strona/notification''' — należy zamienić na własną stronę z komunikatem |
− | add action=jump chain=forward | + | <pre>/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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add action=add-src-to-address-list address-list=przekierowanie | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add action=accept chain=forward comment="Akceptujemy ruch dnsa" | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add action=accept chain=forward comment= | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add action=drop chain=forward comment= | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
/ip firewall nat | /ip firewall nat | ||
− | add action=redirect chain=dstnat comment=Przekierowanie | + | 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 | /ip proxy | ||
− | set | + | 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 | /ip proxy access | ||
− | add | + | 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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | add action=deny comment="Przekierowujemy ruch na adres url" | + | |
− | + | ||
− | + | ||
/ip proxy direct | /ip proxy direct | ||
− | add action=deny | + | add action=deny src-address=0.0.0.0/0 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</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:
- możemy globalnie firewall i blokować ruch od strony internetu i dopuścić tylko wybrane klasy
- 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:
- albo filtrujemy w L7 i przekierowujemy tylko http https
- 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.