Raspberry Pi i njegova primjena u sigurnosti informacijskih sustava

Izvor: SIS Wiki
Skoči na: orijentacija, traži

Rad izradio Tin Fišter

Sadržaj

Raspberry Pi

Raspberry Pi je jeftino (35$) računalo veličine kreditne kartice temeljeno na štedljivom ARM procesoru. Računalo je razvijeno od strane Raspberry Pi fundacije, smještene u Velikoj Britaniji, čija je svrha promocija računalnih znanosti, pogotovo na školskom nivou i vratiti zabavu u učenje o računalima. Proizvodnju i distribuciju računala vrše svjetski distributeri Premier Farnell/Element 14 i RS Components.

Rpi.jpg

Povijest Raspberry Pi-a

Na stranicama Raspberry Pi fondacije se nalazi tekst o tome kako je nastao projekt razvoja Raspberry Pi-a.

Ideja o malom i jeftinom računalu za djecu razvila se 2006. godine, kada su Eben Upton i njegovi kolege u računalnom laboratoriju Sveučilišta u Cambridgu, uključujući Roba Mullinsa, Jacka Langa i Alana Mycofta, postali zabrinuti konstantnim padom broja i razine znanja najboljih studenata koji su pohađali Računalnu znanost svake godine. Iz situacije gdje su u devedesetima većina studenata dolazili na intervju kao iskusni hobi programeri, u zadnje vrijeme tipični student je radio nešto malo web dizajna. Nešto se promijenilo u interakciji djece s računalima. Identificirani su mnogi problemi: program ICT predmeta se svodi na učenje Worda i Excela ili pisanje web stranica, kraj dot-com booma i razvoj kućnih računala i konzola, koji su zamijenili Amige i Commodore 64, na kojima su prijašnje generacije učile raditi. Autori projekta smatraju da mala grupa ljudi ne mogu riješiti probleme poput neadekvatnog kurikuluma ili kraj financijskog balona. Osjećali su da mogu učiniti nešto u vezi visoke cijene računala, gdje su učenja i vježbe roditelji često zabranjivani učenicima, i da mogu osmisliti platformu, koja će moći bootati okruženje pogodno za programiranje. Od 2006 do 2008. Eben razvija nekoliko verzija računala, koje je danas postalo Raspberry Pi. Do 2008., procesori razvijeni za mobilne uređaje su postali dostupniji, a opet dovoljno jaki da pruže odlične multimedijske mogućnosti, mogućnost koja će približiti Raspberry Pi djeci koja nisu inicijalno zainteresirana za uređaj koji je prvenstveno orijentiran programiranju. Tada je projekt počeo biti izgledan za realizaciju. Eben, Rob, Jack i Alan su se povezali s Peteom Lomasom, iz kompanije Norcott Technologies za proizvodnju i dizajn, te Davidom Brabenom, da bi ostvarili projekt Raspberry Pi.

Dizajn Raspberry Pi-a

Prototip Raspberry Pi-a je nastao 2006 godine i bio je puno lošijih performansi od konačnog modela. Izrađen je pomoću Veroboarda, pokretao ga je Atmel ATmega644 kontroler takta 22.1Mhz i koristio je 512K SRAM-a. Prototip je mogao generirati 320x240 video signal i mogao je vrtjeti igru Zarch.

Rpi proto.jpg

Na sreću dizajn je dogurao daleko od toga i sada Raspberry Pi može pokretati prave operacijske sustave i video u FullHD rezoluciji, a što se tiče igara, može pokretati legendarni Quake III. Zanimljiva je priča kako je nastao Raspberry Pi u verziji kakvog ga danas znamo. Cijene od 25, odnosno 35$ određene su prije nego je tim završio s dizajnom. Nisu znali kolika će biti potražnja, gdje će ga proizvoditi, a čak niti koje će sve komponente imati. Što se tiče samog oblika, dizajn veličine kreditne kartice je nastao slučajno, kada je netko neozbiljno rekao da računalo mora biti veličine kreditne kartice, a inženjeri su to doslovce shvatili. Tim si je zacrtao da će računalo morati biti dovoljno jako da pokreće prave operativne sustave i omogućuje programiranje u Pythonu i podupirati druge alate za učenje. U odnosu na snagu i cijenu, izbor je pao na Broadcom BC2835 čip koji radi na taktu od 700 MHz. Taj odabir je utjecao na mnoge druge komponente, jer može raditi s određenim čipovima. Što se tiče memorije, unutarnja memorija ne postoji, za tu svrhu ima samo čitač SD kartica, koju korisnici sami osiguravaju. Radna memorija je uvjetovana željom da računalo pokreće punokrvni Linux, zato ona iznosi 256MB (najnoviji modeli imaju 512MB jer je cijena memorija u međuvremenu pala).

Raspberrypi.jpg

Razvojni tim želio je prilagoditi računalo masama, zato su za video izlaz odabrali HDMI, ali za zemlje gdje ta tehnologija nije dostupna ugradili su i druge audio i video izlaze, kompozitni i PWM. Što se tiče pristupa internetu i periferije, tim je ovdje imao najveću dilemu. Pitanje je bilo koliko je mogućnost spajanja na internet bitna za rad i učenje. Kako je na kraju ispalo, to je jedna od najbitniji prednosti Raspberry računala. Osim Ethernet priključka ima i 2 USB 2.0 porta, na koje se mogu spajati mnoge periferne jedinice. Ponukani popularnošću Audrino ploča, i cijelom zajednicom koja bi se potencijalno mogla stvoriti iz ideje da Raspberry Pi mogu i hardverski prilagoditi svojim potrebama, razvojni tim je odlučio da je nužno staviti i GPIO port. Napajanje se vrši preko microUSB porta, pa tako možemo koristiti punjače s većine današnjih mobitela, koji odgovaraju i ostalim karakteristikama za napajanje Raspberry Pi-a. Na računalu nalazi se i 5 LED indikatora: OK, POWER koji signaliziraju imamo li dovoljno jako napajanje i je li sve u redu s SD karticom, te tri indikatora za mrežu FDX, LNK i 10M. Dizajn koji je zaživio u finalnoj verziji Raspberry Pi-a postao je jako popularan u zajednici, jer omogućuje jeftino sastavljanje računala, modifikaciju preko GPIO porta, vrti punokrvni Linux operacijski sustav, a korisnici cijene i to što dolazi bez kućišta, pa oni sami mogu dizajnirati svoje kućište. Raspberry Pi ima nebrojeno primjena, koristi se od strane hobi programera, učenje djece radu s računalima, pa na internetu možemo već naći popise s mnogo primjera korištenja. Na jednom od tih popisa, ja sam pronašao 3 primjene, koje možemo koristiti u zaštiti informacijskih sustava i koje sam obradio u svojem projektu.

R-Pi Network-attached storage [1]

U ovom primjeru ću koristiti Raspberry Pi za dijeljenje datoteka s drugim uređajima na lokalnoj mreži. Može se dodati veći USB stick ili USB prijenosni disk, pa dobivamo centralnu lokaciju za pohranu i dijeljenje svih bitnih slika, videa i ostalog. Originalne upute možete pronaći ovdje

Preduvjeti za instalaciju NAS na Raspberry Pi su:

   - Raspberry Pi, model B
   - Bootabilna SD kartica
   - Veliki USB disk ili flash 
   - Ethernet konekcija na lokalnu mrežu


Konfiguracija Samba servera

Prije svega, potrebno je provjeriti imamo li pristup internetu. Najlakši način za to je pinganje googla Naredba je:

ping www.google.com

a rezultat je obično nešto poput:

64 bytes from 72.14.213.99: icmp_seq=0 ttl=50 time=48.582 ms
64 bytes from 72.14.213.99: icmp_seq=1 ttl=50 time=48.655 ms

Kada smo sigurni da imamo Internet konekciju, možemo instalirati Samba software, što radimo naredbom:

sudo apt-get install samba samba-common-bin

Očekujemo pitanje želimo li nastaviti s instalacijom, što je potrebno potvrditi. Sada treba samo pričekati da se skinu potrebne datoteke i završi instalacija Sambe.

Slijedeće što ćemo napraviti je kopija samba konfiguracijske datoteke, za slučaj da trebamo vratiti početne vrijednosti. Naredba je:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.old

Slijedeći korak je editiranje samba konfiguracijske datoteke, kako bi uključili sigurnost. Ako to uključimo, samba server će pitati za korisničko ime i lozinku prije nego dopusti drugom računalu da se spoji. Naredba za otvaranje konfiguracijske datoteke je:

sudo nano /etc/samba/smb.conf

Treba doći do dijela označenog ##### Authentication ##### i promjeniti

 # security = user u
 security = user

i pohraniti promjene. Kako bi primijenili promjene, potrebno je resetirati sambu naredbom

sudo /etc/init.d/samba restart.

U slijedećem koraku ponovo otvaramo konfiguracijsku datoteku naredbom

sudo nano /etc/samba/smb.conf

U sekciji [homes]

read only = yes u read only = no

Ponovo je potrebno pohraniti datoteku i resetirati samba server. To nam omogućava da svaki korisnik ima pristup home direktoriju. Defaultni korisnik je pi, a lozinka raspberry, a kako bi korisniku pi dopustili da bude samba korisnik, moramo to omogućiti naredbom:

sudo smbpasswd –a pi

Potrebno je dva puta unijeti lozinku korisnika pi. Ako želimo više korisnika, prvo ih trebamo dodati, a zatim dopustiti da budu samba korisnici. Kreirat ćemo dva korisnika i dodijeliti im lozinke, test1 i test2 naredbama:

sudo useradd test1 –m –G users
sudo passwd test1
sudo useradd test2 –m –G users
sudo passwd test2

Zatim im dopustimo da budu samba korisnici, gdje moramo unijeti i samba lozinku:

sudo smbpasswd –a test1
sudo smbpasswd –a test2

Slijedeće ćemo napraviti javan folder, kojem mogu pristupiti svi korisnici. Potrebno je unijeti nekoliko naredbi

sudo mkdir /home/shares
sudo mkdir /home/shares/public
sudo chown -R root:users /home/shares/public
sudo chmod -R ug=rwx,o=rx /home/shares/public

Zatim ponovo editirati samba konfiguracijsku datoteku, gdje na kraj datoteke dodajemo slijedeće linije

[public]
 comment = Public Storage
 path = /home/shares/public
 valid users = @users
 force group = users
 create mask = 0660
 directory mask = 0771
 read only = no 

Pohranimo promjene i resetiramo samba server Sada bi samba server trebao biti vidljiv na mreži i možemo koristiti kapacitet unutarnje memorije Raspberry Pi-a. Ta memorija iznosi 1,8GB i to je premalo za naše potrebe. Zato ćemo dodati USB storage, kod nas je stick od 8GB, a postupak je sličan za USB diskove.


Potrebno je imati mountan USB stick na računalu, pa možemo dodijeliti stick zajedničkom prostoru samba servera. Prvo kreiramo novi direktorij i mountamo stick tamo:

sudo mkdir /home/shares/public/disk1
sudo mount /dev/sdxx /home/shares/public/disk1

Zadnje što trebamo napraviti je pobrinuti se da će USB stick biti mountan i svaki put kada restartamo samba server. To je potrebno postaviti u /etc/fstab datoteci. Datoteku otvaramo naredbom

sudo nano /etc/fstab

i dodajemo liniju

/dev/sdxx /home/shares/public/disk1 auto noatime 0 0

Gdje je sdxx oznaka USB sticka u sistemskoj hijerarhiji (u našem primjeru sda).

Samba klijenti Sada imamo sve postavljeno na strani samba servera, slijedeći korak je spojiti klijenta. U Windowsima mapiramo Network drive, gdje upisujemo IP od Raspberry Pi-a ili samo kliknemo na uređaj na popisu računala u mreži i upišemo korisničko ime i lozinku. Postupak je poprilično jednostavan, jer je iz Windowsa Raspberry vidljiv na mreži. Network storage.JPG

Sličan postupak možemo primijeniti i na ostalim operacijskim sustavima, a storage radi i na mobilnim uređajima, u aplikacijama poput File Experta

Raspberry Pi webcam server

Raspberry Pi ima dva USB 2.0 porta i na njih možemo spojiti skoro bilo koju periferiju koja je kompatibilna s Linuxom, uz uvijet da ne vuče puno struje, jer Raspberry Pi ne može napajati zahtjevnije uređaje preko USB porta. Ako bi ipak željeli spojiti npr. eksterni disk, onda bi morali koristiti USB hub koji ima eksterno napajanje i spojiti ga na Raspberry Pi. U slučaju spajanje web kamere neće biti potrebno dodatno napajanje. Ideja ove primjene Raspberry Pi-a je da spojimo web kameru i kreiramo webcam server. Dakle potreban nam je Raspberry Pi, spojen na mrežu i bilo koja web kamera koja je kompatibilna s Linuxom. Raspberry Pi vrti mini web server, a video dijeli kao sekvencu JPG slika, odnosno MJPEG. MJPEG je video format koji se sastoji od sekvence slika koja je svaka zasebno kompresirana u JPG formatu i ima široku primjenu u digitalnim kamerama, IP kamerama i web kamerama . Ovisno o postavkama, ta radnja se vrši x puta u sekundi i mi zapravo vidimo video. Riješenje je bazirano na MJPG-streamer serverskoj aplikaciji. Za Raspberry Pi je potrebna nešto prilagođena verzija programa.

Upute

Originalne upute možete pronaći ovdje. Prije svega, preporučam update operacijskog sustava na Raspberry Pi-u-, a to možete izvesti naredbama:

sudo apt-get update
sudo apt-get upgrade

Slijedeći korak je instalaccija libv4l-0 paketa, koji nam je potreban za rad webcam servera. Naredba za to je:

sudo aptitude install libv4l-0

Sada možemo spojiti web kameru i je li operacijski sustav prepoznao kameru ili je potrebno dodatno podešavanje. Ako upišemo slijedeću naredbu, moramo vidjeti web kameru na popisu

ls /dev/video0

Možemo provesti i dodatnu provjeru radi li nam web kamera, naredbom

mplayer tv:// -tv river=v4l2:width=640:height=480:device=/dev/video0 -fps 30 

Slijedeći koraci su skidanje arhiva MJPG-streamer-rpi.tar.gz na Raspberry i otpakiravanje. Direktorij gdje spremamo arhiv nije bitan i za ovu naredbu ne moramo imati root privilegije.

wget http://www.bobtech.ro/get?download=36:mjpg-streamer-rpi
mv get\?download\=36\:mjpg-streamer-rpi mjpg-streamer-rpi.tar.gz
tar -zxvf mjpg-streamer-rpi.tar.gz

Ako je sve prošlo u redu, naredbom ls možemo vidjeti sve foldere i morali bi vidjeti mjpg-streamer. Prebacimo se u taj folder naredbom:

cd mjpg-streamer

i otvorimo datoteku mjpg-streamer.sh

sudo nano mjpg-streamer.sh

Webcamserver postavke.jpg

U toj bash skripti možemo pri vrhu vidjeti varijable koje možemo promjeniti, pa tako možemo mijenjati rezoluciju, frame rate ili port preko kojeg ćemo pristupati streamu. Vrijednosti ne moramo mijenjati ako ne želimo. Jedino što nam preostaje je pokrenuti naš web server naredbom:

./mjpg-streamer.sh start

Ako sve prođe u redu, streamu možemo pristupiti preko web browsera tako da u adress bar upišemo nešto poput

192.168.5.65:8080/?action=stream

gdje je IP adresa zapravo adresa našeg Raspberry Pi-a u lokalnoj mreži. Prikazano je na slici kako to radi.

Webcamserver.jpg

Ako nam webcam server više nije potreban, gasimo ga naredbom:

./mjpg-streamer.sh stop

Raspberry Pi Tor relay

TOR je sistem osmišljen da omogući korisnicima online anonimnost. Tor klijent preusmjerava internetski promet preko svjetske volonterske mreže servera da prikrije lokaciju korisnika od bilo koga tko pokušava provesti prisluškivanje korisnika.

Tor.jpg

Ako korisnik koristi Tor za pristup internetu, uvelike otežava praćenje svojih aktivnosti, uključujući posjete web stranicama, postanje komentara, instant messaging i ostale oblike komunikacije. Tor mreža je namjenjena zaštiti korisnika, tako omogućava ljudima iz zemalja gdje postoji velika cenzura interneta da pristupaju cijelom internetu, a ljudima koji su praćeni da komuniciraju preko sigurne veze. Naravno, postoji i mogućnost zloupotrabe Tor mreže, gdje se širi nedopušteni sadržaj, sadržaj zaštičen autorskim pravima, pranje novca, krađa novaca i identiteta. Da bi izbjegli moguće posljedice, potrebno je onemogućiti izlaz na našem Tor relayu.

Kako Tor mreža nije nikakva profitna organizacija, a zahtjeva mnogo servera, potrebno joj je mnogo volontera. Ako imate Raspberry Pi, možete napraviti jeftin i efikasan Tor relay.

Upute

Originalne upute možete pronaći ovdje. Iz sigurnosnih razloga ne bi trebali raditi kao root korisnik cijelo vrijeme, pa možemo kreirati novog korisnika naredbama:

apt-get install sudo
adduser tor  
passwd tor

Kreirali smo novog korisnika tor i moramo mu dodijeliti lozinku. Slijedeći korak je dodavanje korisnika tor u listu sudoers. Potrebno je otvoriti datoteku

nano /etc/sudoers

i dodati liniju:

tor ALL=(ALL) ALL

Ponovo preporučam ažuriranje operacijskog sustava. Naredbe za to su:

sudo apt-get update
sudo apt-get upgrade 

Slijedeći korak je konfiguracija mreže. Želimo se pobrinuti da naš Raspberry Pi ima statičnu adresu unutar naše mreže. Ovaj korak nije nužno obavezan. Prvo trebamo vidjeti aktualnu mrežnu kofiguraciju, koristimo naredbu:

ifconfig

Očekujemo nešto slično

eth0      Link encap:Ethernet  HWaddr 00:23:54:40:66:df 
          inet addr:192.168.0.20  Bcast:192.168.0.255
          Mask:255.255.255.0

Potrebno je zabilježiti inet addr i mask. Slijedeće je otvaranje datoteke za konfiguraciju mrežnih postavki naredbom:

sudo nano /etc/network/interfaces

Moramo izmjeniti neke retke, pa upišite slijedeće

iface eth0 inet static
address 192.168.0.20 <- chose an IP that fits to your network! This is only an example!
netmask 255.255.255.0 <- change to the settings that fit to your network
gateway 192.168.0.1  <- type in the correct IP adress of your gateway.

Slijedeći korak je instalacija i konfiguracija Tor-a Instalacija može potrajati, a naredba je:

sudo apt-get install tor

Slijedeći korak je obavezan, jer uređujemo neke postavke Tor-a. Konfiguracijsku datoteku otvaramo naredbom:

sudo nano /etc/tor/torrc

Dadoteka ima mnogo postavki, ali svaka od njih je objašnjena, a nudi i upute za detaljnija objašnjenja. Bitnije postavke su navedene

SocksPort 0
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 9001
DirPort 9030
ExitPolicy reject *:* # Ovo je jako bitno, zabranjujemo izlaz
Nickname xxx (odabir naziva)
RelayBandwidthRate 100 KB  # Ograniči promet na 100KB/s (800Kbps)
RelayBandwidthBurst 200 KB # Ali dozvoli burst na 200KB/s (1600Kbps)

Ako imamo firewall, možda ćemo morati kreirati pravila za portove koje koristi Tor, u našem primjeru to su portovi 9001 i 9030. Kada smo spremili promjene u datoteci, potrebno je restartati Tor kako bi promjene bile primjenjene. Naredba za to je

sudo /etc/init.d/tor restart

Sada je Tor pokrenut, a da bi vidjeli je li sve u redu možemo otvoriti log datoteku

less /var/log/tor/log

i potražimo pri kraju slijedeći unos

Oct 18 22:59:21.104 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.

Ako nađemo navedeni unos, završili smo s konfiguracijom Tor-a. Naredbe za zaustavljanje i pokretanje Tor-a su:

sudo /etc/init.d/tor stop
sudo /etc/init.d/tor start

Ako se želimo uvjeriti da je naš Tor spojen u mrežu, možemo ga probati pronaći prema zadanom nadimku u popisu Tor relaya, a za to je nekad potrebno i do 24 sata rada našeg Tor-a.

Osobni alati
Imenski prostori
Inačice
Radnje
Orijentacija
Traka s alatima