Poniżej znajduje się 10 zadań laboratoryjnych z zakresu skryptowania w MikroTik RouterOS. Każde zadanie jest zaprojektowane tak, aby zajmowało około 25-30 minut realizacji. Zadania obejmują tematy poznane na wykładzie, od podstaw tworzenia skryptów i zmiennych, przez instrukcje warunkowe i pętle, aż po zaawansowane przetwarzanie konfiguracji i automatyzację zadań z wykorzystaniem harmonogramu.

Zadanie 1: Monitor statusu interfejsów sieciowych

Cel:

Napisz skrypt, który sprawdzi status wszystkich interfejsów sieciowych na routerze MikroTik i wygeneruje czytelny raport o ich stanie. Skrypt ma nauczyć Cię podstawowych konstrukcji programistycznych w RouterOS: deklarowania zmiennych, pętli foreach oraz instrukcji warunkowych if.

Scenariusz:

Jesteś administratorem sieci w firmie X. Codziennie rano musisz sprawdzać czy wszystkie interfejsy na routerze działają poprawnie. Masz do czynienia z routerem MikroTik CCR1009-7G-1C-1S+ obsługującym łącze internetowe 1Gbps oraz sieć lokalna dla 500 użytkowników. Twoim obowiązkiem jest codzienny obchód po urządzeniach sieciowych - skrypt znacznie ułatwi tę pracę. Napisz skrypt, który automatycznie przeskanuje wszystkie interfejsy sieciowe (ethernet, wlan, bridge), sprawdzi ich status (running/disabled), typ oraz adres IP jeśli jest przypisany. Skrypt powinien zapisać wynik do logów systemowych routera z informacją o każdym interfejsie. Na końcu skrypt powinien wyświetlić podsumowanie: ilu interfejsów jest aktywnych, ilu wyłączonych.

Wskazówki do wykonania:

Zadanie 2: Automatyczny backup konfiguracji

Cel:

Stwórz skrypt, który automatycznie tworzy backup konfiguracji routera i zapisuje go do pliku z datą w nazwie. Celem zadania jest nauka operacji na plikach, pracy z datą systemową oraz automatyzacji często powtarzanych czynności administracyjnych w celach bezpieczeństwa.

Scenariusz:

Pracujesz jako administrator sieci w średniej wielkości firmie IT obsługującej 200 stacji roboczych. Twoja firma stosuje politykę bezpieczeństwa wymagającą codziennego tworzenia backupów konfiguracji wszystkich routerów przed wprowadzaniem jakichkolwiek zmian. Router MikroTik CCR1036-12G-2S+ obsługuje główne łącze internetowe oraz rozległą sieć korporacyjną z wieloma VLANami. Musisz codziennie tworzyć backup konfiguracji routera MikroTik przed wprowadzaniem zmian, aby w razie problemów móc szybko przywrócić działanie sieci. Napisz skrypt, który automatycznie wyeksportuje całą konfigurację routera do pliku z datą w nazwie (np. backup-2024-01-15.rsc). Skrypt powinien sprawdzić czy katalog na backup istnieje, a jeśli nie - utworzyć go. Przed utworzeniem nowego backupu skrypt powinien usunąć stare backupy starsze niż 7 dni, aby nie zapełniać pamięci routera. Skrypt powinien zapisać informację o utworzonym backupie do logów z informacją o rozmiarze pliku.

Wskazówki do wykonania:

Zadanie 3: Czyszczenie logów systemowych

Cel:

Napisz skrypt do automatycznego czyszczenia starych logów systemowych routera. Zadanie uczy pracy z logami systemowymi, filtrowania rekordów oraz zarządzania pamięcią routera poprzez regularne usuwanie przestarzałych danych zgodnie z polityką firmy.

Scenariusz:

Twoja firma ma politykę przechowywania logów tylko przez 7 dni ze względu na wymagania RODO oraz ograniczenia miejsca na dysku. Router MikroTik hAP ac lite obsługujący małe biuro z 50 pracownikami zaczyna mieć problem z pamięcią z powodu nagromadzonych logów systemowych - wolne miejsce na dysku spadło do krytycznego poziomu 15%. Twoim zadaniem jest napisanie skryptu, który automatycznie usunie logi starsze niż określona liczba dni (domyślnie 7). Skrypt powinien najpierw wyświetlić informację o aktualnej liczbie logów i dacie najstarszego logu. Następnie powinien usunąć stare logi i wyświetlić komunikat o wynikach operacji. Uruchom skrypt i sprawdź czy logi zostały usunięte.

Wskazówki do wykonania:

Zadanie 4: Lista użytkowników i ich uprawnień

Cel:

Napisz skrypt, który wyświetli listę wszystkich użytkowników routera wraz z ich uprawnieniami i grupami. Zadanie uczy pracy z systemem użytkowników RouterOS, filtrowania i grupowania danych oraz przygotowuje do przeprowadzania audytów bezpieczeństwa w firmie.

Scenariusz:

Audyt bezpieczeństwa przeprowadzany przez zewnętrzną firmę wymaga od Ciebie sprawdzenia wszystkich kont użytkowników na routerze MikroTik RouterBOARD 2011UiAS-2HnD obsługującym sieć firmową. Musisz przygotować raport zawierający wszystkich użytkowników systemu, ich grupy (full, read, policy, ftp, api), informację o tym czy konto jest włączone (disabled) oraz datę ostatniego logowania. Skrypt powinien też pokazać liczbę użytkowników w każdej grupie i podsumowanie: ilu użytkowników jest aktywnych a ilu wyłączonych. Pamiętaj o przestrzeganiu zasady - hasła nigdy nie powinny być wyświetlane w logach!

Wskazówki do wykonania:

Zadanie 5: Monitor ping i powiadomienie o niedostępności hosta

Cel:

Stwórz skrypt, który monitoruje dostępność kluczowych hostów w sieci i zapisuje alert do logów gdy host przestanie odpowiadać. Zadanie uczy pracy z poleceniem ping, zmiennymi globalnymi do zapamiętywania stanu oraz reagowaniem na zdarzenia w sieci poprzez logowanie alertów.

Scenariusz:

Jako administrator sieci w firmie usługowej musisz monitorować dostępność kluczowych serwerów w infrastrukturze: bramy internetowej (router ISP), serwera DNS (8.8.8.8), serwera plików w biurze oraz wewnętrznego serwera ERP. Twoja firma korzysta z systemu monitoringu, który wymaga natychmiastowej reakcji na awarie. Napisz skrypt, który sprawdzi dostępność tych hostów (używając polecenia /ping), a gdy host nie odpowie po 4 próbach, zapisze alert do logów z informacją o niedostępnym hoście i czasie zdarzenia. Skrypt powinien też zapobiegawczo sprawdzić czy wcześniej dany host był dostępny (używając zmiennej globalnej do zapamiętania poprzedniego stanu), aby nie generować duplikujących się alertów.

Wskazówki do wykonania:

Zadanie 6: Zarządzanie regułami firewalla

Cel:

Napisz skrypt, który wyświetli i przeanalizuje reguły firewalla na routerze MikroTik. Zadanie uczy pracy z firewallem, filtrowania wyników oraz formatowania danych wyjściowych w czytelnym raporcie do analizy bezpieczeństwa.

Scenariusz:

Twoja firma wdrożyła nowe zasady bezpieczeństwa wynikające z normy ISO 27001 i musisz przeanalizować aktualne reguły firewalla na routerze MikroTik CCR1016-12G obsługującym dużą sieć korporacyjną z wieloma oddziałami. Router ma ponad 50 reguł firewall configure. Napisz skrypt, który wyświetli wszystkie reguły firewalla pogrupowane według łańcuchów (input, forward, output), dla każdej reguły pokaże: numer, łańcuch, źródłowy i docelowy adres IP, port, akcję (accept, drop, reject) i komentarz. Skrypt powinien też zliczyć reguły w każdym łańcuchu i wyświetlić podsumowanie. Na końcu skrypt powinien znaleźć i wyświetlić reguły z komentarzem zawierającym słowo "OLD" jako przestarzałe.

Wskazówki do wykonania:

Zadanie 7: Konfigurator DHCP dla podsieci

Cel:

Napisz skrypt, który automatycznie skonfiguruje serwer DHCP dla określonej podsieci. Zadanie uczy pracy z argumentami skryptu, walidacji danych wejściowych oraz programowego tworzenia obiektów sieciowych w RouterOS.

Scenariusz:

Twoja firma tworzy nowy oddział biurowy na 30 stanowisk i potrzebujesz szybko skonfigurować nowy serwer DHCP dla nowej podsieci 192.168.50.0/24. Ręczna konfiguracja każdego serwera DHCP jest czasochłonna i podatna na błędy - musisz pamiętać o puli adresów, sieci, serwerze i interfejsie. Napisz skrypt, który przyjmie jako argumenty: adres podsieci, maskę, bramę domyślną, zakres adresów IP do przydzielania (pula), adresy DNS i czas dzierżawy. Skrypt powinien najpierw sprawdzić czy DHCP server już istnieje dla tej sieci, a jeśli nie - utworzyć nową konfigurację. Skrypt powinien wyświetlać komunikaty postępu i wynik operacji.

Wskazówki do wykonania:

Zadanie 8: Harmonogram zadań - codzienny raport

Cel:

Stwórz skrypt z harmonogramem, który automatycznie generuje codzienny raport o stanie routera. Zadanie uczy pracy z schedulerem, zbierania danych o systemie oraz tworzenia automatycznych zadań cyklicznych.

Scenariusz:

Twoja firma potrzebuje codziennego raportu o stanie routera wysyłanego e-mailem każdego dnia o 8:00 rano do działu IT. Dyrektor IT oczekuje raportu zawierającego zużycie CPU, pamięć RAM, wolne miejsce na dysku, liczbę aktywnych połączeń, status interfejsów i uptime routera. Napisz skrypt, który zbiera te informacje, formatuje je w czytelny raport tekstowy i zapisuje do pliku. Następnie utwórz zadanie w schedulerze, które uruchomi ten skrypt codziennie o 8:00 rano. Skrypt powinien zawierać komentarze dokumentujące jego działanie dla przyszłych administratorów.

Wskazówki do wykonania:

Zadanie 9: Blokowanie adresów IP po ataku

Cel:

Napisz skrypt, który automatycznie blokuje adresy IP próbujące atakować router (np. wielokrotne błędne logowania). Zadanie uczy analizy logów w poszukiwaniu wzorców ataków, dynamicznego dodawania reguł firewalla oraz programowej ochrony przed atakami.

Scenariusz:

Router w Twojej firmie jest atakowany przez boty próbujące zalogować się przez SSH z setek różnych adresów IP. Dziennie notujecie setki nieudanych prób logowania co powoduje obciążenie routera i potencjalne zagrożenie bezpieczeństwa. Napisz skrypt, który analizuje logi i wyszukuje adresy IP z wielokrotnymi (więcej niż 3) nieudanymi próbami logowania w ciągu ostatnich 10 minut. Skrypt powinien dodać te adresy IP do listy adresów (address list) w firewallu i zablokować je. Skrypt powinien też sprawdzić czy dany adres już jest zablokowany, aby nie dodawać duplikatów. Dodaj komentarze dokumentujące działanie skryptu.

Wskazówki do wykonania:

Zadanie 10: Reset połączeń dla klienta

Cel:

Napisz skrypt, który resetuje (rozłącza) aktywne połączenia dla określonego klienta na podstawie jego adresu IP. Zadanie uczy pracy z connection tracking, znajdowania i usuwania połączeń oraz walidacji argumentów wejściowych.

Scenariusz:

Klient z firmy partnerskiej zgłasza problemy z połączeniem VPN do Twojej sieci i prosi o jego zresetowanie. Sesja VPN wydaje się "zawieszona" mimo że połączenie sieciowe działa - typowy problem z "zombie connection". Napisz skrypt, który przyjmie jako argument adres IP klienta i zakończy wszystkie aktywne połączenia TCP/UDP dla tego adresu. Skrypt powinien najpierw sprawdzić czy takie połączenie istnieje, a następnie je zakończyć używając polecenia /ip firewall connection remove. Skrypt powinien wyświetlić informację o liczbie zamkniętych połączeń i zapisać wynik do logów. Dodaj obsługę błędów dla przypadku gdy podany adres IP jest nieprawidłowy.

Wskazówki do wykonania:

Przykładowe rozwiązania

Skrypty RouterOS