Cum putem utiliza placa Raspberry Pi ca Access Point WiFi?

La momentul actual nu se poate concepe o rețea locală fără componentă de acces fără fir (WiFi). Prețul dispozitivelor Access Point (ce permit accesul WiFi într-o rețea locală) a scăzut destul de mult și există o diversitate foarte mare de astfel de dispozitive acoperind o funcționalitate variată. Totuși, posibilitatea de personalizare a acestor dispozitive se rezumă de cele mai multe ori la o interfață web destul de sărăcăcioasă cu funcții predefinite pentru o utilizare generică. În cazul în care dorim implementarea unor funcționalități specifice (pentru o rețea de dispozitive IoT de exemplu) ce implică filtrarea traficului, cifrarea traficului sau detectarea și prevenirea intruziunilor suntem obligați să achiziționăm dispozitive AP scumpe cu funcționalități avansate de router / firewall.

Placa Raspberry Pi 3 oferă posibilitatea implementării facile a funcționalității de Access Point WiFi datorită celor două interfețe de rețea integrate: interfață ethernet și interfață WiFi, permițând implementarea de funcții avansate (VPN, IDS/IDPS) și o personalizare completă a funcționării datorită sistemului de operare Linux. În plus, conectivitatea USB a plăcii permite conectarea de dispozitive de tip modem GSM oferind posibilitatea de conectare la Internet a rețelei locale prin intermediul rețelelor mobile de date (*),(*). Pentru implementarea funcționalității de AP WiFi nu este necesară distribuția Raspbian with Pixel (cu interfață grafică), se poate utiliza și Raspbian Lite deoarece toată configurare se va efectua în linie de comandă (în Terminal). Testarea configurației prezentate s-a făcut pe un sistem Raspberry Pi 3 rulând Raspbian 8 Jessie Lite cu kernel 4.9.28-v7+.

Configurarea interfeței de rețea WiFi

Ambele interfețe de rețea ale plăcii Raspberry Pi 3 (ethernet și WiFi) sunt configurate implicit să funcționeze în rețele locale ce oferă configurație dinamică (prin serviciul de DHCP). Primul pas în implementarea funcționalității de AP WiFi este configurarea adresei IP a interfeței WiFi – modificarea configurației din alocare dinamică în alocare statică – trebuie să stabilim adresa IP a interfeței și clasa de adrese IP pentru viitori clienți WiFi.

Primul lucru este dezactivarea serviciului de configurare dinamică. Se va edita fișierul /etc/dhcpcd.conf și se va adăuga la sfârșit următoarea linie:

denyinterfaces wlan0

După dezactivarea achiziției configurației dinamice trebuie să stabilim adresa IP statică a sistemului. Se va edita fișierul /etc/network/interfaces și pentru interfața wlan0 se va introduce următoarea configurație:

allow-hotplug wlan0

iface wlan0 inet static

address 192.168.99.1

netmasq 255.255.255.0

network 192.168.99.0

broadcast 192.168.99.255

unde 192.168.99.1 este adresa locală a sistemului AP și 192.168.99.0/24 este clasa de adrese a viitorilor clienți WiFi. Se poate alege orice altă clasă de adrese IP nerutabile atâta timp cât nu intră în conflict cu clasa de adrese a interfeței ethernet. Pentru ca modificările să-și facă efectul sistemul trebuie repornit. Atenție!!! Interfața ethernet trebuie să fie conectată al o rețea locală cu acces Internet, interfața WiFi a sistemului va avea rolul, de acum încolo, de AP WiFi, nu va mai putea asigura conectivitatea de rețea normală.

Instalarea și configurarea aplicației HostAPD

Aplicația HostAPD implementează partea de autentificare și control al conexiunilor WiFi. Pentru instalarea acestei aplicației vom rula comanda:

sudo apt-get install hostapd

După instalare vom crea fișierul /etc/hostapd/hostpad.conf cu următorul conținut:

interface=wlan0

ssid=Pi3-AP

hw_mode=g

channel=6

ieee80211n=1

wmm_enabled=1

ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_key_mgmt=WPA-PSK

wpa_passphrase=raspberry

rsn_pairwise=CCMP

Denumirea AP-ului și parola de acces pot fi stabilite, bineînțeles, după bunul plac. Fișierul de configurare creat trebuie referit în fișierul de inițializare a aplicației hostapd: /etc/default/hostapd, prin inserarea următoarei linii:

DAEMON_CONF=”/etc/hostapd/hostapd.conf”

După repornirea sistemului vom putea să vedem AP-ul generat de placa Raspberry Pi dar acesta nu va funcționa încă corect.

Instalarea și configurarea aplicației DNSMASQ

Funcționalitatea de Access Point implică în mod obligatoriu două servicii de bază fără de care clienții nu pot accesa rețeaua Internet: serviciul de configurare dinamică a informațiilor IP (DHCP) și serviciul de rezolvare a adreselor IP (DNS). Aplicația DNSMASQ oferă ambele servicii pentru rețele de mici dimensiuni cum este o rețea locală formată de un AP. Instalarea aplicației se va face cu ajutorul comenzii:

sudo apt-get install dnsmasq

După instalarea aplicație vom înlocui fișierul de configurare (/etc/dnsmasq.conf)

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

sudo nano /etc/dnsmasq.conf

cu următorul conținut:

interface=wlan0

listen-address=192.168.99.1

bind-interfaces

server=8.8.8.8

domain-needed

bogus-priv

dhcp-range=192.168.99.2,192.168.99.100,12h

Bineînțeles, adresa interfeței WiFi a AP și plaja de adrese pentru clienții WiFi pot fi personalizate în funcție de alegerea clasei de adrese IP făcută anterior. Pentru ca aplicația DNSMASQ să devină funcțională utilizând configurația stabilită trebuie repornit sistemul.

Activarea rutării pachetelor și configurarea regulilor de rutare

Ultimul pas în configurarea sistemului AP este activarea rutării pachetelor între cele două interfețe de rețea a plăcii Raspberry Pi, adică pachetele provenite de la clienții WiFi să fie retrimise spre rețeaua plăcii ethernet (spre Internet). Acest lucru necesită editarea fișierului /etc/sysctl.conf și decomentarea liniei următoare:

net.ipv4.ip_forward=1

În plus de activarea rutării este necesar să definim reguli suplimentare deoarece clasa de adrese IP oferită clienților WiFi este privată. Aceste reguli vor fi impuse cu ajutorul utilitarului iptables specific sistemului de operare Linux. Vom utiliza următoarea succesiune de instrucțiuni pentru definirea regulilor:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state

RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Vom salva apoi regulile într-un fișier:

sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”

Pe care îl vom utiliza pentru reinițializare la fiecare repornire a sistemului. Pentru acest lucru vom adăuga în fișierul /etc/rc.local următoarea linie (chiar înainte de linia exit 0):

iptables-restore < /etc/iptables.ipv4.nat

După repornirea sistemului vom avea un sistem AP complet funcțional.

Posibile funcționalități suplimentare

Configurarea prezentată este cea mai rapidă modalitate de implementare a funcționalității de AP WiFi pe o placă Raspberry Pi 3, în nici un caz nu este singura soluție – puteți vedea mai multe informații consultând (*), (*), (*), (*), (*), (*).

În plus, sistemul AP poate căpăta funcționalități suplimentare specifice sistemelor router avansate, ca de exemplu:

 

  • Server VPN (Virtul Private Network) ce permite realizarea de canale de comunicație complet cifrate între două sisteme Internet sau între un sistem Internet și un server VPN ce deservește o rețea locală. Distribuția Raspbian 8 Jessy include pachetul openvpn) ce poate fi instalat cu ajutorul comenzii (se poate consulta și materialul (*)):

sudo apt-get install openvpn

2

  • Server IDS (Intrusion Detection System) – este un sistem ce permite analiza traficului de rețea în vederea detectării activității malițioase și protejarea calculatoarelor din rețeaua locală. Distribuția Raspbian 8 Jessy include pachetul snort ce poate fi instalat cu ajutorul comenzii (se poate consulta și materialul (*)):

sudo apt-get install snort

3

  • PPPoE gateway – mulți furnizori de Internet oferă serviciile de acces la Internet prin intermediul unei conexiuni de PPPoE, conexiune ce necesită de obicei un echipament specializat. Interfața ethernet a plăcii Raspberry Pi poate fi utilizată și în acest scop utilizând pachetul ppp. Se poate vedea și materialul (*).
  • Server proxy – serviciu ce permite accelerarea traficului web într-o rețea cu conexiune la Internet mai lentă. Distribuția Raspbian include pachetul squid ce implementează această funcționalitate. Se poate vedea și materialul (*). Suplimentar, combinând funcționalitatea oferită de pachetul squid cu funcționalitatea oferită de sistemul antivirus clamav se poate obține un sistem ce poate scana tot traficul web împotriva aplicațiilor malițioase și a programelor de tip virus. În acest sens se pot consulta materialele (*), (*).

Cum putem utiliza placa Raspberry Pi ca platformă de blog

Publicarea de materiale proprii în rețeaua Internet este foarte simplă prin intermediul platformelor de tip blog. Fie că este vorba de poezii, rețete culinare sau proiecte de robotică, prin intermediul unui blog personal puteți face toate lucrările personale să devină accesibile oricui de oriunde. În general o pagină blog este găzduită de un server Internet dar nu este nevoie întotdeauna de o mașină de calcul scumpă și cu capacitate de procesare mare pentru acest lucru. Dacă nu există un număr mare de utilizatori simultani și nu găzduim mai multe pagini blog pe același sistem de calcul performanțele sistemului pot fi modeste, ca cele oferite de o placă Raspberry Pi 3. În cadrul materialului de față vom explora instalarea și funcționarea unei platforme blog utilizând placa Raspberry Pi. În felul acesta vom putea să obținem o platformă blog pe care o putem duce cu noi în buzunar…

1

O platformă blog necesită un server web, un limbaj de programare specific web, un sistem de baze de date și o aplicație blog. Cea mai cunoscută aplicație blog este WordPress. Pentru a putea instala aplicația WordPress trebuie să avem deja instalate aplicațiile server web, sistemul de baze de date și limbajul web specific. Pentru a instala aceste funcționalități vom utiliza Apache ca server web, MySQL ca sistem de baze de date și PHP ca limbaj web (combinația de aplicații este regăsită și sub denumirea de AMP – Apache Mysql Php, sau LAMP – Linux Apache Mysql Php). Toate cele trei aplicații sunt disponibile ca pachete sub sistemul de operare Raspbian (pentru teste a fost utilizat sistemul de operare Raspbian 8 Jessie kernel 4.9.28-v7+).

Combinația AMP nu este singura soluție disponibilă pentru instalarea aplicației WordPress, se pot folosi alte aplicații de tip server web și bază de date – limbajul PHP este obligatoriu deoarece aplicația WordPress este scrisă în PHP, dar este combinația pe care o vom utiliza în prezentarea ce urmează.. Există chiar o distribuție de sistem de operare dedicată pentru aplicația WordPress pe Raspberry Pi: PressPi. Pentru mai multe informații se pot parcurge și materialele: (*), (*), (*), (*).

 

Instalarea serverului web Apache și a limbajului PHP

Instalarea serverului web Apache se face cu ajutorul comenzii (în Terminal):

sudo apt-get install apache2

După instalare se poate verifica foarte ușor funcționarea serviciului web accesând adresa IP a plăcii Raspberry Pi cu ajutorul unui client web (browser).

3

Fișierele pe care se bazează serviciul web se găsesc în directorul /var/www/html. Se pot efectua teste modificând fișierul index.html (fișierul implicit servit de serverul web).

Instalarea limbajului PHP și a extensiei de legătură cu serverul Apache se face cu ajutorul comenzii (în Terminal):

sudo apt-get install php5 libapache2-mod-php5

După instalare se va reporni serviciul Apache și se pot face primele teste (se va înlocui fișierul index.html cu un fișier PHP – index.php).

sudo /etc/init.d/apache2 restart

sudo rm /var/www/html/index.html

sudo nano /var/www/html/index.php

Fișierul index.php de test poate conține de exemplu:

<?php phpinfo(); ?>

Ce va avea ca efect:

4

 

Instalarea serverului de baze de date MySQL

Instalarea serverului MySQL se face cu ajutorul comenzii (în Terminal):

sudo apt-get install mysql-server php5-mysql

La finalul instalării va trebui să stabiliți o parolă pentru utilizatorul administrator (root) al serverului de baze de date (păstrați această parolă deoarece fără ea nu se va putea lucra în viitor cu serverul MySQL) :

5

După finalizarea instalării serverul Apache trebuie repornit:

sudo /etc/init.d/apache2 restart

 

Instalarea și configurarea platformei WordPress

Aplicația WordPress se va copia de pe Internet și se va dezarhiva în directorul serverului web (/var/www/html):

cd /var/www/html

sudo wget https://wordpress.org/latest.tar.gz

sudo tar xfz latest.tar.gz

sudo rm latest.tar.gz

sudo chown -R www-data: wordpress

Următorul pas este să creăm o bază de date goală (și un utilizator asociat) ce va fi utilizată pentru instalarea WordPress (pentru mai multe informații puteți vedea și „The MySQL Command-Line Tool”):

mysql -uroot -p

mysql> CREATE DATABASE wordpress;

mysql> CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO ‘newuser’@’localhost’;

mysql> FLUSH PRIVILEGES;

mysql> exit

Acum putem porni instalarea aplicației WordPress accesând adresa IP a sistemului Raspberry Pi urmată de /wordpress (http://ADRESAIP/wordpress). Primul lucru este să alegem limba care va fi utilizată de aplicația WordPress:

6

Trebuie să pregătim și să introducem în interfața web de instalare datele legate de baza de date și utilizatorul asociat – date stabilite la pasul de creare a bazei de date:

7

Trebuie stabilite titlul blogului și datele contului de administrare (Username și Password) și putem lansa efectiv instalarea (Install WordPress):

8

După finalizarea instalării putem accesa platforma blog utilizând adresa IP a plăcii Raspberry Pi urmată de /worpress, bineînțeles la acest moment pagina blog este dată de un șablon standard:

9.png

Pentru personalizarea paginii blog accesați interfața de administrare a platformei utilizând adresa IP a plăcii Raspberry Pi urmată de /wordpress/wp-admin :

10

Platforma WordPress pune la dispoziția utilizatorului funcționalități extrem de puternice permițând realizarea de website-uri de complexitate mare. Printre facilitățile puse la dispoziție de platformă se pot enumera :

  • Teme de stil predefinit

11

  • Pagini web ce se pot insera foarte ușor în site-ul web creat

12

  • Colecții de obiecte multimedia (poze, filme)

13

  • Componente suplimentare ce se pot instala pentru a diversifica funcționalitatea site-ului web

14

Pentru mai multe informații despre modul de personalizare a unui website bazat pe platforma WordPress se pot consulta și materialele (*), (*), (*), (*).

Cum putem securiza un sistem Raspberry Pi?

Suntem obișnuiți să considerăm placa Raspberry Pi un sistem de dezvoltare a cărui scop este unul strict funcțional la fel ca și în cazul unei plăci echipate cu un microcontroler. Uităm adesea că avem de a face cu o placă ce rulează un sistem de operare și care necesită un set de reguli de securitate asemănătoare unui sistem de calcul de uz general (desktop sau server). În momentul în care integrăm placa de dezvoltare într-un proiect real, mai ales într-un proiect cu conectivitate Internet, lipsa implementării unor măsuri de securitate compromite fără discuție scopul proiectului – degeaba funcțional sistemul se comportă corect atâta timp cât el poate fi afectat foarte ușor de incidente malițioase sau accidente de utilizare.

Există multe documentații ce dezbat acest subiect și parcurgerea lor poate să creioneze mai bine dimensiunea și seriozitatea problemei:

Securing Your Raspberry Pi: From Passwords to Firewalls

http://www.makeuseof.com/tag/securing-raspberry-pi-passwords-firewalls/

IoT Security: Tips to Protect your Device from Bad Hackers

https://www.hackster.io/charifmahmoudi/iot-security-tips-to-protect-your-device-from-bad-hackers-768093

Make your Raspberry Pi more secure

http://iot-projects.com/index.php?id=make-your-raspberry-pi-more-secure

Securing Your Raspberry Pi

https://www.madirish.net/566

How to set up a secure Raspberry Pi web server, mail server and Owncloud installation

https://www.pestmeester.nl/

Raspberry Pi Firewall and Intrusion Detection System

http://www.instructables.com/id/Raspberry-Pi-Firewall-and-Intrusion-Detection-Syst/

Setting up a (reasonably) secure home web-server with Raspberry Pi

https://mattwilcox.net/web-development/setting-up-a-secure-home-web-server-with-raspberry-pi

În cadrul proiectului de față vom structura regulile de securitate specifice unei plăci Raspberry Pi în trei categorii dictate de nivelul la care se aplică:

  • Securitate fizică
  • Reguli minimale de operare
  • Instrumente suplimentare de securitate

 

Securitatea fizică a unei plăci Raspberry Pi

Fără a avea intenția de a cădea în desuet trebuie subliniată importanța integrității fizice a sistemului de calcul. Degeaba asigurăm o securitate logică impecabilă dacă din punct de vedere fizic sistemul este amenințat de incidente de funcționare electrică sau mecanică. Unele dintre cele mai importante reguli ce trebuie respectate în utilizarea plăcii Raspberry Pi sunt:

  • Asigurarea unei surse de alimentare stabilizată și de putere electrică suficient de mare. Nu se recomandă utilizarea unor surse de tensiune ieftine. În cazul în care sistemul asigură o funcționalitate critică (controlul unei centrale termice sau a unui sistem de securitate) este recomandată utilizarea suplimentară a unui sistem UPS. Se recomandă utilizarea alimentatorului oficial al plăcii de dezvoltare:

2

https://www.robofun.ro/raspberry-pi-si-componente/alimentator-raspberry-pi-2.5-a

  • Utilizarea unei carcase este absolut necesară. Această are rolul de proteja placa de dezvoltare de praf și alte mizerii dar și de a preîntâmpina distrugrea acesteia din cauza unei descărcări electrostatice. Improvizarea unei învelitori de carton sau din alte materiale moi nu este recomandă. Se poate alege o variantă potrivită în funție de domeniul de utilizare a sistemului final:

3

https://www.robofun.ro/raspberry-pi-si-componente/raspberry-cutii

  • Utilizarea unui radiator sau / și a unui ventilator pentru microprocesorul plăcii de dezvoltare nu se face doar în cazul forțării frecvenței procesorului (overclocking). Menținerea unei temperaturi scăzute pentru procesor crește durata de funcționare a acestuia și crește fiabilitatea sistemului final.

4

https://www.robofun.ro/raspberry-pi-si-componente

  • Ignorată adesea, componenta ce stochează sistemul de operare al plăcii de dezvoltare – cardul de memorie – este un element extrem de important pentru buna funcționare a sistemului final. Carduri cu viteză mică de acces, uzate sau cu defecte de fabricație conduc la probleme ce pot fi anevoios de diagnosticat și crează multe bătăi de cap.

5

 

Reguli minimale de operare

Aceste reguli trebuie implementate indiferent de scopul sistemului (dezvoltare sau proiect operațional) fiind esențiale în operare eficientă a plăcii de dezvoltare Raspberry Pi și reprezentând un nucleu de bune practici aplicabil pentru sisteme de calcul diverse (de la routere WiFi până la servere):

  • Schimbarea datelor de conectare implicite. Minimal se recomandă schimbarea parolei utilizatorului pi cu ajutorul comenzii passwd dar mult mai bine este crearea unui cont utilizator nou și ștergerea contului pi. În acest fel sistemul nu poate fi accesat utilizând date de conectare bine cunoscute.
  • Utilizarea versiunii potrivite a sistemului de operare. Pentru placa de dezvoltare Raspberry Pi sunt disponibile mai multe variante (distribuții) ale sistemului de operare Linux. Fiecare dintre aceste variante are un anumit specific ce este potrivit unui anumit domeniu de utilizare. Chiar distribuția oficială a plăcii, distribuția Raspbian, are două versiuni: Raspbian Jessie with PIXEL și Raspbian Jessie Lite (cea din urmă nu include interfața grafică ci doar consolă de tip linie de comandă) – dacă sistemul final nu va include un ecran grafic este o risipă de resurse să se utilizeze versiunea completă (with PIXEL). În plus, un sistem de operare încărcat (cu multe pachete software instalate) prezintă mai multe riscuri de securitate.

6

(instalarea interfeței grafice doar pentru a controla sistemul de la distanță prin intermediul VNC este o opțiune extrem de infantilă, controlul cel mai bun al unui sistem Linux se realizează la nivel de linie de comandă – utilizați SSH)

  • Menținerea software-ului la zi. Instalarea ultimelor versiuni ale pachetelor software ce compun distribuția Linux nu este un moft ce ține de noi funcționalități introduse – apariția unor noi versiuni de programe este dictată de multe ori de rezolvarea unor probleme (bug-uri) de securitate.

!!! sudo apt-get update !!!

!!! sudo apt-get upgrade !!!

  • Dezinstalarea sau dezactivarea pachetelor software nefolosite. Fiecare pachet software este un posibil furnizor de probleme de securitate. Dezinstalarea pachetelor neutilizate este una dintre cele mai bune soluții. O completare a acestei reguli constă în dezactivarea serviciilor neutilizate (de exemplu, serviciul SSH reprezintă un risc ridicat de securitate, este recomandată oprirea acestui serviciu dacă nu îl utilizăm). O listă a serviciilor (a programelor ce pornesc odată cu sistemul de operare) se poate obține cu ajutorul comenzii:

sudo service –status-all | grep +

dezactivarea unui serviciu se va face cu ajutorul comenzii:

sudo systemctl disable nume_serviciu

  • Configurarea resurselor hardware în conformitate cu scopul sistemului. Chiar dacă în sine o resursă hardware, activată și neutilizată, nu implică o vulnerabilitate de securitate, este bine să avem activate doar resursele hardware utilizate (aici vorbim de porturile I/O, I2C, SPI, port serial etc.). Acest lucru se poate configura cu ajutorul comenzii:

sudo raspi-config

7

Un exemplu suplimentar îl reprezintă memoria plăcii de dezvoltare, este recomandată micșorare memoriei alocate procesorului grafic dacă nu utilizăm interfața grafică eliberând astfel mai multă memorie pentru CPU (se poate face acest lucru din Advanced -> Memory Split).

8

Instrumente suplimentare de securitate

În cele ce urmează vom prezenta o serie de programe care, utilizate corect, pot crește nivelul de securitate a unui sistem Raspberry Pi.

9

Firewall/iptables

este un mecanism intern al sistemului de operare ce permite filtrarea comunicațiilor de rețea. Filtrarea se realizează după reguli încadrate în trei mari categorii: INPUT – conexiuni de rețea de intrare, OUTPUT – conexiuni de rețea de ieșire, FORWARD – conexiuni de rețea ce traversează sistemul. Cu ajutorul acestui mecanism se poate decide ce conexiuni de rețea va accepta sistemul nostru, de la ce adrese, ce servicii (ce porturi) sunt accesate etc. De exemplu, următoarele două instrucțiuni:

sudo iptables -A INPUT -s xxx.xxx.xxx.xxx -j A

CCEPT

sudo iptables -A INPUT -j REJECT

vor avea ca efect acceptarea conexiunilor de la adresa IP xxx.xxx.xxx.xxx și rejectarea oricărei alte conexiuni – sistemul nostru va putea fi accesat doar de la adresa IP indicată. Aceasta este o practică foarte bună dacă adresele sistemelor cu care comunică sistemul nostru sunt fixe. Pentru a lista toate regulile de filtrare se poate folosi comanda:

sudo iptables -L

Fail2ban – este un utilitar ce permite blocarea comunicației de rețea cu o anumită adresă IP în urma activității malițioase generate de la acea adresă: mai multe încercări de conectare la distanță nereușite, scanarea de vulnerabilități de la distanță ș.a.m.d. Funcționarea acestuia se bazează pe scanarea fișierelor jurnal ale diverselor servicii sistem (SSH, web, mail) și, în cazul detectării unor activități rău intenționate, pe introducerea unei restricții temporare în sistemul iptables.

10

Pentru utilizare primul pas este instalarea pachetului software:

sudo apt-get install fail2ban

După care se va edita fișierul /etc/fali2ban/jail.local și se vor introduce reguli de supraveghere. Următorul bloc este un exemplu bun pentru serviciul SSH (orice adresă IP cu trei încercări nereușite de conectare va fi blocată timp de 15 minute, excepție făcând adresele locale din clasa 192.168.0.0/16):

[ssh]
enabled = true
port = ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]
logpath = /var/log/auth.log
maxretry = 3
bantime = 900
ignoreip = 192.168.0.0/16

Pentru ca modificările în fișierul de configurare să aibă efect vom reporni serviciul:

sudo /etc/init.d/fail2ban restart

Mai multe informații despre programul fail2ban puteți găsi la adresa:

http://www.fail2ban.org/wiki/index.php/Main_Page

11

rkhunter & chrootkit – sunt două programe menite să scaneze sistemul împotriva unor aplicații malițioase (rootkit-uri). Chiar dacă incidența infectării cu aplicații de tip virus este mică în cazul sistemelor Linux asta nu înseamnă că nu există amenințări la adresa sistemului de fișiere local. Rootkit-urile sunt programe, cel mai adesea rău intenționate, care modifică fișiere sistem ascunzând alte aplicații sau permițând accesul de la distanță unor persoane neautorizate. De cele mai multe ori deținătorul sistemului nici nu e conștient de infectarea acestuia. Cele două aplicații verifică integritatea fișierelor sistem și detectează aplicațiile de tip rootkit. Instalarea aplicațiilor se face cu ajutorul comenzii:

sudo apt-get install chkrootkit rkhunter libwww-perl

Rularea aplicației chkrootkit se face cu ajutorul comenzii:

sudo chkrootkit

12

Aplicația rkhunter se poate utiliza cu ajutorul comenzilor:

sudo rkhunter –update

sudo rkhunter –check

13

logwatch – este o aplicație de monitorizare și raportare pentru fișierele jurnal sistem (log-uri). Chiar dacă este un instrument pasiv (de monitorizare), utilizarea acestuia poate preveni foarte multe incidente de securitate prin alertarea timpurie a deținătorului sistemului. Instalarea acestui program se face cu ajutorul comenzii:

sudo apt-get install logwatch

14

După instalare aplicația logwatch va rula zilnic și va raporta prin email către administratorul sistemului (utilizatorul root) sumarul fișie

relor jurnal sistem. Ajustarea parametrilor de funcționare se poate face prin editarea fișierului /usr/share/logwatch/default.conf/logwatch.conf . Testarea aplicației se poate face cu ajutorul comenzii:

sudo logwatch –range=today

 

Instrumentele software prezentate nu reprezintă decât câteva exemple de aplicații ce pot ajuta utilizatorii să mențină un nivel de securitate adecvat pentru sistemele lor Raspberry Pi. Există și alte aplicații ce pot fi utilizate în funcție de scopul și domeniul de utilizare a sistemului. Vă recomandăm încă două aplicații interesant de explorat:

Snort – sistem de detecție și prevenție a intruziunilor (IDPS), foarte util în cazul sistemelor de tip gateway.

https://www.snort.org/

ClamAv – sistem open-source antivirus, necesar în cazul implementării unor servere de fișiere.

https://www.clamav.net/

Cum putem partaja fișiere în rețea utilizând o placă Raspberry Pi?

Partajarea de fișiere în rețea este necesară în mai multe situații: proiecte multi-sistem ce partajează același sistem de fișiere (calcul paralel, redundanță a serviciilor, acces concurent la o colecție de date), segregare funcțională în cadrul unui serviciu multi-sistem sau pur și simplu disponibilitatea unor fișiere către mai multe sisteme de calcul (server de fișiere). Există mai multe metode prin care o placă Raspberry Pi poate face disponibile fișiere locale prin intermediul rețelei. Lecția de față prezintă două dintre acestea: prin intermediul serverului SSH și prin intermediul serverului SAMBA.

Partajarea de fișiere prin intermediul serviciului Secure Server Shell

Serviciul SSH este gândit pentru a putea accesa de la distanță un sistem Linux la nivel de consolă (linie de comandă). Pe lângă conectarea la consola sistemului serviciul SSH permite și transferul de fișiere prin intermediul componentei SCP (Secure Copy Protocol) – componentă care se află în spatele posibilității de a partaja fișiere în rețea. Această modalitate de partajare este specifică sistemelor Linux, cu alte cuvinte putem partaja fișiere între mai multe plăci Raspberry Pi sau între o placă Raspberry Pi și alte sisteme ce rulează sistemul de operare Linux. Există diverse utilitare ce expun această facilitate altor sisteme de operare dar în cadrul acestei lecții ne vom limita la sistemul de operare Linux.

Pentru mai multe informații legate de funcționarea serviciului SSH se pot vedea și:

Raspberry Pi – Remote Access

https://www.raspberrypi.org/documentation/remote-access/

Adafruit’s Raspberry Pi Lesson 6. Using SSH

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-6-using-ssh/

Sistemul care partajează fișierele în rețea (sistemul server) trebuie să aibă serverul de SSH pornit (pachetul software SSH este instalat implicit în distribuția Rasbpian dar nu pornește în mod automat din motive de securitate):

sudo /etc/init.d/ssh start

Pentru a configura pornirea automată a serviciului la restartarea sistemului putem utilitarul raspi-config sau putem utiliza comanda:

sudo systemctl enable ssh

Pe sistemul care va accesa fișierele în rețea (sistemul client) este nevoie să instalăm pachetul sshfs (SSH File System):

sudo apt-get install sshfs

Pentru a conecta un director la sisteme de fișiere local vom utiliza comenzile:

mkdir director_nou

sshfs user@xxx.xxx.xxx.xxx: director_nou

unde user este utilizatorul de pe sistemul server și xxx.xxx.xxx.xxx adresa de rețea a sistemului server. În directorul nou creat și conectat la sistemul server se va mapa (implicit) directorul home al utilizatorului user. Dacă dorim să mapăm un alt director se va completa comanda (după 🙂 cu calea către acel director dar, atenție, utilizatorul cu care ne conectăm trebuie să aibă drepturile adecvate asupra acelui director.

Pentru a deconecta legătura dintre sisteme se va utiliza comanda:

umount director_nou

În cele prezentate până acum am arătat o modalitate foarte simplă de partajare de fișiere între două sisteme Linux (oricare dintre ele, sau amândouă, putând fi plăci Raspberry Pi). Totuși, pentru a crea un server de fișiere într-o rețea locală, o soluție mult mai robustă este utilizarea serviciului SAMBA – serviciu ce permite partajarea de fișiere și de dispozitive de tip imprimantă cu sisteme ce rulează diverse sisteme de operare (în special Windows). Prin intermediul instalării serviciului SAMBA pe o placă Raspberry Pi putem partaja în rețea dispozitive de stocare de mare capacitate (hard-disk-uri USB de exemplu) obținând astfel dispozitive de stocare de rețea la un preț accesibil – dispozitivele hardware dedicate de acest tip au un cost destul de mare…

2

Pentu mai multe detalii legate de serviciul SAMBA puteți consulta și:

Samba – Wikipedia

https://en.wikipedia.org/wiki/Samba_(software)

What is Samba?

https://www.samba.org/samba/what_is_samba.html

 

Partajarea de fișiere prin intermediul serviciului SAMBA

Serverul SAMBA nu este instalat implicit și din acest motiv primul pas este instalarea pachetelor aferente:

sudo apt-get install samba

Dacă dorim să partajăm în rețea unități de stocare ce au fost formatate NTFS (sistem de fișiere specific ultimelor versiuni ale sistemului de operare Windows) este necesar să instalăm suportul pentru acest tip de sistem de fișiere pentru a putea conecta aceste unități la placa Raspberry Pi:

sudo apt-get install ntfs-3g

Pentru a defini partjarea dorită vom edita fișierul /etc/samba/smb.conf și vom adăuga la sfârșit:

[Share]

comment = share

path = /calea/catre/directorul/partajat

writeable = yes

only guest = yes

create mask = 0777

directory mask = 0777

browseable = yes

public = yes

unde share va fi numele sub care vom vedea partajarea și /calea/catre/directorul/partajat este calea completa a directorului ce urmează a fi partajat (poate fi calea către locul unde am montat drive-ul USB).  Salvăm și pornim serverul SAMBA:

sudo /etc/init.d/samba start

Dacă dorim pornirea automată a serverului la repornirea sistemului:

sudo systemctl enable samba

De pe un sistem de calcul ce rulează Windows, din aceiași rețea locală ca și sistemul Raspberry Pi, vom vedea imediat în Network sistemul Raspberry Pi și vom putea utiliza fișierele partajate. Configurația precedentă permite accesul la fișierele partajate fără nici un fel de autentificare (utilizator/parolă).

3

4

În cazul în care dorim să partajăm anumite directoare în mod restricționat trebuie să parcurgem următorii pași:

Creăm un grup de utilizatori smb:

sudo groupadd smb

Adăugăm un utilizator acestui grup (poate să fie utilizatorul implicit pi sau un alt utilizator):

sudo adduser pi smb

Stabilim o parolă pentru accesul în rețea:

sudo smbpasswd -a pi

Edităm fișierul /etc/samba/smb.conf și adăugăm la final:

[Share2]

comment = share2

path = /calea/catre/directorul/partajat

writeable = yes

only guest = no

create mask = 0777

directory mask = 0777

browseable = yes

public = no

Repornim serverul de SAMBA:

sudo /etc/init.d/samba restart

Acest nou director partajat va fi accesibil doar prin introducerea numelui de utilizator și a parolei stabilite.

5

Configurațiile precedente (prezentate pentru serviciile SSH și SAMBA) au fost testate pe plăci Raspberry Pi rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.45-v7+, sshfs 2.5-1 și samba 2:4.2.14+dfsg-0+deb8u2.

Pentru mai multe informații despre configurarea serviciului SAMBA pe o placă Raspberry Pi se pot parcurge și următoarele materiale:

Raspberry Pi Bit-Torrent/DLNA/SAMBA Server Part 2: Setting up Samba

http://joerpi.blogspot.ro/2013/06/raspberry-pi-bit-torrentdlnasamba.html

How to Turn a Raspberry Pi into a Low-Power Network Storage Device

http://www.howtogeek.com/139433/how-to-turn-a-raspberry-pi-into-a-low-power-network-storage-device/

How-To: Share a folder with a Windows computer from a Raspberry Pi

http://raspberrypihq.com/how-to-share-a-folder-with-a-windows-computer-from-a-raspberry-pi/

Cum putem partaja dispozitive USB între două plăci Raspberry Pi?

Avantajele partajării de dispozitive USB între mai multe dispozitive sunt evidente: accesul la distanță la un element de scanare, la elemente ale interfațării cu utilizatorul (tastatură, mouse) sau chiar accesul la sisteme de stocare (USB drives). Partajarea dispozitivelor USB se realizează prin intermediul rețelei și poartă denumirea de USB over Ethernet, USB over Network sau USB over IP. Există numeroase produse comerciale (software, hardware sau combinație software și hardware) ce oferă posibilitatea de a partaja dispozitive USB între mai multe sisteme de calcul dar, în general, aceste produse au un cost destul de mare. Câteva exemple:

Industrial USB 2.0 Over IP Network 4-Port Hub – TCP/IP Network

https://www.coolgear.com/product/industrial-usb-2-0-ip-network-4-port-hub-share-usb-device-tcpip-network

USB IP Extender

http://www.digivision.it/prodotti/NTI/usb-ip-extender.html

USB over Network – USB for Remote Desktop

http://www.usb-over-network.com/

USB over Network – Share and access your USB devices over local network or Internet

http://www.usb-over-network.com/usb-over-network.html

Grație proiectului open-source USB/IP putem implementa (fără nici un cost de licențiere) o partajare de dispozitive USB între sisteme ce rulează Linux (există și portări ale proiectului pentru Windows și MacOS dar nu sunt foarte stabile). În cadrul proiectului de față vom ilustra instalarea și utilizarea acestui proiect software pe două plăci de dezvoltare Raspberry PI.

2

http://usbip.sourceforge.net/

Componentele software USB/IP permit partjarea de dispozitive USB de diverse tipuri:

  • Dispozitive de stocare USB;
  • Dispozitive de intrare (tastatură, mouse);
  • Camere video sau sisteme audio USB;
  • Imprimante, scanere și chiar interfețe de rețea.

Utilizarea dispozitivelor partajate se face utilizând driverele originale ale acestora dar se introduce un nivel suplimentar de retransmitere a mesajelor I/O specifice comunicației USB: VHCI Driver – Virtual Host Controller Interface <-> Stub Driver. Sistemul care găzduiește fizic dispozitivul USB și îl partajează în rețea joacă rolul de Server iar sistemul care instalează virtual la distanță dispozitivul USB joacă rolul de Client.

 3

 

 Instalarea și configurarea USB/IP pe o placă Raspberry PI (server)

Pentru instalarea pachetului software USB/IP se va utiliza comanda (pachetul este inclus în distribuția Raspbian 7 și 8):

sudo apt-get install usbip

Pentru a vedea toate dispozitivele USB din sistem se va utiliza comanda lsusb:

4

Vom încărca componentele driver pentru server cu ajutorul comenzii:

sudo modprobe usbip-host

după care vom putea vizualiza care din dispozitivele USB sunt vizibile pentru partajare:

sudo usbip list -l

5

Pentru pornirea componentei server vom utiliza comanda:

sudo usbipd -D

iar pentru a partaja un dispozitiv vom utiliza comanda:

sudo usbip bind -b x-x.x

unde x-x.x este indicativul dispozitivului USB dorit.

În exemplul nostru dacă dorim să partajăm dispozitivul 1-1.2 care nu este altceva decât un stick USB vom da comanda:

sudo usbip bind -b 1-1.2

și vom putea verifica disponibilitatea lui cu ajutorul comenzii:

sudo usbip list -r xxx.xxx.xxx.xxx

unde xxx.xxx.xxx.xxx este adresa de rețea IP a sistemului.

6

 

Instalarea și configurarea USB/IP pe o placă Raspberry Pi (client)

La fel ca și în cazul sistemului server se va instala pachetul software USB/IP:

sudo apt-get install usbip

Pentru a vedea dispozitivele partajate de sistemul server se folosește comanda:

sudo usbip list -r xxx.xxx.xxx.xxx

unde xxx.xxx.xxx.xxx este adresa IP a sistemului server.

”Conectarea” dispozitivului USB presupune încărcarea driverului VHCI:

sudo modeprobe vhci-hcd

și atașarea propriu-zisă a dispozitivului:

sudo usbip attach –host xxx.xxx.xxx.xxx –busid x-x.x

Dacă atașarea s-a realizat cu succes dispozitivul USB se va putea vizualiza cu ajutorul comenzii lsusb.

7

În cadrul exemplului nostru, fiind vorba de un dispozitiv de stocare USB, dispozitivul se va putea utiliza ca și cum ar fi conectat local. Se va verifica identificarea ca și dispozitiv de stocare cu ajutorul comenzii:

ls -l /dev/disk/by-uuid/

8

și se va putea monta în cadrul sistemului local de fișiere:

sudo mkdir /mnt/usb

sudo mount /dev/sda /mnt/usb

Testarea configurației prezentate s-a făcut pe două plăci Raspberry Pi rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.45-v7+, și usbip 2.0+3.16.7-ckt20-1.

O alternativă comercială la proiectul USB/IP este VirtualHere USB Server. Acest produs comercial are componentă binară server specială pentru placa Raspberry Pi, client pentru mai multe sisteme de operare (inclusiv Windows) și poate fi utilizat și în variantă trial (se poate partaja un singur dispozitiv USB și se va afișa o fereastră de avertizare la fiecare utilizare).

9

https://virtualhere.com/

Pentru instalarea acestui produs comercial se poate vedea tutorialul:

VirtualHere with Raspberry Pi as USB server

http://vmwarebits.com/content/virtualhere-raspberry-pi-usb-server

Raspberry Pi ca server de timp

În lipsa unei conexiuni Internet un sistem bazat pe Raspberry Pi este incapabil să mențină ora și data exactă dacă se întrerupe alimentarea cu energie electrică. Cea mai simplă modalitate de a rezolva acest lucru este adăugarea unui modul RTC la placă (așa cum am arătat și în proiectul Conectarea unui RTC I2C la o placă Raspberry Pi). În cadrul acestui proiect vom prezenta o modalitate de a transforma un sistem Raspberry Pi în sursă de timp într-o rețea de sisteme fără conexiune Internet. Imaginați-vă o rețea de plăci Raspberry Pi, fără conectivitate Internet, care au nevoie de oră și dată exacte și, mai mult decât atât, acestea să fie sincronizate. Instalarea a câte un modul RTC pe fiecare sistem va rezolva problema orei și datei pe fiecare sistem în parte dar nu va asigura sincronizarea exactă între sisteme. Din acest motiv o soluție mult mai elegantă este instalarea unui singur modul RTC și sincronizarea prin rețea a celorlalte sisteme cu sistemul pe care este instalat modulul RTC.

1

Ca modul RTC vom utiliza un modul Sparkfun DeadOn RTC bazat pe circuitul DS3234 – circuit RTC extrem de precis și care are un sistem de compensare a frecvenței de ceas pentru variații de temperatură.

2

https://www.robofun.ro/module/module-rtc/real_time_clock_DS3234

Modulul RTC necesită o baterie de 3V / 12mm (CR1220 de exemplu) pentru a menține ora și data în lipsa alimentării cu energie electrică a sistemului – bateria nu este inclusă la cumpărarare modulului.

Interconectarea cu placa Raspberry Pi se face prin intermediul magistralei seriale SPI și necesită următoarele conexiuni: pinul SS al modulului se va conecta la pinul GPIO8, pinul MOSI la pinul GPIO10, pinul MISO la pinul GPIO8, pinul SCLK la pinul GPIO11, pinul VCC la 3.3V și pinul GND la GND (precum în schema următoare).

3

Pentru a comunica cu modulul este necesar să activăm comunicația SPI prin intermediul utilitarului raspi-config:

sudo raspi-config

4

5

6

 

După activarea comunicației SPI vom crea un fișier ds3234-rpi-overlay.dts în care vom introduce următoarele:

/dts-v1/;

/plugin/;

/ {

    compatible = “brcm,bcm2708”;

    fragment@0 {

        target = <&spi0>;

        __overlay__ {

            spidev@0 {

                status = “disabled”;

            };

            ds3234@0 {

                compatible = “ds3234”;

                reg = <0>;

                #address-cells = <1>;

                #size-cells = <0>;

                spi-max-frequency = <500000>;

            };

        };

    };

};

și pe care îl vom transforma cu ajutorul comenzii:

sudo dtc -@ -I dts -O dtb -o ds3234-rpi-overlay.dtb ds3234-rpi-overlay.dts

și să copiem fișierul rezultat în /boot/overlay/ (fișierele de lucru pot fi șterse ulterior)

cp ds3234-rpi-overlay.dtb /boot/overlays/

În cazul în care comanda dtc nu este recunoscută trebuie să instalăm pachetul software device-tree-compiler:

sudo apt-get install device-tree-compiler

În final trebuie să ne asigurăm că fișierul /boot/config.txt conține următoarele două linii:

dtparam=spi=on

dtoverlay=ds3234-rpi

și să restartăm sistemul:

sudo reboot

După repornire vom verifica încărcarea modulului asociat RTC-ului:

pi@raspberrypi ~ $ lsmod | grep ds3234

rtc_ds3234              2088  0

și inițializarea corectă a acestuia:

pi@raspberrypi ~ $ dmesg | grep ds3234

[4.443480] ds3234 spi0.0: Control Reg: 0x1c

[4.443617] ds3234 spi0.0: Ctrl/Stat Reg: 0x88

[4.456070] ds3234 spi0.0: rtc core: registered ds3234 as rtc0

Din acest moment sistemul va utiliza modulul RTC ca sursă de timp. Inițializarea acestuia se va face cu ajutorul comenzii de scriere în memoria internă (sincronizarea de timp inițială):

sudo hwclock -w

iar verificarea se poate face cu ajutorul comenzii:

sudo hwclock -r

Pentru ca ora și data sistemului să fie disponibile în rețea este necesară configurarea unui server de NTP (Network Time Protocol). În general pachetul ntp este deja instalat în distibuția Linux a plăcii Raspberry Pi dar funcționează ca și client (sincronizează ceasul local prin intermediul rețelei Internet utilizând servere NTP publice). Pentru a activa caracteristica de server este necesară editarea fișierului /etc/ntp.conf, comentarea tuturor liniilor și înscrierea următoarei configurații (sau se poate înlocui fișierul cu totul):

driftfile /var/lib/ntp/ntp.drift

statistics loopstats peerstats clockstats

filegen loopstats file loopstats type day enable

filegen peerstats file peerstats type day enable

filegen clockstats file clockstats type day enable

Pentru activarea propriu-zisă a componentei de server sunt necesare următoarele linii (15 este rangul Stratum al serverului NTP, în cazul nostru este extrem de scăzut fiindcă sincronizarea nu se bazează pe un server extern):

server 127.127.1.0

fudge 127.127.1.0 stratum 15

Următoarele două linii sunt necesare pentru ca celelalte sisteme să poată interoga serverul (IPv4 și IPv6):

restrict -4 default kod notrap nomodify nopeer noquery

restrict -6 default kod notrap nomodify nopeer noquery

Vom permite interogările de pe sistemul local:

restrict 127.0.0.1

restrict ::1

și din rețeaua locală din care face parte sistemul (se presupune că este o clasă C de tipul 192.168.xxx.0/24):

restrict 192.168.xxx.0 mask 255.255.255.0 notrap

broadcast 192.168.xxx.255

După salvarea fișierului se va reporni serviciul ntp:

sudo /etc/init.d/ntp restart

și vom verifica starea serverului NTP:

pi@raspberrypi /etc $ ntpq -c rv 127.0.0.1

associd=0 status=0515 leap_none, sync_local, 1 event, clock_sync,

version=”ntpd 4.2.6p5@1.2349-o Mon Jul 25 22:35:28 UTC 2016 (1)”,

processor=”armv7l”, system=”Linux/4.4.38-v7+”, leap=00, stratum=16,

precision=-20, rootdelay=0.000, rootdisp=10.927, refid=…,

reftime=dc06888a.0d4b5241  Thu, Dec 22 2016 19:14:50.051,

clock=dc06888a.405fc437  Thu, Dec 22 2016 19:14:50.251, peer=55790, tc=6,

mintc=3, offset=0.000, frequency=-5.806, sys_jitter=0.000,

clk_jitter=0.001, clk_wander=0.000

Pe celelalte sisteme din rețea (sistemele client) se va edita același fișier /etc/ntp.conf , se va configura o directivă server cu adresa sistemului configurat ca server NTP (celelalte servere se pot comenta) și se va reporni serviciul ntp.

Configurația prezentată a fost testată pe sisteme rulând Raspbian GNU/Linux 8 (jessie), kernel 4.4.38-v7+ și ntp 4.2.6p5.

Materialul de față a fost inspirat de următoarele proiecte:

Raspberry PI and your SPI Real Time Clock (RTC)

http://www.sciencegizmo.com.au/?p=137

The Raspberry Pi as a Stratum-1 NTP Server

http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html

gsm & 3G shield breadboard tutorial

Pin to pin compatible, compact and light weight modules and having embedded USB ports, c-uGSM and d-u3G shields (micro) are itbrainpower.net latest GSM / 3G-UMTS shields compatible with Arduino, Raspeberry PI, Raspberry PI2 or with any other 2.8-5V micro-controller board. gSPS adapter it is a “plug and run” SWITCHING POWER SUPPLY companion for c-uGSM and d-u3G shields.
Next, I will show to you how to speed up your GSM / 3G projects prototyping.

What you will need

c-uGSM, d-u3G shields and gSPS hardware references

All examples bellow are demonstrated based on c-uGSM and gSPS 4V [DDRV] (used for direct 3G-GSM shield powering in “NO Lithium Polymer” powering schema).
NO breadboard differences for gSPS 5V [LiPOL] usage (used in “WITH Lithium Polymer” powering), but you will need to connect one Lithium Polymer battery to the CSM or 3G shield.
d-u3G differences – will be revealed later.

3G/GSM shields reference can be seen here. gSPS switching power supply reference may be found here.

GSM 3G shield breadboard prototyping

Solder the strait row headers to the boards.  Solder the barrel connector to the gSPS power supply, if needed.

GSM-3G-shield-breadboard-mount-what-u-need

Hint: 2×10 pin headers can be used for all examples provided and for 99.99% of your projects. In this case, in picture up here, start from right for c-uGSM / left for g-SPS (RX)  to the left for c-uGSM / right for g-SPS and stop at the 10’th pin (STS).

 

Insert the power supply and the GSM shield in the breadboard as bellow pictures. SIM must be installed to the GSM shield, first. 😉


GSM-3G-shield-breadboard-mount-2

GSM-3G-shield-breadboard-mount-1

GSM-3G-shield-breadboard-mount-3

Between boards, a gap of minimum 5 rows it is required. Insulation separator (foam, cardboard,..) must be inserted between boards in order to prevent the SHORT CIRCUITS!

WARNING:
BOARDS MAY BEND WHEN INSERTED AND CAN CAUSE A SHORT CIRCUITS!!! TAKE ALL NECESSARY STEPS TO PREVENT THIS HAPPEN! YOU ARE THE ONLY RESPONSIBLE FOR HARDWARE HANDLING, USAGE AND WIRING!!!

3G shield (d-u3G shield) difference: at insertion moment, ALIGN both sides (TX 2 TX and SLP 2 SLP).

READY! Now you may continue to wire your project connecting other boards, starting from the breadboard contacts.

Credits

published by Dragos Iosub & itbrainpower.net team on http://itbrainpower.net/ projects and how to section