ATTENZIONE
tutorial non completo

MiniPBX è preconfigurato con l’indirizzo 192.168.88.100. Possiamo cambiare lo IP della nostra macchina con cui vogliamo accedere al MiniPBX e metterla ad esempio come IP statico: 192.168.88.101 Netmask 255.255.255.0 e lasciando in bianco il Gateway. Siete su una macchina Windows 10 e non sapete come fare? Allora, questa è l’occasione giusta per passare a Linux. Questo è un tutorial per pazzi, mica per… Eh!
Accediamo al MiniPBX digitando il suo IP di default: 192.168.88.100, facciamo login con Nome Utente admin e Password admin poi, una volta nell’interfaccia grafica del MiniPBX, scegliamo la voce di menù Amministrazione, quindi Raspberry Admin.
Una volta nel Raspberry Admin, selezioniamo la voce Network Settings.
Possiamo anche accettare il valore di default per Host Name o cambiarlo a nostro piacimento, per Static IP/Netmask mettiamo un IP libero e coerente con la nostra Rete Locale ad esempio 192.168.1.200 nel formato 192.168.1.200/24.
Il Gateway sarà lo IP del nostro Router mentre alla voce DNS Servers List possiamo inserire gli IP per la risoluzione dei nomi di dominio. Ad esempio, 192.168.1.1 8.8.8.8
Selezionare il pulsante Conferma per applicare le modifiche. Dopo qualche tempo, l’interfaccia grafica del MiniPBX non sarà più raggiungibile. Rimettiamo come era prima la configurazione della nostra scheda di Rete della nostra macchina. Era in DHCP? Rimettetela in DHCP. Era un IP statico? Rimettete lo IP statico che avevate prima.

Accedete nuovamente al MiniPBX utilizzando lo IP che gli avete assegnato. Adesso sarà intelligente cambiare la coppia di credenziali di default per il nostro MiniCentralino che lo ripeto sono admin admin. Quindi selezioniamo nella pagina WEB di FreePBX, la voce di menù Amministrazione, quindi Amministratori. Selezioniamo la “linguetta” a destra nella schermata che mostrerà un menù orizzontale a scomparsa e selezioniamo dall’elenco lo Username admin. Nella parte centrale dell’interfaccia Web, comparirà admin con sotto degli asterischi come password. Sovrascriviamo il nome utente admin con un nuovo Username per l’amministratore e specifichiamo una password abbastanza complicata. Ad esempio, Username: PincoPallo Password: Ciccio.Messere.4321 quindi con il pulsante Conferma salviamo le modifiche che entrano in vigore immediatamente.
Andiamo alla voce di menù Settings quindi Advanced Settings, scorriamo la pagina fino ad arrivare alla voce Country Indication Tones e mettiamo in quel campo Italy, scegliendo dal menù a tendina.
Adesso scegliamo la voce di menù Settings quindi Advanced Settings. Cerchiamo nella pagina la voce Country Indication Tones e selezioniamo Italy.
Sempre nella stessa pagina cerchiamo SIP Channel Driver e selezioniamo chan_pjsip invece che both quindi alla voce formato orario dell’orologio parlante, mettiamo 24 Hour Format. Selezioniamo il pulsante Conferma quindi selezioniamo il pulsante rosso in alto a destra Apply Config. il MiniPBX ricaricherà le impostazioni.
Una volta ricaricate le impostazioni, alla voce di menù Applicazioni quindi Interni, +Aggiungi Interno, il MiniPBX non presenterà la possibilità di aggiungere un Interno in tecnologia SIP ma soltanto PJSIP.

Per cambiare la Porta di segnalazione di PJSIP bisogna scegliere la voce di menù Settings quindi selezionare Asterisk SIP Settings. Nella pagina selezionare la “linguetta” SIP Settings [chan_pjsip] quindi cercare (o scorrere) nella pagina la voce Port to Listen On e cambiarne il valore da 5060 a 5160. Prima di selezionare il pulsante Conferma, cerchiamo la voce “tcp – 0.0.0.0 – All” e selezionando “Si” abilitiamo questa funzionalità. Quindi applichiamo le modifiche con “Salva” e poi selezioniamo il pulsante rosso in alto a destra “Apply Config”.

Adesso, permettiamo al nostro MiniPBX di conoscere dove si trova:

Andiamo all’interfaccia Web di FreePBX e scegliamo dal menù Settings la voce Asterisk SIP Settings. Scorriamo la pagina alla sezione NAT Settings quindi nel campo External Address scegliamo il pulsante Detect Network Settings. Dopo aver selezionato il pulsante, il nostro Centralino riempirà anche il campo “Local Networks” con i dati coerenti con la nostra LAN (ad esempio: 192.168.1.0 / 24) e quindi ha cognizione di dove si trova. Conferma e via di questo passo, come indicato ovunque in questo Tutorial.

Creiamo un Interno PJSIP per il nostro Siemens C470IP ed uno per il nostro FRITZ! Box: interni 200 e 201, in questo tutorial.

Andiamo sul menù Applicazioni nel centralino, quindi Interni dove ne troviamo ben dieci di interni PJSIP già configurati. Prendiamo l’Interno 200 e 201 e sovrascriviamo la password nel campo Secret. Ad esempio: Trappolino.Tric.e.Trac. Selezioniamo Conferma poi Apply Config. Cancelliamo gli altri interni.

Andiamo nel nostro Gigaset (meglio se lo avete resettato alla configurazione di fabbrica) abilitiamo la Configurazione Avanzata ed inseriamo:
Nome o numero connessione: PJSIP (o quello che vi pare), quindi:

Autenticazione Nome: 200
Autenticazione Password: Trappolino.Tric.e.Trac
Username: 200
Nome visualizzato: 200
Dominio: 192.168.1.200 (lo IP del MiniPBX)
Indirizzo server proxy: 192.168.1.200 (lo IP del MiniPBX)
Porta server proxy: 5160
Registrar server: 192.168.1.200 (lo IP del MiniPBX)
Porta registrar server: 5160
Tempo di refresh Registrazione: 60 secondi
STUN abilitato: No
Modalità proxy outbound: Automatico
Proxy outbound: 192.168.1.200
Porta proxy outbound: 5160

Salvare le impostazioni nel Gigaset.

Ci vorrà un po’ di tempo, forse è meglio spegnere e riaccendere il Gigaset?

Fatto questo, apriamo l’interfaccia Web del Router VoIP FRITZ!Box WLAN 7390 FRITZ!OS firmware 06.86 (è importante perché altre versioni del FRITZ! potrebbero richiedere diverse impostazioni).

Facciamo login, andiamo nella voce di menù Telefonia poi scegliamo Propri numeri. Poi Nuovo numero e popoliamo delle credenziali per l’interno 201 (il 200 lo abbiamo nel Gigaset):

Numero per la registrazione: 201
Numero interno nel FRITZ!Box: 201
Nome utente: 201
Password: Trappolino.Tric.e.Trac
Registrar: 192.168.1.200:5160
Server Proxy: 192.168.1.200:5160

Selezioniamo il pulsante OK ed aspettiamo fiduciosi. L’interno 201 risulterà registrato correttamente.

Prendiamo il nostro Gigaset IP, digitiamo 200#locazione ad esempio 200#5 se abbiamo scelto la locazione 5 nel Gigaset e premiamo il tasto di chiamata. Trillerà il telefono collegato al FRITZ! e ci parliamo. In caso di problemi scegliete il menù “Amministrazione” quindi “Asterisk CLI” ed immettete il comando “pjsip show endpoints” per verificare la corretta registrazione dei due interni.

Bene, adesso vorremmo ricevere da altri oltre a noi stessi, giusto?

Andiamo nel centralino alla voce di menù Connectivity quindi Fasci, poi + Add Trunk, quindi + Add SIP (chan_pjsip) Trunk (ricordate che abbiamo disabilitato completamente SIP?)

ATTENZIONE!

Ho un vecchio account Messagenet, questa configurazione potrebbe non andare bene per i nuovi account.

<General>
“Nome Fascio”: Il vostro numero di telefono Messagenet
“Outbound CallerID” Il vostro UserID SIP (ad esempio 5305353).
Maximum Channels: 1 ma dipende dal vostro contratto. Lasciate tutto il resto com’è.

Linguetta <Dialed Number Manipulation Rules>

0ZXXX.
4242
800.
3ZXXXXXXXX
5XXXXXX (che serve per chiamare altri utenti Messagenet)

Per ogni campo compilato, sarà necessario selezionare il pulsante “+” per farne comparire un nuovo campo.

Linguetta <pjsip Settings>

General

Username: Il vostro UserID SIP (ad esempio 5305353)
Secret: la vostra password SIP non quella di accesso all’area riservata di Messagenet!
Authentication: Outbound
Registration: Send
Language Code: Italiano
SIP Server: sip.messagenet.it
SIP Server Port: 5061
Context: from-pstn
Transport: 0.0.0.0-udp

Linguetta <Advanced>

DTMF Mode: Auto
Send Connected Line: No
Permanent Auth Rejection: Si
Forbidden Retry Interval: 10
Fatal Retry Interval: 0
General Retry Interval: 60
Expiration: 3600
Max Reties: 9
Qualify Frequency: 60
Outbound Proxy: lasciare vuoto
Contact User: Il vostro numero di telefono Messagenet
From Domain: sip.messagenet.it
From User: Il vostro UserID SIP (ad esempio 5305353)
Client URI: sip:5305353@sip.messagenet.it:5061
Server URI: sip:sip.messagenet.it:5061
Media Address: lasciare vuoto
AOR: sip:sip.messagenet.it:5061
Match (Permit): lasciare vuoto
Support Path: No
Support T.38 UDPTL: No
T.38 UDPTL Error Correction: None
T.38 UDPTL NAT: No
T.38 UDPTL MAXDATAGRAM: lasciare vuoto
Fax Detect: No
Trust RPID/PAI: No
Send RPID/PAI: No
Send Private CallerID Information: No
Match Inbound Authentication: Predefinito
Inband Progress: No
Direct Media: No
Rewrite Contact: Si
RTP Symmetric: Si
Media Encryption: None
Force rport: Si
Message Context: Incoming

Linguetta <Codecs>: lasciate tutto com’è nel caso cambiate secondo le vostre preferenze o necessità.

Scegliete il pulsante Conferma e poi Apply Config.

Possiamo ora osservare nella Dashboard del centralino che abbiamo due Utenti online. In alternativa da “Amministrazione”, scegliamo “Asterisk CLI” ed inseriamo la stringa: pjsip list registrations e poi “Send Command” e leggete la risposta al comando che vi indicherà Registered accanto al Tronco Messagenet.

Andiamo avanti con Connectivity quindi Rotte in entrata quindi + Add Inbound Route.

Linguetta <General>
Descrizione: il vostro numero Messagenet o quello che vi pare.
Imposta Destinazione: Interni
Scegliamo l’interno. Mandiamolo al Gigaset quindi interno 201.

Linguetta <Advanced>

Indication Zone Country: Italy
Segnale di Squillo: Si
DID Number: il vostro numero Messagenet
Conferma e poi Apply Settings.

Prendete il vostro cellulare e chiamate il numero Messagenet. Trillerà il Gigaset. Rispondete.

Proviamo ora con una numerazione Clouditalia

Andiamo nel Trunk Messagenet impostato nel nostro MiniPBX e selezioniamo il pulsante Duplicate. Quando il processo di duplicazione è terminato, possiamo andare a cambiare i parametri per adattarli a Clouditalia.

Cosa dovete cambiare per Clouditalia? Nome utente (il vostro numero di telefono), server di registrazione (voip.eutelia.it), la porta (5060). Il resto va bene così come per Messagenet.

Nel menù del MiniPBX, scegliamo Amministrazione, scegliamo Asterisk CLI ed inseriamo la stringa: pjsip list registrations e poi Send Command e leggete la risposta al comando.

Adesso andiamo di WebRTC

Dobbiamo entrare nella Raspberry con SSH. Copio le istruzioni dal resto del mio tutorial perché so benissimo che siete pigri e volete tutto premasticato.
Intanto, per favore ruotate nel vostro router le porte 443, 80, 8088 e 8089 verso lo IP dello scatolotto che funge da MiniPBX: 192.168.1.200 nel mio tutorial. Vi serviranno per il certbot di Let’s Encrypt e per le comunicazioni WebRTC. Altre porte da aprire sono (troppe ma per ora va bene così) le UDP da 10.000 a 20.000. Ruotatele nel vostro Router verso lo IP della RaspBerry MiniCentralino.
Se il vostro Internet Service Provider non vi ha fornito di un IP statico, dovete procurarvi un servizio AFFIDABILE di Dynamic IP address. Noip.com potrebbe essere utile? Badate che il vostro Router disponga di un servizio di aggiornamento automatico dello IP dinamico, altrimenti scegliete un servizio compatibile con il vostro Router se no vi toccherà installare un client in una delle vostre macchine.

La password di root dello scatolotto di default è raspi, quindi il comando da inviare via terminale per collegarsi via SSH al Raspberry su cui gira il centralino, sarà:

ssh root@192.168.1.200

Poiché sono paranoico e non mi piace l’accesso diretto root via SSH, per sicurezza disabilitiamo l’accesso root e forziamo l’accesso utente. Ma prima, definiamo un nome utente.

Ora che siamo collegati come root, da terminale SSH, lanciamo il comando:

adduser quellochetipare

Immettiamo la password (complessa) e diversa da qualsiasi altra password immessa nel centralino per il nuovo utente “quellochetipare” compilando i campi che il Sistema Operativo ci propone: Nuova password: PincoPallo.32, Nome completo, Stanza (132 se siete in un albergo), Numero di Telefono del Lavoro, Numero di Telefono di Casa, Altro. Poi ci chiede se le informazioni immesse per il nuovo utente “quellochetipare” sono corrette. Rispondiamo Si e premiamo il tasto Invio.

Abbiamo appena creato un nuovo utente che si chiama “quellochetipare” con la sua password molto complessa PincoPallo.32, non mi stanco di ripetere, differente dalla password di root e da qualsiasi altra password noi si abbia immesso in FreePBX. Nel caso volessimo dopo un mese cambiare la password per l’utente “quellochetipare” ci sarà sufficiente effettuare il login via SSH con il comando ssh quellochetipare@192.168.1.200 e digitare il comando “passwd”. Adesso però dobbiamo prima aggiungere l’utente quellochetipare affinché abbia i privilegi di “sudo”. Da terminale SSH con i privilegi di root, NON immettiamo il comando “abbondante” nel senso che non avremo bisogno di tutti questi permessi che in un sistema desktop possono essere anche necessari, come ad esempio (tutto in una sola riga):

usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi quellochetipare

A noi, ripeto, non servono tutti questi permessi quindi immettiamo il comando:

usermod -a -G sudo quellochetipare

Digitiamo exit nel terminale ed usciamo e rientriamo con:
ssh quellochetipare@192.168.1.200
Password: PincoPallo.32

Lanciamo il comando:

su

ed immettiamo la password di default che è ancora raspi ma che DOBBIAMO cambiare!

Da terminale, con i privilegi di root, digitiamo quindi il comando:

passwd

Il sistema ci chiede la nuova password di root e noi immettiamo: PincoPallo.33 e confermiamo la password. Il sistema ci avvisa che la password di root è aggiornata correttamente.

Per disabilitare l’accesso diretto a root, obbligando ad accedere al sistema prima come utente “quellochetipare” e solo poi come root attraverso il comando “su”, da terminale, come root, lanciamo il comando:

nano /etc/ssh/sshd_config

Cerchiamo e poi cambiamo il valore della stringa: “PermitRootLogin” da “yes” a “no”.
Salviamo il file con CRTL+X, accettiamo le proposte offerte e poi da terminale, sempre come root, lanciamo il comando:

/etc/init.d/ssh restart

Diamo il comando: exit tante volte quante servono a chiudere il terminale.

Adesso facciamo la prova.

ssh root@indirizzo_IP_della_Raspberry

Non ci fa entrareeeee! Ci dice Permission denied! Ok. Allora, premiamo CTRL+C e torniamo al prompt dei comandi della nostra macchina. Quindi sempre da terminale digitiamo:

ssh quellochetipare@indirizzo_IP_della_Raspberry ovvero l’indirizzo IP che avete impostato per il vostro centralino.
Password: PincoPallo.32 (password complicatissima di quellochetipare).

Siamo entrati come utente “quellochetipare” con il comando “su” e password PincoPallo.33 acquisiamo i diritti di root. In questo modo, un attaccante dovrà conoscere sia il nome utente che la password utente ma anche la password di root.

Adesso diamo il comando da terminale SSH come root:

fwconsole stop gracefully (oppure stop now) e poi il comando per fermare Apache2:

/etc/init.d/apache2 stop

Quindi il comando:

apt update

Aspettate che finisca poi date il comando:

apt-get update && apt-get dist-upgrade

Continuare? [S/n] Ovviamente Si!

Dipende dalla vostra schedina MicroSD il tempo necessario a completare le operazioni. Infatti, se avete una MicroSD lenta, potreste anche attendere molto. Dopo aver fatto pranzo, guardato una di quelle noiose repliche in TV e fatto un sonnellino postprandiale, tornate al computer e scegliete “keep the local version currently installed” (premete il tasto INVIO sulla vostra tastiera per proseguire) ed andate a portare fuori il cane perché l’attesa non è finita.

Al termine da terminale SSH come root, digitate il comando:

reboot

Ed otterrete: Connection to 192.168.1.200 closed.

Accedete dopo il reboot con ssh quellochetipare@192.168.200 ed inserite la password: PincoPallo.32
Poi date il comando su ed inserite la password di root: PincoPallo.33.
Una volta ottenuto nuovamente l’accesso root dopo il reboot, impartite il comando:

apt update
apt install snapd

Continuare? [S/n] Si!

Poi ancora: reboot

Riaccedere via SSH come avete fatto in precedenza quindi impartire il comando come root:

snap install certbot –classic

Adesso date il comando:

ln -s /snap/bin/certbot /usr/bin/certbot

Poi il comando, sempre da root:

snap install core; snap refresh core

Dopo che il sistema ha finito di aggiornare il Certbot snap plugin, date il comando:

certbot –apache

Automagicamente… PUFF!
Inserite il vostro indirizzo email (gmail?)
Accettate i termini di licenza (Y)es/(N)o: Yessa!!!

Glielo vogliamo dare il nostro indirizzo email a quei bravi ragazzi della Electronic Frontier Foundation? Yessa!!!

Account registered.
No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated) (Enter ‘c’ to cancel):

Vi avevo detto di aprire la porta 80, 443, 8088 e 8089 TCP e di ruotare queste porte nel vostro Router verso lo IP dello scatolotto. Vi avevo detto che nel caso non disponete di un IP statico fornito dal vostro fornitore di connettività, è necessario un servizio di aggiornamento del vostro IP del tipo noip.com? Vi avevo detto di verificare se il vostro Router dispone della capacità di aggiornare automaticamente il nome di dominio ottenuto dal servizio che evete scelto? Se non avete fatto tutte queste cose, non potete andare avanti!

Ammesso che abbiate fatto tutto quello sopra elencato ed avete un vostro dominio del tipo scatolaroma.teseo.net inserite il vostro dominio ora e premete INVIO sulla vostra tastiera. Quindi, ricapitolando:

No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter ‘c’ to cancel): scatolaroma.teseo.net
Requesting a certificate for scatolaroma.teseo.net
Performing the following challenges:
http-01 challenge for scatolaroma.teseo.net
Waiting for verification…
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/000-default-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/000-default-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/000-default-le-ssl.conf
Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Congratulations! You have successfully enabled https://scatolaroma.teseo.net
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Subscribe to the EFF mailing list (email: ciccio@gmail.com).

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/scatolaroma.teseo.net/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/scatolaroma.teseo.net/privkey.pem
Your certificate will expire on 2021-05-01. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https//letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Ora aprite una nuoiva scheda nel vostro Browser e digitate il vostro nome di dominio appena registrato, ad esempio:

https://scatolaroma.teseo.net

PUFF!!! Si apre la pagina del vostro Centralino!
Questo però a me non piace per niente. Per il momento, vi suggerisco di utilizzare nomi di amministratore e password MOLTO complesse e lo stesso vale per le password degli interni. Poi vediamo come risolvere la questione.

Adesso, ci tocca continuare a “sporcarci le mani” con il terminale. ssh quellochetipare@192.168.1.200 password PincoPallo.32 poi il comando su quindi la password di root PincoPallo.33

Quindi il comando:

asterisk -r e poi il comando core stop gracefully

poi date il comando exit per uscire dalla CLI

nano /etc/asterisk/pjsip_custom.conf

Inserire quanto segue:

;===============ENDPOINT TEMPLATES

[endpoint-basic](!)
type=endpoint
language=it
dtls_auto_generate_cert=yes
webrtc=yes

disallow=all
allow=ulaw

[auth-userpass](!)
type=auth
auth_type=userpass

[aor-single-reg](!)
type=aor
max_contacts=10

;===============EXTENSIONS

[250](endpoint-basic)
auth=250
aors=250
context=from-pstn
[250](auth-userpass)
username=250
password=3312094854
[250](aor-single-reg)

CTRL+X per salvare il file, rispondere con S quindi premere il tasto INVIO.

Adesso che Asterisk è  ancora fermo, da root impartite il comando:

Ammesso che siate consapevoli che scatolaroma.teseo.net debba essere cambiato con il vostro nome di dominio, impartite i seguenti comandi:

cp /etc/letsencrypt/live/scatolaroma.teseo.net/cert.pem /etc/asterisk/keys/integration/certificate.pem e premete il tasto INVIO.

Poi date il comando:

cp /etc/letsencrypt/live/scatolaroma.teseo.net/privkey.pem /etc/asterisk/keys/integration/webserver.key e premete il tasto INVIO

Poi il comando:

service apache2 stop

Poi il comando: nano /etc/asterisk/http.conf

Quindi togliete il simbolo del cancelletto dalla direttiva #include http additional.conf e salvate le modifiche con CTRL+X

Facciamo ripartire Apache con il comando:

service apache2 start (o restart)

Adesso impartite il comando:

fwconsole restart

Benissimo, create un nuovo servizio nel vostro Gigaset IP copiando quanto vi ho scritto precedentemente, mettendo 250 come nome utente e 3312094854 come password. PUFF!!!! Adesso il Gigaset è registrato nel centralino e pronto per ricevere chiamate WebRTC. Più facile di così, si muore!

Se questa pagina ti è stata utile, allora condividila!