Blog (29)
Komentarze (1k)
Recenzje (0)

Malinowy Serwer Domowy cz. 1 - Magiczny Przycisk

@okokokMalinowy Serwer Domowy cz. 1 - Magiczny Przycisk06.02.2014 02:06

To już drugi wpis z serii o domowym malinowym serwerze. W poprzednim opisałem jak udostępnić Raspberry w świat. W tym wpisie chciałbym opisać jak przy pomocy Raspberry uruchomić inny wyłączony komputer w sieci LAN, a później jak zrobić stronę WWW z przyciskiem służącym do tego właśnie zadania.

Poprzedni wpis wywołał falę komentarzy dotyczących bezpieczeństwa tego rozwiązania, zarówno na Facebooku, na Malinowej grupie jak i pod samym tekstem na DP. Obecnie cały przychodzący ruch sieciowy przekierowywany jest po prostu na Malinkę. Nie jest na niej uruchomiony żaden firewall. Jedyne zabezpieczenia u mnie to zmienione hasła do pi oraz root-a, a dodatkowo na porcie 80 uruchomiony jest Apache z przyciskiem do uruchamiania komputera (do tej pory niezabezpieczony). Malinowy adres był publicznie podany we wpisie, a nazwę folderu ze skryptem podałem na IRC :) Nikt nie włączył mi w nocy komputera, w ogóle nikt poza mną go nie włączył przy pomocy tego skryptu mimo że kilka osób podziwiało przycisk :) Ludzie to są lenie, żeby nawet do crona nie dodać http://dom.olo-web.eu/wake/wake.php (przycisk jest pod http://dom.olo-web.eu/wake/, skrypt po prostu uruchamia kompa)... Kilka osób zarzuciło mi przekierowanie całości ruchu zamiast poszczególnych portów - firewall będzie, VPN też będzie. Na routery domowe (bo i głosy o tym że są one niebezpieczne i dzuuurawe się pojawiły, z czym się oczywiście zgadzam) niestety wpływu nie mam, wolnej karty WiFi na USB niestety też nie. Być może kupię i opisze jak zrobić router, choć tych opisów na necie pewnie trochę jest, ale zawsze można coś dodać - np. sniffowanie ruchu :)

1. Wake On Lan

1.0. Ale jak to wyłączony?

Od czasu powstania płyt głównych typu ATX, komputer nigdy nie jest całkowicie wyłączony. Po jego wyłączeniu pracuje zasilacz dostarczając jedno z napięć (5V), co umożliwia czuwanie niektórym elementom komputera. Włączenie komputera polega na wysłaniu sygnału do zasilacza, że ma zacząć dostarczać wszystkie napięcia do wszystkich elementów komputera. Takim sygnałem może być wciśnięcie przycisku "Power" na obudowie komputera, przerwanie wygenerowane modemem, zegar (jeśli ustawiliśmy taką opcję w BIOS), czy też odbiór specjalnego pakietu (Magic Packet) przez kartę sieciową. [ten akapit ukradłem z Wikipedii, proszę nie bijcie]

Większość dostępnych na rynku płyt głównych ze zintegrowaną kartą sieciową Ethernet wspiera mechanizm Wake On Lan. Sam WOL działa jedynie w sieciach Ethernet. Istnieje co prawda podobny standard dla sieci bezprzewodowych - Wake On WLAN, jednak nie jest on tak popularny. Praktycznie to nie spotkałem żadnego urządzenia wspierającego WOWLAN.

Działanie Wake On Lan polega właśnie na wysłaniu specjalnego magicznego pakietu. Pakiet (a w sumie to ramka bo karta sieciowa nie interpretuje formatu pakietu, segmentu ani PDU warstwy aplikacji) musi zawierać gdzieś w polu danych ciąg 6 powtarzających się bajtów 0xFF, a następnie 16 razy powtórzony adres MAC karty która ma być wybudzona. Pakiet ten jest broadcastowany - wysyłany na adres rozgłoszeniowy w warstwie łącza danych (MAC FF:FF:FF:FF:FF:FF) jak również w warstwie sieciowej (adres rozgłoszeniowy danej sieci). Ramka ta najczęściej zawiera w sobie pakiet IP zawierający z kolei datagram UDP wysyłany na port 7 lub 9. Może to też być ramka Ethernet z identyfikatorem następnego protokołu ustawionym na 0x0842. W obu przypadkach w polu danych zawarty jest ten sam wzór bitów.

Wysłanie magicznego pakietu możliwe jest także przez Internety, jednak w większości przypadków routery odrzucają ruch broadcastowy więc muszą być do tego specjalnie skonfigurowane. Potrzebna również może być publiczna adresacja albo konfiguracja przekierowania.

U mnie magiczny pakiet nadawany jest przez Malinkę w sieci lokalnej, więc ten problem odpada.

1.1. Ustawienia BIOS-u i Windowsa

WOL najczęściej jest w BIOS-ie domyślnie wyłączony i trzeba go włączyć. Opcja ta może mieć nazwę WOL, Wake On Lan, lub coś związanego z PCI-E. Może znajdować się w zakładce Power, Power Management lub Boot. Polecam poszukać w Google, podając konkretny model płyty głównej. U mnie - na Asusie M5A78L-M/USB3 w BIOS-ie opcja ta jest domyślnie włączona i nie można jej nawet wyłączyć :)

Kolejna sprawa to konfiguracja samej karty sieciowej, a robi się to w ustawieniach sterownika w systemie operacyjnym - u mnie pod Windowsem:

1. Wchodzimy w Panel sterowania ->Połączenia sieciowe ->Właściwości połączenia lokalnego (u mnie Ethernet) ->Konfiguracja (pod modelem karty sieciowej) ->Zaawansowane -> Coś związanego z Magic Packet/Magicznym pakietem -> pole Wartość ustawiamy na włączone.

2. Dalej będąc we zaawansowanej konfiguracji urządzenia (karty) przechodzimy do zakładki Zarządzanie energią i zaznaczamy opcje Zezwalaj temu urządzeniu na wznowienie pracy komputera oraz Zezwalaj tylko pakietowi Magic na wznowienie pracy komputera, zapisujemy zmiany i wychodzimy z ustawień karty.

Po tych zmianach, po wyłączeniu komputera, powinniśmy już mieć możliwość jego zdalnego uruchamiania przy pomocy magicznego pakietu.

1.10. Pierwsze próby

Na Wikipedii Debiana (https://wiki.debian.org/WakeOnLan) znalazłem 2 narzędzia nadające w sieci magiczny pakiet - etherwake i wakeonlan. Pierwszy z nich nadaje pakiet TCP i wymaga uprawnień roota, drugi nadaje pakiet UDP i może być użyty zarówno przez roota jak i przez zwykłego użytkownika. Drugi program ma także więcej opcji konfiguracji oraz informuje nas o tym co robi. Ze względu na to że polecenie będzie wywoływane przez skrypt PHP, a prawidłowa konfiguracja sudo to tylko dodatkowe zamieszanie, proponuję wykorzystać wakeonlan.

Program instalujemy na Raspbianie przy pomocy tych poleceń:

sudo apt-get update
sudo apt-get -y install wakeonlan

A następnie uruchamiamy komputer w ten sposób:

wakeonlan ADRES_MAC

ADRES_MAC oczywiście zastępujemy adresem MAC PC-ta w formacie aa:bb:cc:dd:ee:ff.

1.11. Magiczny przycisk

Sam skrypt uruchamiający jest bardzo prosty - wywołuje 3 razy powyższe polecenie. 3 razy bo... tak :)

<?php
$adres_mac = 'aa:bb:cc:dd:ee:ff';
exec('wakeonlan ' . $adres_mac);
exec('wakeonlan ' . $adres_mac);
exec('wakeonlan ' . $adres_mac);
?>

Button natomiast ukradłem stąd http://www.hongkiat.com/blog/css3-on-off-button/. Pasuje, prawda? Trochę go przerobiłem - tak aby AJAX-em wywoływał skrypt wake.php, był 2x większy, blokował się po wciśnięciu oraz wywaliłem światełko - jakoś mi przeszkadzało.

Obecnie wygląda to tak:

Instalacja przycisku:

sudo apt-get update
sudo apt-get -y install apache2 php5

cd /var/www
sudo chown pi:pi /var/www
sudo chown pi:pi /var/www/index.html

wget http://proste.to/pliki/wake.zip
unzip wake.zip
rm wake.zip

Apache, bo instaluje się go szybko i bardzo prosto. Jeśli ktoś jest zainteresowany postawieniem na Malince czegoś więcej niż przycisku to polecam świetną serię LukasAMD na temat Nginx, PHP (z FPM) i MariaDB. Link tutaj: http://www.dobreprogramy.pl/lukasamd/LNMP-Czesc-1-Wstep-i-repozytoria,.... Repozytoria opisane w pierwszej części serii Lukasa wspiera jedynie architektury i386 i amd64 więc na Malinie nie zadziałają, ale pakiety Nginx i PHP-FPM są dostępne w standardowym repo Raspbiana.

Wracając do tematu, teraz przycisk powinien już działać i choć każdy ma do niego dostęp, to na pewno nikt go nie użyje (wciąż czekam).

1.100. Zbędne zabezpieczenia

Zanim nie będzie VPN ani firewalla możemy na szybko zabezpieczyć dostęp do folderu wake przy pomocy pliku .htaccess. .htaccess umożliwia nadpisanie ustawienia Apache dla danego katalogu. Oczywiście nie są to wszystkie ustawienia i dotyczą zazwyczaj jedynie dostępu do witryny lub przekierowań (mod_rewrite).

1.100.0. Dostęp jedynie z określonego zakresu adresów IP

W tym przypadku dostęp do przycisku będzie możliwy jedynie z sieci lokalnej - będzie to przydatne do konfiguracji z siecią VPN jeśli zdecydujemy się wypuścić Apache "na świat". Wystarczy że do pliku /var/www/wake/.htaccess zapiszemy 3 linie:

nano /var/www/wake/.htaccess

Order Deny,Allow
Deny from all
Allow from 192.168.0.0/255.255.255.0

Z edytora nano wychodzimy wciskając CTRL+C, y, enter. Oczywiście zamiast 192.168.0.0/255.255.255.0 podajemy swoją podsieć i jej maskę.

1.100.1. Dostęp na login i hasło

Poprzedni sposób będzie dobrym rozwiązaniem dla konfiguracji z VPN, ale obecnie nie ma zbyt sensownego zastosowania. Zamiast tego można wykorzystać bazę loginów i haseł i umożliwić dostęp jedynie zalogowanym użytkownikom.

Do pliku .htaccess, podobnie jak poprzednio wstawiamy:

nano /var/www/wake/.htaccess

AuthName "Niepotrzebne zabezpieczenie"
AuthType Basic
AuthUserFile /var/www/wake/.htpasswd
Require valid-user

Oraz tworzymy bazę i jednocześnie dodajemy do niej użytkownika:

htpasswd -cb /var/www/wake/.htpasswd dp tajne_haslo

dp to login, a tajne_haslo to oczywiście hasło.

Kolejnych użytkowników dodajemy w podobny sposób (bez parametru c - create):

htpasswd -b /var/www/wake/.htpasswd dp tajne_haslo

1.100.10. Aktywacja .htaccess

Aby plik .htaccess był wczytywany i zmiany zadziałały musimy jeszcze zmienić 1 opcje w pliku konfiguracyjnym Apache (konkretnie to domyślnego vhosta):

nano /etc/apache2/sites-enabled/000-default

Odnajdujemy fragment:

<Directory /var/www/>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>

I zamieniamy w nim linię AllowOverride None, na AllowOverride All, a następnie restartujemy Apache:

sudo service apache2 restart
Kucykowy serwer :)
Kucykowy serwer :)

Kucykowy serwer :)

CIĄG DALSZY NASTĄPI

W następnej części VPN lub iptables, a może jedno i drugie.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.