neděle 1. prosince 2013

PBX Asterisk na Raspberry Pi: úvod a instalace

Vzhledem k nízké pořizovací ceně a levnému provozu je Raspberry Pi ideální jako vlastní PBX (pobočková ústředna) především v domácích podmínkách. Budeme se bavit o softwarové ústředně, která "přepíná" a směruje hovory v rámci IP sítě. Můžeme také hovořit o VoIP ústředně. Propojení do klasické telefonní sítě je také možné, ale o tom se nyní bavit nebudeme.



Author: Philipp Bohk
 Přestože, existuje více open source projektů které se věnují IP telefonii, nejznámější a taky pravděpodobně nejpoužívanější je Asterisk, který je velmi komplexní a umožňuje téměř neomezené možnosti nastavení ústředny, za které by si jiní nechali velmi dobře zaplatit.

Nyní tedy předpokládejme, že máme samotné Raspberry Pi a budeme chtít Asterisk nějak zprovoznit. Možnosti jsou tyto:

Projekt RasPBX - jedná se o vůbec první projekt, který začal věnovat implementaci Asterisku na tomto druhu zařízení. Díky tomuto projektu si můžete stáhnout obraz operačního systému (základem je Raspbian), na kterém je již zkompilovaný Asterisk, včetně nadstavby FreePBX, která umožňuje konfigurovat Asterisk z webového prostředí (místo příkazové řádky, viz dále). Výhodou RasPBX je, že máte takříkajíc všechno na jednom místě. Nejdůležitější jsou asi pravidelné aktualizace Asterisku na nejnovější verzi a předkompilované ovladače pro různé GSM/3G modemy, díky kterým se lze připojit do mobilní sítě. V neposlední řadě je zde také již funkční webové rozhraní, které začátečníkům umožní přehledné nastavení.

Jiná možnost, instalace je ta, pokud již provozujete Raspbian, tak doinstalovat Asterisk jako balíček:
sudo apt-get install asterisk
Výhoda je ta, že nemusíte měnit systém co již máte na kartě. Pro někoho možná podstatná nevýhoda, je ta, že v repozitářích není vždy aktuální verze. Nicméně, to nemusí znamenat výraznější problém, protože naopak někdo dá přednost sice starší, ale za to prověřenější verzi. Po funkční stránce je jsou rozdíly velmi malé. V repozitářích je nyní verze 1.8.13 ze září 2013. Jelikož se jedná o holou instalaci Asterisku, pro konfiguraci ústeředny je nutné použít příkazovou řádku.

Poslední možností je si stáhnout si zdrojové kódy ze stránek projektu a na svém Raspberry Pi si je zkompilovat. Zkušenější asi budou preferovat tuto možnost, ostatní si zřejmě vyberou z těch předcházejících.

V dalším článku bude popsána konfigurace přes příkazovou řádku Asterisku.

čtvrtek 22. srpna 2013

Kniha Zátah na hackery ve formátu MOBI pro čtečky Kindle

Z českého překladu Václava Bárty jsem vyrobil elektronickou knihu formátu MOBI, který je praktičtější než běžně dostupné PDF této knihy. MOBI obsahuje metadata a kapitoly.



Stahujte na Ulož.to nebo na Dropbox 

Pokud dáváte přednost PDF, tak je zde.

sobota 3. srpna 2013

Stream z webkamery přímo v prohlížeči pomocí VLC

Úvod

Už delší dobu jsem hledal možnost, jak streamovat video z webkamery takovým způsobem aby ho případný divák nemusel otvírat v žádném externím programu, ale aby se mu zobrazilo přímo v prohlížeči. Předpokládejme tedy situaci, kdy je webkamera připojena k serveru, kde běží Debian či Ubuntu Server, tedy nebudeme spouštět grafické rozhraní a klienti se budou připojovat právě na tento server.

Po projití několika návodů a postupů, jsem skončil u všeobecně oblíbeného VLC, které je známo spíše jako přehrávač multimédií na desktopu, ale už méně, jako výkoný streamovací nástroj.

Instalace

VLC nainstalujeme z příkazové řádky takto:
sudo apt-get install vlc
Nyní připojíme webkameru a zkontrolujeme, jestli systém zaregistroval kameru mezi USB zařízeními pomocí příkazu
lsusb
 Dále se podíváme, zda je v systému kamera viditelná jako video zařízení /dev/video*
ls -l /dev/video*
 Odpovědí systému na tento příkaz by mělo být něco takového:
crw-rw----+ 1 root video 81, 0 srp  3 10:42 /dev/video0
Nyní tedy k samotnému streamování. V příkazové řádce zadáme příkaz (vše na jeden řádek!)
cvlc v4l2:///dev/video0 --sout '#transcode{vcodec=theo,vb=256}:standard{access=http,mux=ogg,dst=:8888}'
Vysvětlivky:
  • cvlc - spouští VLC v režimu příkazové řádky, bez grafického rozhraní. Vhodné pro server.
  • v4l2 - Video4Linux, aplikace pro zachytávání signálu z TV tunerů a webkamer
  • /dev/video0 - zařízení prezentované v systému
V řádku  dále následuje co se má s výstupem z kamery dělat. Provede se překódování pomocí kodeku Theora s datovým tokem 256 kb/s. Video stream je zmuxován (sloučen) do kontejneru Ogg který je nativně podporován např. ve Firefoxu a proto ho použijeme. Stream je dostupný pomocí protokolu HTTP na portu 8888. Číslo portu lze samozřejmě měnit.

Z jiného počítače zadáme v prohlížeči IP adresu serveru (zde jen jako příklad) a port:
http://192.168.5.33:8888
Nyní už jsme měli vidět obraz z kamery.

Poznámky

  • Přehrávání vyzkoušeno v Mozilla Firefox 22.0. V Chromu a Opeře by myslím neměl být problém, u IE si ale nejsem jist.
  • Kódování v reálném čase vyžaduje hodně systémových prostředků (paměti) a výpočetní síly (CPU), proto je potřeba počítat s tím, že streamování bude server znatelně zatěžovat. S tím souvisí i plynulost přehrávání, zpoždění obrazu a max. počet připojených uživatelů. Odhaduji, že 1 GB RAM a 2 GHz procesor jsou minimum.

pátek 2. srpna 2013

Nefunkční WD My Book Essential a záchrana dat

Asi po roce jsem se pokoušel rozchodit nefunkční externí disk Western Digital Essential 1TB USB 2.0, koupený v roce 2009. Je to starší verze, ještě s USB 2.0. Zjednodušeně řečeno, uvnitř je klasický 3,5" SATA disk od WD a k počítači se připojuje přes rozhraní USB 2.0 a napájení je řešeno externím adaptérem.

Porucha My Booku se projevuje tak, že se disk po připojení napájení krátce (asi na sekundu) roztoči, ale pak se zastaví a je slyšet jen jemné klapání. Ve Windows se zařízení neukáže a ani diody nesvítí. Na první pohled tedy zřejmá hardwarová porucha, zřejmě samotného disku.

Bez otevření se nedalo nijak zjistit podrobnosti, takže nezbývalo než celí My Book otevřít. Trochu mě zarazilo, že na těle nejsou žádné šrouby, ale stačilo se poradit s googlem. Asi nejlépe je otevření ukázáno v tomto videu (kde je sice novější verze, ale konstrukce zařízení je pořád stejná.

Vlastně jde o dva kusy plastu, které k sobě spojuje několik plastových západek. Stačí se podívat na video z předchozího odkazu a s trochou zručnosti je se možné dostat k samotnému disku bez poškození. Uvnitř je pevný disk v kovovém rámečku a dále je zde plošný spoj, který provádí převod z USB na SATA rozhraní + napájení. Toto vše jde bez problémů odšroubovat a dostanete se až k samotnému pevnému disku. V mém případě to byl Western Digital Caviar Green WD10EACS.

Nyní už stačí vzít disk a připojit jej k počítači který má na základní desce port pro SATA2 disky. Návod s obrázky je zde. Pokud po startu váš počítač zaregistruje další disk v operačním systému máte vyhráno a data jsou zachráněna.

Příčina nefunkčnosti tedy není v disku samotném, ale zřejmě v elektronice, která komunikuje mezi diskem a počítačem přes USB.

úterý 23. července 2013

Řešení problému: Wireshark nevidí síťová rozhraní

Úvod

Po nainstalování Wiresharku a jeho spuštění v Ubuntu, s největší pravděpodobností neuvidíte žádná síťová rozhraní. Je to způsobeno tím, že běžný uživatel nemá přímo přístup na síťovou kartu. Spuštění jako root není bezpečné. Je tedy potřeba to vyřešit jinak. Budeme Wireshark spouštět s patřičnými „schopnostmi“, ale ne jako root.

Postup

Pokud ještě nemáme Wireshark, tak jej nainstalujeme:
sudo apt-get install wireshark
 Dále je potřeba balík ibcap2-bin, který upravuje přístup pro Wireshark.
sudo apt-get install libcap2-bin
 Vytvoříme novou skupinu nazvanou wireshark.
sudo groupadd wireshark
Přidáme sebe (uživatele) do nové skupiny. Místo USERNAME napište vlastní uživatelské jméno.
sudo usermod -aG wireshark USERNAME
 Změníme vlastníka skupiny.
sudo chgrp wireshark /usr/bin/dumpcap
Změníme oprávnění skupiny.
sudo chmod 755 /usr/bin/dumpcap
Nastavíme patřičné schopnosti pro dumpcap.
sudo setcap cap_net_raw,cap_net_admin=eip /usr/bin/dumpcap
Hotovo. Nyní spusťte Wireshark a měli byste vidět patřičná rozhraní v seznamu Interface List (eth0, atd...)

 Vyzkoušeno v Lubuntu 12.04, což odpovídá Ubuntu 12.04 LTS.

Zdroj: debbase

pondělí 22. července 2013

Zabezpečené FTP pomocí SSL nebo TLS

Úvod

Původní návrh protokolu FTP nepočítá s žádným typem zabezpečení při vzájemné komunikaci klient-server. Znamená to tedy, že přenášené heslo a následně i přenášená data jsou velmi snadno zachytitelná a tedy i zneužitelná. Používání samotného FTP bez dalšího rozšíření je velmi riskantní.

Jak tedy zajistit zabezpečený přenos dat, např. skrz Internet? Shrnutí možností je např. v tomto článku na root.cz. Osobně bych vybíral pouze mezi SFTP (obsaženo v rámci OpenSSH) a FTPS (FTP + SSL/TLS vrstva). Pokud máme server kam se připojují uživatelé, kteří potřebují i shell a jsou pro nás důvěryhodní, tak je to jasné a zvolíme SFTP.
Na druhou stranu, pokud jsme doteť na serveru poskytovali standardní FTP přístup pro různý druh uživatelů, kterým nechceme umožnit nic jiného, než jen stahovat a ukládat data, pak je FTPS jasná volba.

V tomto článku je tedy popsáno, jak doplnit klasický FTP server o zabezpečenou "nadstavbu" pomocí protokolu SSL nebo TLS.

Instalace

Instalaci jsem prováděl na distribuci Raspbian určené pro zařízení Raspberry Pi, ale nevidím důvod proč by tento návod neměl fungovat na klasickém Debianu, nebo Ubuntu.

Nejprve nainstalujeme FTP deamona, pokud ještě nemáte. Já jsem použil vsftpd které je myslím hodně rozšířené a dostatečně prověřené.
sudo apt-get install vsftpd
Dále potřebujeme implementaci protokolů SSL a TLS. Nejběžnější je volně šiřitelné OpenSSL. V Raspbianu je myslím už obsaženo. Pro jistotu:
sudo apt-get install openssl
Nyní si můžeme vytvořit vlastní SSL certifikát. Není to sice nutnost, ale proč toho nevyužít. Certifikáty jsou umístěny v /etc/ssl/private.
Pokud složka zatím neexistuje, vytvoříme ji takto:
mkdir -p /etc/ssl/private
A změníme oprávnění
chmod 700 /etc/ssl/private
Pomocí OpenSSL vygenerujeme certifikát takto:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Jen ve zkratce co je v příkazu: platnost 1 rok, použité šifrování je RSA s délkou 2048 bitů. Pro další podrobnosti doporučuji další článek na root.cz.

Nyní se postupně objeví série položek které je potřeba "nějak rozumně" vyplnit.
Country Name (2 letter code) [AU]: CZ
State or Province Name (full name) [Some-State]:
Czech Republic
Locality Name (eg, city) []:
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 (eg, YOUR name) []:
Celé jméno
Email Address []:
Váš email
Ted je na řadě konfigurace vsftpd. Konkrétně úprava souboru vsftpd.conf.
sudo nano /etc/vsftpd.conf
Do souboru přidejte (např. na konec) následující:
# Zapne SSL
ssl_enable=YES

# Povoluje anonymnim uzivatelum pouzivat zabezpecene SSL.
allow_anon_ssl=YES

# Vsichni neanonymni uzivatele jsou povinni pouzivat SSL pri prenosu.
force_local_data_ssl=YES

# Vsichni neanonymni uzivatele jsou povinni pouzivat SSL pri zadavani hesla.
force_local_logins_ssl=YES

# Povoluje pripojeni pomoci protokolu TLS v1. TLS v1 je preferovano.
ssl_tlsv1=YES

# Povoluje pripojeni pomoci protokolu SSL v2. TLS v1 je preferovano.
ssl_sslv2=NO

# Povoluje pripojeni pomoci protokolu SSL v3. TLS v1 je preferovano.
ssl_sslv3=NO

# Vypne znovuuziti SSL (vyzadovano v WinSCP)
require_ssl_reuse=NO

# Vyber SSL sifry, kterou vsftpd bude pouzivat pro 
#sifrovani SSL spojeni (vyzadovano ve FileZille)
ssl_ciphers=HIGH

# Cesta k ulozenym RSA certifikatum.
rsa_cert_file=/etc/ssl/private/vsftpd.pem
Pokud necháme nastaveno force_local_logins_ssl=YES a force_local_data_ssl=YES bude pro přihlášení i přenos souborů použito výhradně TLS. Pokud bude mít uživatel klienta, který TLS nepodporuje, nelze se přihlásit. Pokud u těchto dvou možností změníme hodnoty na NO, umožníme klientům spojení i jinak, než přes TLS, tedy např SSL v2 a v3. Klienti, jako je WinSCP a FileZilla nemají problém ani s jedním.

Restartujeme vsftpd.
sudo /etc/init.d/vsftpd restart

Připojení ve Windows

Jako jednoduchého klienta lze doporučit FileZillu . Zde by mělo fungovat rychlé přihlášení v horní liště programu. Klient ale měl problém rozpoznat typ a verzi šifrovacího protokolu, proto je lepší vytvořit ve Správci míst nové připojení, viz. obrázek č. 1.
Obrázek č.1: Správce míst ve FileZille.
Při prvním přihlášením se vám zobrazí podrobnosti o certifikátu který jsme vygenerovali dříve.

Někdy se stane, že si klient úplně nerozumí se serverem v otázce SSL/TLS zahájení spojení. U WinSCP je nutné v možnostech přímo nastavit explicitní šifrování SSL/TLS jinak nebude přihlášení fungovat. Používaný port je stále 21.

Připojení v Linuxu

Jelikož je FileZilla opensource, nevidím důvod ji nepoužít i v GNU/Linuxu. Osobně vyzkoušeno v Lubuntu 12.04 s verzí 3.5.3 bez problémů.
Pro nainstalování použijeme:
sudo apt-get install filezilla

Řešení problémů

Během přihlášení hlásí FTP klient 
530 Login incorrect
Řešení: otevřít konfigurační soubor
sudo nano /etc/vsftpd.conf
a zde změnit řádek
pam_service_name=vsftpd
na
pam_service_name=ftp
Uložíme (Ctrl+X a poté Y) a provedeme restart procesu:
sudo /etc/init.d/vsftpd restart

Seznam změn:
  • 15-3-2015 - přidáno řešení problémů
  • 9-11-2014 - délka šifry navýšena na 2048 bitů.

Zdroj: HowtoForge