neděle 28. prosince 2014

Monitorování mobilní sítě aplikací CellShark

K monitorování mobilních sítí slouží celá řada aplikací. Dnes si představíme CellShark. Jde o aplikaci pro telefony Nokia se systémy Symbian S60 5th Edition a novější Belle. Článek popisuje aplikaci na mobilním telefonu Nokia N8.

CellShark podporuje jak GSM, tak i sítě 3G (UMTS). Typ sítě do které je telefon právě připojen je indikován položkou Current Mode která ukazuje GSM nebo WCDMA (což je označení přístupové metody sítě UMTS). Dále položka Connection ukazuje stav připojení. V případě dostatečného signálu je zobrazuje OK, v případě slabého nebo žádného signálu se zobrazí No Network. V třetím řádku je možné pomocí Network Status zjistiti zda jsme v domácí síti (Home Network) nebo v zahraničí (Roaming Network).

V další části obrazovky se zobrazuje CGI buňky ke které jsme právě připojení. CGI znamená Cell Global Identity a jde o celosvětové číselné označení buňky mobilní sítě. CellShark zobrazuje CGI ve formátu MCCMNC-LAC-CI.

CGI se skládá z:
  • MCC (Mobile Country Code) - kód země (ČR má 230, celosvětový seznam např. zde)
  • MNC (Mobile Network Code) - kód operátora (na obrázku je 02, což je kód pro O2)
  • LAC (Local Area Code) - kód místní oblasti. Jsme v oblasti s číslem 1823.
  • CI (Cell Identity) - identifikace buňky (BTS, resp, sektor na BTS, zde 50098)
Zde se zastavíme u funkce, která umožňuje upozornění pokud se telefon připojí na konkrétní buňku. Pokud klikneme na tlačítko CGI dojde k nastavení na buňku ke které jsme nyní připojeni a zároveň zčervená bílé pole níže. Další možností je, že do tohoto bílého pole můžeme manuálně napsat buňku na kterou chceme být upozornění, pokud se k ní telefon připojí. Vepíšeme tedy plné CGI do bílého pole a zvolíme Alert On CGI. Pokud se na zvolenou buňku připojíme, oznámí to CellShark zvukovým signálem a pole taktéž zčervená. Pokud k zvolené buňce nejsme připojeni, CellShar stále hledá a pole se změní na šedou. Vedle se zobrazuje Searching... 

Dlouhá horizontální lišta slouží k zobrazení síly signálu který je přijímán mobilní stanicí. Pro jednoduché určení kvality je zde hodnota v procentech, ale daleko zajímavější je přímo výkon v dBm což je hodnota v dB, která je vztažená k výkonu 1 mW. Zjednodušeně řečeno, čím více se hodnota dBm blíží nule, tím líp. Vedle hodnoty v dBm je pak pro doplnění znovu LAC a CI v hexadecimálním tvaru.

Následuje počítadlo handoverů (Total Handovers). Handover je událost, kdy dojde k přepnutí z jedné buňky na druhou vlivem změny v podmínkách příjmu mobilní stanice. V síti GSM je druh handoveru řízený sítí s pomocí mobilní stanice. Jde o poměrně složitou proceduru, nicméně nejčastěji dojde k handoveru při pohybu mobilní stanice, kdy síť vyhodnotí signál ze stávající buňky jako nedostatečný (zhoršení kvality) a rozhodne se k handoveru. Počítadlo Total "No Networks" pak ukazuje kolikrát došlo k úplnému výpadku signálu.

V dolní části obrazovky lze přepínat mezi třemi záložkami. První je Graph který ukazuje průběh úrovně signálu v posledních dvou minutách (viz obrázek výše). Červená vertikální čára ukazuje, kdy případně došlo k handoveru. Světle zelený průběh značí UMTS (3G) a zmavě zelený GSM (2G).

Další je Stats
kde nalezneme záznam navštívených buněk v minulosti. První sloupec je CGI, druhý kolikrát byla tato buňka navštívena, třetí jaký čas jsme strávili v této buňce (údaj v sekundách) a poslední je úroveň signálu v  %. Z nějakého důvodu se nezobrazují popisky tabulky.

Třetí záložka je History
na které lze prohlížet, podobně jako ve Stats, již navštívené buňky, akorát s trochu jinými parametry. První sloupec je čas prvního navštívení buňky, druhý je CGI, třetí typ sítě 2G nebo 3G a poslední čas strávený v buňce (v sekundách).

Příjemnou funkcí je, že lze obsah záložek Stats i History vyexportovat do textového souboru a lze tak data dále zpracovávat. Na závěr je dobré připomenout že díky Keep Awake je možné nechat aplikaci běžet na pozadí a pomocí Sound vypnout nebo zapnout zvuky aplikace (odpojení/připojení k buňce).

sobota 13. prosince 2014

Synchronizovaný čas z NTP serverů na přepínači TP-LINK TL-SG3210

Pro zjištění přesného času počítačů a jiných zařízení připojených do internetu se používá protokol NTP. Zjednodušeně řečeno, koncové zařízení se průběžne dotazuje NTP serveru v internetu a podle přijatých dat upravuje svoje vlastní hodiny. Při návrhu protokolu se počítalo i s proměnlivým zpožděním napříč internetem.

Na přepínači TP-LINK TL-SG3210 jsou z výroby přednastaveny IP adresy na NTP servery v Asii. Kvůli menšímu zpoždění při přenosu a hlavně pro přesnější čas změníme tyto adresy na české NTP servery.

Nejpre je potřeba vypnit výchozí bránu, kterou přepínač použije pro komunikaci s internetem. Nastavení se nachází v
System > System Info > System IP
zde vyplníme položku Default Gateway. Mělo by se jednat o IP adresu nebližšího směrovače na stejné podsíti kde je náš přepínač, který je schopen doručit pakety do intenetu.

Nyní přejdeme na nastavení času (viz obrázek níže):
System > System Info > System time

Nastavení času v záložce System time.
v části Time Config vybereme Get GTM. A dále Time Zone na GTM +01:00. Jako NTP servery využijeme ntp.nic.cz a ntp.muni.cz. Druhý jmenovaný je v provozu již delší dobu a směřuje na něj více dotazů, proto jej využijeme jako záložní. Server od CZ.NIC bude primární.

Jelikož přepínač nemá možnost si převést doménová jména na IP adresy (protože nelze v konfiguraci zadat adresu DNS server), je nutné zadat přímo IP adresy. Pole vyplníme takto:
Primary server: 217.31.205.226
Secondary server: 147.251.4.33
(Ve web prostředí je "zajímavý" překlep, kdy místo Server je napsáno "Sever".)

Tlačítkem Refresh načteme čas. Změny uložíme tlačítlem Apply. Pro trvalé změny zvolíme Saving Config v levém menu.

Aktualizace:
  • 13.7.2015 - NTP server Cesnetu (195.113.144.201, aka. tik.cesnet.cz) se přestal hlásit (neodpovídá na ping). Na Internetu lze nalézt mnoho  českých NTP severů, ale jen zlomek funguje. Jako náhradu jsem vybral server MUNI, tak snad vydrží.

úterý 30. září 2014

Rychlá kontrola chyby v bashi, tzv. Shellshock

Velký ohlas vzbudila objevená chyba v široce používaném bash shellu, která umožňuje vzdáleně spouštět příkazy na zranitelném systému. Více zde nebo zde. Oprava je pochopitelně již na světě, nicméně pár dní trvalo, než se podařilo skutečně "díru" záplatovat.

Takže rychlí test, zda je váš systém zranitelný se dá provést v konzoli např. takto:
env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() 
{ :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
 (vše na jeden řádek)

Pokud je výsledkem
Bash is vulnerable!
Bash Test
 je potřeba systém co nejdříve aktualizovat (stáhnout poslední verzi bashe), např. takto:
apt-get update && sudo apt-get install --only-upgrade bash
 Naopak, pokud z konzole vypadne
Bash Test
máte poslední verzi, která je už opravená.

Ještě je možné se podívat do logů, zda se vás už někdo nepokusil napadnout. Stačí si projít např. log webového serveru Apache2.
grep '() {' /var/log/apache2/*
Ve výsledcích se zřejmě objeví několik záznamů, ze kterých lze vyčíst, co konkrétně dotyčný zkoušel na vašem serveru spustit. Některé "útoky" jsou neškodné (např. automatizovaný ping) ale najdou se i ty, které se snaží rovnou pustiti připravený kód. Samozřejmě vždy záleží na okolnostech, tedy útok může nebo nemusí být úspěšný podle toho co konkrétního je nebo není na serveru nainstalováno nebo povoleno. Viz odkazy na root.cz výše.

Zdroj: [1], [2]

pondělí 18. srpna 2014

Automatické přihlášení při startu Lubuntu

Úvod

Pokud např. používáte počítač sami a nevyžadujete ochranu heslem, je možné pro urychlení startu počítače zapnout automatické přihlášení uživatele a počítač tak po startu rovnou zobrazí pracovní plochu.
Logo Lubuntu (zdroj)

Postup

Postup se bude lišit, v závislosti podle toho, jakou verzi Lubuntu používáte.

 

Verze systému před 12.04

Pokud ještě používáte některou ze starých verzí, před 12.04 je potřeba následující.
Otevřeme si soubor  
/etc/lxdm/default.conf
např. v konzoli pomocí příkazu
sudo nano /etc/lxdm/default.conf
 Zde odkomentujeme řádek
# autologin=dgod
a místo "dgod" napíšeme skutečné uživatelské jméno. Výsledek tedy bude např.
 autologin=Ondra
Nyní změny v souboru uložte pomocí Ctrl+X a potvrďte zapsání. Hotovo.
Pokud chceme automatické přihlašování zrušit, zakomentujte opět řádek "autologin".

 

Verze systému od 12.04 (včetně)

Tento postup se týká všech verzí od 12.04 do současnosti, které používají jiný typ zobrazovacího manažeru.
Otevřeme si soubor
/etc/lightdm/lightdm.conf
v konzoli je to příkaz
 sudo nano /etc/lightdm/lightdm.conf
 Nyní soubor upravíme podle níže uvedené šablony.
[SeatDefaults]
autologin-user=USERNAME
autologin-user-timeout=0
user-session=Lubuntu
greeter-session=lightdm-gtk-greeter
a "USERNAME" nahradíme skutečným uživatelským jménem, takže výsledek bude např.
 [SeatDefaults]
autologin-user=Ondra
autologin-user-timeout=0
user-session=Lubuntu
greeter-session=lightdm-gtk-greeter
 Uložíme a hotovo. Při dalším zapnutí nebo restartu už počítač zobrazí přímo plochu
Pokud chceme automatické přihlašování zrušit, zakomentujte následující řádky:
# autologin-user=Ondra
# autologin-user-timeout=0

Zdroj

neděle 23. března 2014

Zabezpečené spojení HTTPS a vlastní SSL certifikát v Apache2

Úvod

Standardní spojení s webovým serverem pomocí protokolu HTTP neobsahuje prvky šifrování přenášených dat nebo ověření identity serveru z pohledu klienta. Rizikem je tedy odposlouchávání komunikace a podvržení identity serveru. Proto bylo vyvinuto rozšíření pomocí zabezpečovací vrstvy SSL popř. novější TLS, souhrnně tedy mluvíme o HTTPS (Hypertext Transfer Protocol Secure).

Na úvod je potřeba říci, že aby bylo zabezpečení uživatele kompletní, je potřeba, aby si obě strany před vzájemnou komunikací vyměnily veřejné klíče pomocí jiného kanálu, než je ten, pomocí kterého budou následně chtít (bezpečně) komunikovat. To je ale v praxi poměrně obtížné a proto se volí jiný způsob a to je přenechání  ověření pravosti klíče jinému subjektu, což je nejčastěji obecně uznávaná, důvěryhodná autorita. Ve výsledku to funguje tak, že nám server předloží digitálně podepsaný certifikát od tzv. certifikační autority a my jej porovnáme s veřejným klíčem na naší straně, resp. na našem počítači. Certifikáty od důvěryhodných certifikačních autorit jsou dodávány společně s webovými prohlížeči (za což se pochopitelně platí určitá částka), takže se k uživateli dostanou poměrně snadno a navíc je bez větších komplikacích možné ihned použít aniž by musel uživatel sám obstarávat dodání certifikátu od protistrany.
Ukázka informací o certifikátu podepsaného autorizovanou autoritou, v tomto případě GeoTrust Inc. Dále si lze povšimnout, že je uveden i skutečný provozovatel serveru (což není zas tak časté), zde konkrétně Ministerstvo vnitra.
Existuje druhý typ certifikátů, tzv self-signed, tedy certifikát podepsaný sám sebou. Takový to certifikát si může vytvořit kdokoli sám u sebe, samozřejmě zdarma. Pokud server, při zahájení komunikace předloží tento self-signed certikát, objeví se upozornění, kdy vás prohlížeč varuje že nelze ověřit věrohodnost serveru protože certifikát nebyl vydán certifikační autoritou a je jen na vás aby jste uvážili jestli protistraně důvěřujete (viz obrázek na konci článku). Pokud ano, tak většina prohlížečů umožňuje server zařadit mezi důvěryhodné a přímo certifikát stáhnout a uložit.  Při další návštěvě serveru už bude prohlížeč na server nahlížet jako na důvěryhodný (resp. za důvěryhodný ho považuje uživatel).

Nicméně je potřeba dodat, že vlastnost šifrování přenosu je stále funkční, i když není certifikát podepsaný certifikační autoritou.

Z výše uvedených důvodů je výskyt self-signed certifikátů na komerčních webech poměrně nízký a např u služeb jako je internetové bankovnictví je v podstatě nepřijatelný. Naopak u menších webů a serverů pro omezený počet uživatelů (nebo pro vlastní server určený pro testování a experimenty) je vlastní certifikát dostačující. V těchto případech je prioritou šifrování komunikace (např. zadávání hesel při přihlašování k službám). Self-signed certifikáty lze použít i při zabezpečeném FTP. Některé společnosti začali dokonce nabízet podepsané certifikáty zdarma, o tom snad v jiném článku.

Ukázka informací o self-signed certifikátu.

Instalace

Ukážeme si vytvoření vlastního certifikátu pro HTTPS spojení v Apache2 bežící na Ubuntu 12.4 LTS (stejný postup je samozřejmě možný v Debianu). Předpokladem je mít přístup k root účtu. Pokud nejste přihlášeni přes root účet, před každý příkaz dopiště sudo.

Pokud nemáme ještě webový server Apache, tak jej nyní nainstalujeme
apt-get install apache2
Dále povolíme SSL modul
a2enmod ssl
Restartujeme web server
service apache2 restart
 Pro certifikáty si vytvoříme novou složku
mkdir /etc/apache2/ssl
Vytvoříme nový pár klíčů na straně serveru a certifikát s platností jeden rok (parametr -days).
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
V konzoli následuje série údajů které můžete vyplnit. Doporučuje se vyplnit alespoň některé.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.

-----
Country Name (2 letter code) [AU]: // stát
State or Province Name (full name) [Some-State]: // provincie (okres)
Locality Name (eg, city) []: //lokalita (město)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: //název společnosti
Organizational Unit Name (eg, section) []: //název oddělení
Common Name (e.g. server FQDN or YOUR name) []:  //volitelný název (jméno)
Email Address []: //email
Nyní je potřeba nastavit Apache. Otevřeme konfig pro SSL.
nano /etc/apache2/sites-available/default-ssl
 Zde vložíme, např. pod řádek <VirtualHost _default_:443> následující řádek
ServerName nazevserveru.domena:443
nebo pokud máme jen IP adresu
ServerName  10.11.12.13:443
Dále najdeme řádek
SSLEngine on
 měl by být nezakomentovaný (bez # na začátku). Pokud tam není nebo vypadá jinak, přepište ho.

Ještě je potřeba definovat cestu ke klíčům a certifikátu:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Z důvodů bezpečnosti (POODLE útok) vypneme starší verze protokolů SSLv2 a SSLv3
SSLProtocol all -SSLv2 -SSLv3
Soubor uložte a zavřete (Crtl+X a potvrdit zapsání pomocí klávesy Y).

Na závěr ještě musíme nastavit přístup přes port 443. Povolíme Virtual Hosta default-sll
a2ensite default-ssl
 A restartujeme Apache
service apache2 reload
Nyní do prohlížeče zadejte
https://nazevserveru.domena
a ověřte funkčnost.

Varování prohlížeče Firefox na nedůvěryhodný certifikát. Ten jsme vygenerovali v předchozí ukázce
Bonus na závěr: V tuto chvíli lze na webový server přistupovat pomocí HTTPS (port 443) a zárověň i postaru přes HTTP (port 80), tedy i nezabezpečeně. Pokud chcete povolit jen přístup přes zabezpečený port 443, postup je následující.

Povolte mód rewrite
a2enmod rewrite
Editujte soubor
nano /etc/apache2/sites-available/default 
 a do něho přidejte pod řádek <VirtualHost *:80> následující tři řádky
RewriteEngine   on
RewriteCond     %{SERVER_PORT} ^80$
RewriteRule     ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
Opět restart server
service apache2 reload
Nyní pokud zadáte adresu s http:// na začátku, dojde k přesměrování na https://.

Seznam změn:
9-11-2014: doplněna bezpečnostní "záplata" 

Reference: 1, 2, 3 

středa 19. února 2014

Návod na instalaci GNU Octave s grafickou nádstavou QtOctave ve Windows

Důležitá aktualizace k 1.3.2015: GNU Octave ve verzi 3.8.2-5 již nativně obsahuje experimentální grafické rozhraní. Bohužel, oficiální binární forma pro Windows neexistuje. Nejednoduší je si stáhnout předkompilovanou verzi, např. zde, doporučuji portable verzi.
Následně je potřeba Octave rozbalit kamkoli mimo "Program Files" (kvůli omezení práv k zápisu). Grafické rozhraní se spouští pomocí souboru octave-gui.exe umístěném v \octave-3.8.2\bin.

Následující návod zde ponechám z k archivačním účelům.

Úvod

GNU Octave je svobodná variace komerčního prostředí Matlab. Octave umožňuje téměř totožné výpočty a simulace jako placený Matlab a např. pro výuku je Octave dostačující.


 Pro běžného uživatele je hlavním problémem to, že Octave nemá nativní grafické prostředí, což znamená že lze ovládat jen z příkazové řádky operačního systému. Nicméně, lze si doinstalovat různá grafické prostředí. Osobně jsem vybral QtOctave, které sice není od roku 2011 aktivně vyvíjeno, ale má přehledné rozhraní a snadno se konfiguruje. 

Instalace

  1. Potřebujeme samotné Octave, konkrétně binární verzi pro Windows. Stahujte zde
  2. Nainstalujeme Octave. V průběhu instalce lze měnit některé vlastnosti (např. podporu pro více vláknové výpočty), pokud si nevíte rady, ponechte to, co je přednastaveno.
  3. Nyní stáhněte QtOctave. Např. zde nebo zde.
  4. Rozbalte qtoctave-0.10.1-win32 (např. do C:/Software, kde už je nainstalováno samotné Octave)
    • jděte do složky \qtoctave-0.10.1-win32\qtoctave-0.10.1\bin
    • zde spusťte qtoctave.exe
    • program zahlásí chybu protože nemáme nastavenou cestu pro octave.exe
    • klikněte na OK a poté se spustí QtOctave
    • v QtOctave klikněte na Nastavení, dále na Obecná nastavení a potom na Octave zde v kolonce Cesta k Octave napiště cestu k souboru octave.exe, standardně se nalézá v C:/Software/Octave-3.6.4/bin/octave.exe
    • klikněte dole na Aceptar (asi špatně přeloženo slovo Potvrdit)
    • zavřete QtOctave a znovu spusťte (pomocí qtoctave.exe), tím se uloží změny

neděle 26. ledna 2014

PBX Asterisk na Raspberry Pi: základní nastavení

Úvod

V minulém článku byla popsána instalace pobočkové ústředny Asterisk na zařízení Raspberry Pi. Nyní se podíváme na základní nastavení poboček a volacího plánu. Jak už jsem psal, možností jak Asterisk konfigurovat je více, v tomto článku se budu zabývat konfigurací z příkazové řádky. Následující příkazy jsou zadávány do konzole přes SSH.

Konfigurace

Asterisk již máme nainstalován. Při instalaci z balíčů Raspbianu by se měl Asterisk sám spouštět. Ověřit to můžeme příkazem
pgrep asterisk
Přičemž odpovědí by mělo být číslo běžícího procesu, např. 3441. Pokud ne, tak Asterisk spustíme takto
sudo asterisk
V základu nyní budeme konfigurovat dva soubory ve složce /etc/asterisk/
  • sip.conf -- slouží k nastavení jednotlivých poboček (resp. jednotlivých uživatelů naší ústředny)
  • extensions.conf -- slouží k definování pravidel volacího plánu.
Začneme nastavením poboček. Otevřeme  soubor sip.conf
sudo nano /etc/asterisk/sip.conf
A na začátek vložíme následující (tučně jsou definice, normálně pak komentáře)
[general] ;nastavení pro všechny ucty
port=5060
;port na kterem nasloucha protokol SIP
context=kontext1
;urcuje zarazeni do spolecneho kontextu (skupiny)
dislallow=all
;zakaze vsechny kodeky
allow=alaw
;povoli jen kodek aLaw
language=cz
;definuje jazykove prostedi

[1100]
;nazev uctu, nejcasteji cislo
type=friend
;typ uctu
username=1100
;uzivatelske jmeno pro prihlaseni
secret=asdf
;heslo
host=dynamic
;typ hosta s dynamickou IP adresou
context=kontext1
;konkretni prirazeni teto pobocky do kontextu
callerid=Uzivatel1 <1100>
;zobrazeni jmena pri volani

[1200]
type=friend
username=1200
secret=asdf
host=dynamic
context=kontext1
callerid=Uzivatel2 <1200>
Jak je patrno, nyní máme vytvořeny dva účty, jeden s číslem 1100 a druhý 1200. Oba patčí do stejné skupiny, kterou jsem si pojmenoval kontext1. Pro přidání dalších poboček stačí zkopírovat a následně změnit požadované parametry, hlavně tedy název účtu, uživatelské jméno a heslo.
Uložíme stisknutím CTRL+X a poté potvrdíme zapsání stiskem Y..

Nyní nadefinujeme volací plán
sudo nano /etc/asterisk/extensions.conf
A do něj vložíme následující
[kontext1]
exten => 1100,1,Dial(SIP/1100)
exten => 1200,1,Dial(SIP/1200)
Jde o nejzákladnější volací plán, ve kterém máme nadefinováno že když někdo zavolá z klapky 1100 na 1200, tak jediné co Asterisk udělá, tak že tyto hovory spojí.

Nyní se připojíme do interní konzole Asterisku. Čím víc v bude v příkazu, tím více vám bude konzole vypisovat informací.
sudo asterisk -rvvv
 Protože jsme změnili konfiguraci, ale Asterisk už běžel, je potřeba mu říci, aby novou konfiguraci uplatnil. Proto znovu načteme příslušné soubory
config reload /etc/asterisk/sip.conf
config reload /etc/asterisk/extensions.conf
Do svých VoIP telefonů nebo VoIP aplikací na počítači nyní zadejte výšce uvedená jména a hesla. Volání přes ústřednu by mělo fungovat, pokud ne, tak sledujte výpis v konzoli, většinou velmi dobře identifikuje chybu.