Mikrotik
(→INFORMACJA) |
(→Skrypt) |
||
Linia 11: | Linia 11: | ||
===Skrypt=== | ===Skrypt=== | ||
− | + | Proponowana wersja minimalna. Każdy z operatorów powinien sobie ją rozbudować i do konfigurować do potrzeb własnej sieci. | |
− | <pre> | + | adres '''1.1.1.1''' to adres strony z komunikatem |
− | + | '''redirect-to=nasza.strona/notification''' — należy zamienić na własną stronę z komunikatem | |
− | + | <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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | /ip firewall filter | + | |
− | add action=jump chain=forward | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | 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=95.171.198.219 |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
/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=== |
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:
- 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.
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.