Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Do czego może służyć serwer domowy?

Witam.

Kilka miesięcy temu zakupiłem stary terminal Neoware CA10, od tego czasu postawiłem na nim kilka ciekawych rzeczy które opiszę Wam w tym wpisie.

Na wstępie jeszcze podam Wam specyfikację na której całość działa:

Procesor: VIA Nehemiah @ 1.0 GHZ (2000 bogomips) Pamięć ram: 128 mb DDRI 266 mhz (do 1024 mb maksymalnie, dwa sloty) Zintegrowana pamięć flash: 32 mb Gniazda USB: 4 x USB 2.0 (możliwość bootowania z USB) Karta muzyczna: Zintegrowana Karta graficzna: VIA Technologies, Inc. VT8623 [Apollo CLE266] integrated CastleRock graphics (rev 03) Karta sieciowa: 10/100 mbit/s VIA VT6102 [Rhine-II] (rev 74) Pobór prądu: Do. 20Watt System operacyjny: Debian GNU/Linux 7 "Wheezy" Dysk twardy: Z interfejsem ATA na USB 20 GB

1. Status wszystkich komputerów w sieci

Każdy komputer w Mojej sieci wysyła do serwera dane tego typu: - uptime - średnie użycie procesora - użycie pamięci RAM - listę podłączonego sprzętu (na płycie, pod USB, PCI, ISA, ATA, SATA itp.) - użycie dysku twardego - informacje o napięciach jeżeli dostępne - informacje o wentylatorach jeśli dostępne

Dzięki czemu mam możliwość monitorowania czy przykładowo jakiś komputer zbyt bardzo się nie grzeje - jeśli widzę, że średnie użycie procesora jest za duże to loguję się przez ssh do tego komputera i sprawdzam co jest grane i jak to można poprawić.

2. Automatyczne analizowanie wysyłanych logów

Każdy komputer ma w crontabie (zaplanowaych zadaniach) ustawione automatyczne skanowanie szukające rootkitów (chkrootkit), log jest wysyłany na serwer - a tam serwer go analizuje i wysyła maila bądź wiadomość na Jabbera o występującym problemie.

#!/bin/bash chkrootkit > /tmp/rk su webnull -c "screen -DmS /usr/moj-skrypt/send-log http://moj-masterserver/odbierz-log.php?id=`cat /identyfikator-komputera` rk /tmp/rk"

Wysyłam także wyjście z polecenia "last" i szukam tam adresów IP zewnętrznych które logowały się do SSH aby móc wykryć potencjalnego intruza któremu udało się dostać do systemu, a także zbieram informacje o nieoczekiwanym wyłączeniu systemu np. z powodu braku pamięci RAM (często twardy reset jeżeli swapu nie ma, w 50% przypadków da się wyratować system zabijając proces zjadający pamięć - można to zrobić z SSH chyba najlepiej nie powodując jeszcze większego użycia pamięci).

Mam możliwość także przeglądania logów przez przeglądarkę wraz z archiwum, całość dostępna jest tylko dla Mnie, nikt inny nie posiada uprawnień do przeglądania logów.

3. Statystyka, czyli bawimy się w wielkiego brata

Oprócz analizowania logów i wysyłania statusu można także wysyłać różne skany sieciowe przykładowo skan okolicznych sieci bezprzewodowych który uwzględnia adres MAC(główny identyfikator), nazwę sieci, typ zabezpieczenia, kanał itp.

Po zintegrowaniu takiego skanera z GPS można utworzyć mapę punktów dostępowych WiFI.

Ja jednak aktualnie nie posiadam GPS, planuję zakupić jakiś na wejście USB bądź Compact Flash.

4. Bezpieczeństwo, czyli jak to działa?

Komunikacja pomiędzy komputerem a serwerem jest szyfrowana algorytmem AES 256 bitowym.

Serwer i klient posiadają wspólne klucze szyfrujące (każdy klient ma osobny klucz).

Klucze mają często więcej niż 1024 znaki.

Przed zdublowaniem zesniffowanej wiadomości (wysyłamy wiadomość np. o statusie komputera/systemu do serwera a ktoś ją przechwytuje - nie może rozszyfrować ale może ponownie wysłać do serwera aby nadpisać wcześniejsze dane) broni umieszczony wewnątrz timestamp oraz sprawdzanie sumy kontrolnej wiadomości przez serwer.

5. Aktualizacja, czyli jak obsługiwać wszystko z automatu

Postawiłem serwer rsync który służy do synchronizacji danych pomiędzy klientem a serwerem.

Klient codziennie łączy się z serwerem rsync i sprawdza czy któryś z plików lokalnych potrzebuje aktualizacji, jeżeli tak to pobiera nową wersję z serwera.

#!/bin/bash if ! ping -c 1 -w 2 oneill &>/dev/null ; then echo "Master is offline." else rsync rsync://oneill/aplikacja -avs /usr/share/katalog-aplikacji fi

receiving incremental file list sent 25 bytes received 181 bytes 137.33 bytes/sec total size is 69332 speedup is 336.56

Podsumowanie

Mały, serwer domowy z niskim poborem prądu jest bardzo przydatny, odwala za Nas całą robotę administracyjną nad większością komputerów w domu.

Wyjątkiem są komputery z systemem Microsoft Windows które stawiają ogromne problemy podczas wdrażania opisanych tutaj rzeczy.

W systemach Windows(R) brakuje odpowiednich narzędzi pod kosnolę takich jak rsync, brakuje bibliotek w Pythonie które zapewniłyby łatwy dostęp do WIFI, program w którym planuje się zadania potrafi nie uruchomić zadania co się zdarza bardzo często na jednym z komputerów z Windows 7 Home Premium.

Ogólnie to system Windows jest bardzo sztywnym systemem nie przystosowanym do tego typu zastosowań, jego użycie zostało przewidziane przez producenta - jeśli jednak chcemy wyjechać poza ten obszar zastosowania to zaczynają się schody.

W systemach Uniksowych udało Mi się wdrożyć coś takiego najmniejszym nakładem pracy pisząc to w Bashu, Pythonie i PHP, pod Windows musiałbym przepisać większość w jakimś języku kompilowanym aby to sprawnie działało.

Proszę nie mówić, że systemy Uniksowe muszą nadganiać Windows, bo Moim zdaniem jest na odwrót.

Udało Mi się wdrożyć częściowo wysyłanie informacji o systemie na komputerach z Windows, lecz nie jest to prefekcyjne - w Windows panuje kodowanie windows-1250 dlatego kiepsko to wygląda.

Nie udało Mi się wdrożyć skanowania sieci WIFI, automatycznego wysyłania logów.

Dlaczego nie udało Mi się wdrożyć wysyłania logów?

- Odpowiedź jest prosta; Windows nie posiada odpowiednich narzędzi które by potrafiły generować logi tekstowe bez użycia GUI (automatycznie w tle) 

Komentarze

0 nowych
XeonBloomfield   5 #1 02.04.2011 13:30

Prosto i na temat.... To lubię...

"Automatyczne analizowanie wysyłanych logów" ciekawe rozwiązanie.

webnull   9 #2 02.04.2011 13:31

@XeonBloomfield
Do tego wysyłanie powiadomień na Jabbera ; -)

webnull   9 #3 02.04.2011 13:39

(13:37:20) oneill/oneill: parse-chkrootkit: Skan zakończony na komputerze webnull-desktop (192.168.1.102)
Zainfekowane pliki: Brak

PS. Ale godzina, całkowicie przypadkowo trafiłem, ale jest 13:37 :P

  #4 02.04.2011 16:51

Chociaż używam Windowsa, to takie zastosowanie jest dla mnie dosyć interesujące, sam myślę o złożeniu jakiegoś taniego serwerka i obsługiwaniu z niego komputerów domowych.
Właśnie... patrząc się na wszystkie opisane tu funkcje zaczynam się zastanawiać: czy to oby na pewno jest "serwer domowy"? Czy na pewno jest nam potrzebna taka kontrola? Mam pod sobą 4 komputery w domu, wszystkie na Windowsie i nie zarządzam nimi z jednego miejsce, nie zbieram tylu danych, a mimo to nie ma z nimi praktycznie żadnych problemów (co najwyżej typu: "ten film mi nie działa" przy formacie rmvb).

  #5 02.04.2011 16:54

Aha, napisałem że problemów nie mam, więc mogą dziwić moje plany zakupu - wydaje się bez sensu, no nie? Chciałbym to zrobić aby nieco się właśnie poużywać Linuksa w praktyce, na stacji roboczej u mnie się nie sprawdził, może z serwerem będzie inaczej.

webnull   9 #6 02.04.2011 16:57

@lukasamd
Ja dzisiaj wprowadziłem powiadamienia po Jabberze.
Jeżeli zostanie wykryty jakiś rootkit w którymś z komputerów wiem o tym od razu.
Tak samo jak ktoś zaloguje się z zewnątrz przez SSH na któryś z lokalnych komputerów to będę o tym wiedzieć natychmiast.

Planuję dodać jeszcze obsługę powiadamiania i automatycznego blokowania adresów IP które spamują na serwerze WWW.
Blokuję narazie ręcznie takie adresy po IPTables, ale mógłbym wprowadzić trochę automatyki.

Wiesz... różnimy się na pewno, ja przykładowo naciskam na bezpieczeństwo i do tego lubię gadżety.
Mogę szczerze powiedzieć Ci, że hasło do mojej sieci WiFi ma więcej niż 30 znaków tak dla ciekawostki.

webnull   9 #7 02.04.2011 17:00

@lukasamd

(16:21:05) oneill/oneill: ==== ONEILL ====
Ostatnie logowania do webnull-desktop (192.xx.xx.xx):
192.xx.xx.xx
192.xx.xx.xx
192.xx.xx.xx
84.xx.xx.87
==================
Z zewnątrz: 1
Z sieci LAN: 3

Tak wygląda powiadomienie wysłane do Mnie na Jabbera, zostanie wysłane tylko wtedy jeżeli ktoś się podłączy do serwera lub dowolnego komputera domowego z zewnątrz.

webnull   9 #8 02.04.2011 17:02

@lukasamd
"Chciałbym to zrobić aby nieco się właśnie poużywać Linuksa w praktyce, na stacji roboczej u mnie się nie sprawdził, może z serwerem będzie inaczej."

Ja akurat mam całkowicie odwrotnie, jak przychodzi mi grzebać przy komputerze z Windows to dostaję nerwicy, tu to nie działa jak trzeba, tego się nie da, to się bez potrzeby włącza itp.

BenderBendingRodriguez   6 #9 02.04.2011 17:22

@webnull

Co do ssh to nie byłoby dobrym rozwiązaniem zainstalowanie fwknop :)?? Port byłby cały czas zamknięty poki się nie wyśle odpowiedniego pakietu :) Albo denyhosts dla ataków bruteforce (ja osobiście nie miałem ataków z tym że ssh u mnie chodzi na porcie wyższym niż 30000).

Podoba mi się to co zrobiłeś, pełna automatyzacja i tylko kawkę popijać :D

4lpha   9 #10 02.04.2011 18:02

Za niedługo mój ojciec kupuje nowy komputer. Podsunąłeś mi świetny pomysł, jak wykorzystać stary.
Doskonale.

Świetny wpis.

  #11 02.04.2011 18:59

@webnull:
"Ja akurat mam całkowicie odwrotnie, jak przychodzi mi grzebać przy komputerze z Windows to dostaję nerwicy, tu to nie działa jak trzeba, tego się nie da, to się bez potrzeby włącza itp."

Nie no wiadomo, każdy woli to co jemu bardziej pasuje, u mnie rozbijało się o detale i przyzwyczajenia z Windowsa, dlatego rezygnowałem po jakimś czasie z każdej dystrybucji za jaką się brałem (przyzwyczajenia raczej nie do przeskoczenia dodam).

W tym zastosowaniu "domowym" to widziałbym raczej jakieś dodatkowe udostępnianie urządzeń, video, muzyki itp. Wszystko jednak zależy od użytkowników - u mnie 2 komputery są użytkowane przez typowych "ZU", więc niemal nic nie jest potrzebne, może dlatego spojrzałem (niesłusznie) w tak wąskim zastosowaniu.

webnull   9 #12 02.04.2011 19:26

@lukasamd
"W tym zastosowaniu "domowym" to widziałbym raczej jakieś dodatkowe udostępnianie urządzeń, video, muzyki itp. Wszystko jednak zależy od użytkowników - u mnie 2 komputery są użytkowane przez typowych "ZU", więc niemal nic nie jest potrzebne, może dlatego spojrzałem (niesłusznie) w tak wąskim zastosowaniu."

Ja dla ZU będę prowadzić prywatnie w domu usługi przykładowo możliwość śledzenia aukcji Allegro/Ebay z powiadomieniami na Jabbera czy wygodna strona startowa z czytnikiem RSS i jakimiś bajerami dostosowanymi do konkretnego usera.

  #13 02.04.2011 20:49

Również posiadam Nehemiaha, choć nieco wyżej taktowanego (1200 MHz) i na lepszej płycie głównej (VIA EPIA MII 12000G). Maszyna posiada 1 GB pamięci RAM oraz dysk twardy 750 GB.
Istnieją ciekawsze zastosowania takiej maszyny, jak udostępnianie plików i drukarek, serwer bazodanowy, serwer WWW. Można się także pokusić o jakiś VPN.
Na czymś takim można zainstalować oprogramowanie wspomagające pracę grupową, do zarządzania projektem, taskami, issue/bug tracker, build server, dashboard, forum, wiki, itd.
Ogólnie co kto lubi.

Re: "W systemach Windows(R) brakuje odpowiednich narzędzi pod kosnolę takich jak rsync".
http://cygwin.com/cgi-bin2/package-cat.cgi?file=rsync/rsync-3.0.7-1&grep=rsync
W Debianie testing/unstable znajdziej identyczną wersję.

Nie za bardzo widzę sens stosowania rsync. Do czego to ma właściwie służyć?
Nie lepiej używać sieciowych systemów plików (NFS, SMB) oraz rozproszonych systemów kontroli wersji (Mercurial Hg, Git)?
Pod Windows bardzo ładnie można zmapować dysk sieciowy, a dzięki TortoiseSVN/TortoiseHg/TortoiseGit praca z systemami kontroli wersji również jest przyjemna.

Ogólnie mam wrażenie, że skupiasz się na rzeczach niszowych i skrajnie nieprzydatnych.

mati75   6 #14 02.04.2011 21:21

Czego używasz do statusu?

Shaki81 MODERATOR BLOGA  37 #15 02.04.2011 21:40

Fajny wpis tylko pochwaliłbyś się jakich programów użyłes do stworzenia takiego serwerka.

webnull   9 #16 02.04.2011 22:18

@mati75
phpSysInfo do generowania statusu, jest nieco zmodyfikowany przeze Mnie, musiałem wiele poprawić aby działał poprawnie, najwięcej było poprawiania na maszynach z windowsem..

@Shaki81
phpSysInfo - generowanie statusu i zapisywanie do pliku .html bądź .xml
bash - w nim są pisane pliki skryptowe
cron/fcron - wykonuje skrypty o danych porach oraz w danych odstępach czasowych
python/php - języki skryptowe w których napisana jest komunikacja klient-serwer z szyfrowaniem
last - z pakietu standardowych narzędzi Linuksowych
chkrootkit - "wykrywacz rootkitów" dla systemów Uniksowych

webnull   9 #17 02.04.2011 22:19

@Shaki81
Zapomniałem jeszcze o autorskim wconfig do skanowania sieci WiFi z opcją outputu w XML.

Ogólnie to większość jest autorska, więc nie wiem co mogę podać Ci za programy, jak już powiedziałem - bash, php, python ; -)

  #18 02.04.2011 23:05

@webnull
Re: "Tak wygląda powiadomienie wysłane do _Mnie_ na Jabbera"
"phpSysInfo do generowania statusu, jest nieco zmodyfikowany przeze _Mnie_"

Wyrzucili Cię z #gentoo-pl na freenode i teraz tutaj próbujesz się dowartościować?

webnull   9 #19 02.04.2011 23:49

@Anonim (niezalogowany) | 02.04.2011 23:05
Nigdy mnie nie wyrzucili z żadnego kanału na IRC.
Koleś, nie tutaj takie prowokacje.

4lpha   9 #20 03.04.2011 10:46

webnull, powiesz coś o swoim połączeniu LXDE z czymśtam innym? Bardzo ciekawie to wygląda. LXpannel + Fluxbox?

webnull   9 #21 03.04.2011 12:19

@sunbeam96
Od zawsze używałem LXPanel + Fluxbox, ale teraz na desktopie mam LXPanel + Openbox (Fluxboksa mam na laptopie i tablecie dlatego na desktopie musi być coś dla odmiany).

  #22 03.04.2011 13:14

Niezłe, niskie wymagania linuxa są tu plusem, ale freebsd moim zdaniem jest zdeka lepszy pod serwer, bezpieczniejszy, choć w sumie efekt końcowy wychodzi na to samo. Serwer oparty na windowsie, to no i tu pasi przyznać racie, windows na serwery się nie nadaje.

webnull   9 #23 03.04.2011 15:49

@Sławekn
Mam dostęp do shella z rootem na VPS'ie z FreeBSD przyjaciela - muszę przyznać, że FreeBSD od strony podstawowych aplikacji shellowych jest ubogi w porównaniu do Linuksa.

Szkoda Mi to mówić ale taka jest prawda, nawet porządnego topa tam nie ma, instalowanie oprogramowania wygląda jak na pół wzięte z Linuksa i Windowsa.

Czy FreeBSD bezpieczniejszy - nie wiadomo.
Do Linuksa zawsze można doinstalować AppArmor czy GRSecurity.

  #24 03.04.2011 16:10

Na jedno wychodzi efekt jest ten sam, oszczędność.

  #25 04.04.2011 00:47

@webnull
"Dlaczego nie udało Mi się wdrożyć wysyłania logów?
- Odpowiedź jest prosta; Windows nie posiada odpowiednich narzędzi które by potrafiły generować logi tekstowe bez użycia GUI (automatycznie w tle) "
A tam od razu nie posiada. Zainstaluj sobie powershell, i napisz odpowiednie skrypty(przy zapisie do pliku użyj out-file z -encoding ascii, co zapewni że nie będzie problemów z odczytem pod linuchem) i nie trzeba niczego kompilować:)
Co do skanowania wifi, to jeżeli są to windy od Visty wzwyż można to zrobić przez narzędzie "net". I oczywiście jest rsync na windę(i w cale nie mam na myśli tego z cygwina).

  #26 04.04.2011 08:21

Status wszystkich komputerów w sieci, co to jest za narzędzie?
Czy mogę się tego dowiedzieć?

Mój jabber michal.poplawski@jabber.agnat.pl

  #27 04.04.2011 10:28

@Michał.P
jest taki fajny projekt Spacewalk, niestety głównie dla dystrybucji opartych o Red Hat'a i Novell'a(opierają się na nim komercyjne Red Hat Satellite i Suse Manager), który ułatwia zarządzanie. Można też go używać na Debianie ale jeszcze nie działa to tak jak powinno.

StawikPiast   10 #28 04.04.2011 16:54

@Webnull

Widze ze ty nadal sie nie uczysz.
Pamietaj ze jesli ty nie umiesz czegos w Windows zrobic, to nie znaczy ze tego nie ma. Tak sie sklada ze akurat narzedzia do monitorowania Windows sa bardzo mocno rozbudowane i to co tutaj opisales to generalnie pikus.

No i do tego takie rozwiazania sa jak najbardziej fajne, ale w firmach, w domach to troche przerost formy nad trescia moim zdaniem. W domu to bardziej backup danych, rozdzielenie lacza z balancingiem, przechowywanie plikow, dostep dla urzadzen zewnetrznych jak telewizory itp, ewentualnie dbanie o aktualizacje antywirusa czy WU.

webnull   9 #29 04.04.2011 16:58

@StawikPiast
A ja widzę, że ty nadal trolujesz - skończ.

Wymień te "cudowne" narzędzia.

4lpha   9 #30 04.04.2011 19:35

Menedżer zadań systemu Windows ;)

  #31 04.04.2011 22:20

Polecam się zainteresować programem munin - robi większość rzeczy opisanych jako "Status wszystkich komputerów w sieci", oszczędziłoby to naprawdę sporo czasu poświęconego na pisane własnych skryptów.

Trzymanie starego desktopa jako serwer niestety odbija się wyraźnie na liczniku prądu - niechby brał tylko 100W, i tak się zbiorą 72kWh/miesiąc. A to kosztuje jakieś 40 złotych/miesiąc

  #32 05.04.2011 00:15

@tjp2 (niezalogowany) | 04.04.2011 22:20 #31
"Trzymanie starego desktopa jako serwer niestety odbija się wyraźnie na liczniku prądu - niechby brał tylko 100W, i tak się zbiorą 72kWh/miesiąc. A to kosztuje jakieś 40 złotych/miesiąc"

100 W to może pobierać PC z Core 2 Quad.
Stary komputer z procesorem Pentium III pobiera około 50-60 W.
Opisany tutaj sprzęt jest wyposażony w procesor VIA C3 (Nehemiah) 1 GHz.
Taki sprzęt w zależności od innych komponentów (szczególnie dysku twardego) może pobierać około 15-30 W.
Bez większych problemów można kupić komputer PC (x86), który będzie pobierał 10 W podczas takiej pracy.
http://support.apple.com/kb/HT3468?viewlocale=pl_PL&locale=pl_PL

  #33 05.04.2011 00:48

@StawikPiast
Jest tylko jeden mały problem, webnull chce tym zarządzać spod linucha a nie spod windy. Gdyby miał tymi windowsami zarządzać spod innej windy to nie było najmniejszej sprawy.

Pozdrawiam

ps. w pierwszym poście teraz zauważyłem błąd, miało być netsh a nie net

StawikPiast   10 #34 05.04.2011 13:53

@maxiu77

jesli Webnull nie ma o czyms pojecia to niech nie pisze ze nie mozna. Chce tym zarzadzac spod linuxa? Co za problem, jak zwykle kwestia narzedzi. Te gotowe sa glownie dla Windows server :)

@webnull

Sprawdz klase WMI w systemach windows i zobacz ile tam masz juz gotowych fajnych statystyk, naturalnie mozesz sie do tego podpiac zdalnie, co wykozystuja np narzedzia system center (strasznie rozbudowane narzedzia do zarzadzania tysiacami czy dziesiatkami tysiecy desktopow) ale i inne narzedzia pisane dla windows. Generalnie to dosc popularna klasa jesli chcesz cos wyciagnac z systemu.

http://msdn.microsoft.com/en-us/library/aa394554(v=vs.85).aspx

  #35 05.04.2011 15:34

@StawikPiast
Ale ja to wiem:) na co dzień nie mam z tym problemu bo administruje zarówno systemami linux jak i windows(oczywiście wykorzystując komercyjne produkty).
Niestety jak coś trzeba zrobić samemu to zaczynają się schody. Najlepiej było by wykorzystać w tym celu mono ale niestety wmi jest jeszcze nie wspierane(i raczej na razie nie będzie). Do domu w zupełności powinien wystarczyć wmi-client oparty o pythona http://dev.zenoss.org/svn/trunk/inst/externallibs/

  #36 05.04.2011 15:37

@StawikPiast
Ale ja to wiem:) na co dzień nie mam z tym problemu bo administruje zarówno systemami linux jak i windows(oczywiście wykorzystując komercyjne produkty).
Niestety jak coś trzeba zrobić samemu to zaczynają się schody. Najlepiej było by wykorzystać w tym celu mono ale niestety wmi jest jeszcze nie wspierane(i raczej na razie nie będzie). Do domu w zupełności powinien wystarczyć wmi-client oparty o pythona http://dev.zenoss.org/svn/trunk/inst/externallibs/

  #37 06.04.2011 07:20

Istnieje takie cudo jak Scriptomatic, które potrafi wygenerować skrypty w JScript, Perl, Python i VBScript.

  #39 25.05.2013 18:47

teraz jest raspbery pi. pobieram ~3wat