Zdalne odpalanie hosta.
12 grudnia, 2024Czasem mamy taką sytuację, że musimy uruchomić maszynę znajdującą się w sieci LAN a nie mamy nikogo kto by ją włączył. Z rozwiązaniem tego problemu pomagają nam możliwości urządzeń firmy Mikrotik
Jak to zrobić?
Komputer musi mieć uruchomioną w BIOS i przetestowaną obsługę WoL (Wake on Lan). Jak to nam działa to już z górki.
Mikrotik obsługuje wysyłanie magic pakietów i jest to odrębne narzedzie w /tool, które możemy wykorzystać w skrypcie, który można wrzucić do schedulera więc mamy automatyzację odpalania.
Pozostaje zbudowanie wyzwalacza i zabezpieczenie go przed przypadkowym uruchomieniem.
Routery Mikrotika pozwalają przy pomocy reguł firewalla na dodawanie adresów, które „pukają” do naszego urządzenia, do list adresów a te z kolei można wykorzystywać w regułach firewall.
Na tych funkcjonalnościach zbudujemy spust i „bezpieczniki”.
Zaczynamy!
Na samym początku dodajemy do FW wpis tworzący listę adresów ip, które zapukały na konkretny port i konkretnym protokołem.
/ip firewall filter add action=add-src-to-address-list address-list=666 address-list-timeout=\
5m chain=input dst-port=666 protocol=tcp
/ip firewall filter add action=add-src-to-address-list address-list=666 – tworzy adress listę o nazwie 666
address-list-timeout=5m – ustawia czas życia addres listy na 5 minut. Jest to wazne aby po jakimś czasie lista zniknęła co zabezpiecza nam drugi etap. Czym krotszy jest czas życia pierwszej listy tym bezpieczniej.
chain=input – określa kierunek skąd przychodzą akceptowane zapytania
dst-port=666 – określa port na jaki mają przychodzić zapytania
protocol=tcp – określa protokół
Następnie dodajemy regułę tworzacą drugi poziom wyzwolenia
/ip firewall filter add action=add-src-to-address-list address-list=777 address-list-timeout=\
5m chain=input dst-port=777 protocol=tcp src-address-list=666
/ip firewall filter add action=add-src-to-address-list address-list=777 – tworzy adress listę o nazwie 777
address-list-timeout=5m – ustawia czas życia addres listy na 5 minut.
chain=input – określa kierunek skąd przychodzą akceptowane zapytania
dst-port=777 – określa port na jaki mają przychodzić zapytania
protocol=tcp – określa protokół
src-address-list=666 – określa że adres już musi znajdować się na liście 666 a nie z dowolnego adresu.
Ten etap można powielić ale my poprzestaniemy na dwóch poziomach zabezpieczeń.
Czas na „spust” czyli skrypt wyzwalający. Nazwijmy go WOL.
:local trigger [/ip firewall address-list find list=777];
:if ($trigger) do={
/tool wol interface=etherx mac=xx:xx:xx:xx:xx:xx
}
jak to działa?
linia :local trigger [/ip firewall address-list find list=777]; sprawdza czy istnieje address lista o nazwie 777 (dlatego jest ważne aby po zadanycm czasie była kasowana)
linia :if ($trigger) do={ jest testem logicznym – jezeli $trigger zwraca prawdę czyli istnieje lista o nazwie 777 to wykona się kolejna linia czyli
/tool wol interface=etherx mac=xx:xx:xx:xx:xx:xx} zostanie wysłany magic pakiet na wskazany interface i określony MAC ADDRESS.
W wypadki kiedy zmienna $trigger zwróci fałsz skrypt zakończy się w tym miejscu.
czas dodać skrypt do schedulera.
/system scheduler add interval=5m name=schedule3 on-event=”/system script run WOL” policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=2024-12-11 start-time=11:33:10
/system scheduler add - dodanie skryptu
interval=5m - ustawienie interwału wykonania (co 5 minut)
name=schedule3 - nazwa schedulera
on-event="/system script run WOL" - co ma wykonać czyli scrypt o nazwie WOL
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon - warunki
start-date=2024-12-11 - od kiedy ma zacząć działać scheduler (data)
start-time=11:33:10 - od kiedy ma zacząć działać scheduler (czas)
Generalnie można ten pomysł rozijac dodając np. listę adresów o dłuzszym czasie życia odblokowującą regułę zdalnego dostęu do RDP.
W wyapdku kiedy pracujemy z danego adresu IP i odpalimy zdalnie hosta to z tego samego adresu IP będziemy robić połączenie via RDP.