Zdalne odpalanie hosta.

12 grudnia, 2024 0 przez rogaleskoo

Czasem 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.