sabato 2 febbraio 2019
Collegarsi da remoto a Raspberry
In un vecchio post ho già indicato come trasformare il nostro computer Linux in server SSH e poi come accedere allo stesso computer via Putty da PC remoto.
La differenza interessante è che SSH è già istallato su Raspbian e non c'è quindi nessun bisogno di installare alcunché.
Basta accedere alla finestra (interfaccia grafica) Preferenze>>Raspberry Pi Configuration e, dalla finestra che si apre selezionare il tab "Interfaces"; lì sarà possibile abilitare SSH.
Da PC remoto quindi avviando Putty e inserendo l'IP del nostro Raspberry si aprirà una finestra terminale che ci permetterà di dialogare direttamente con lui.
Ancora più interessante sarà accedere da remoto alla interfaccia grafica di Raspberry...
In questo caso bisogna scaricare e installare sul nostro PC il programma VNC (scaricalo da qui) e ancora una volta, con lo stesso sistema utilizzato per SSH, abilitare anche VNC.
Dopo aver avviato il programma sul nostro PC ed inserito l'indirizzo IP del Raspberry si potrà lavorare comodamente con due computer usando un solo monitor, una tastiera ed un mouse.
Loggarsi come Root su RaspberryPi/Raspbian
Durante l'istallazione di Raspbian invece la richiesta di impostare una password per l'utente root non viene effettuata perché, per ragioni di sicurezza non viene impostata.
Se si prova infatti a loggarsi come Super User (su) da riga di comando verrà chiesta la password e non c'è modo di effettuare l'accesso.
L'unica possibilità sarà quella di modificarla utilizzando il comando :
sudo passwd su
Verrà richiesto di digitare la password e di ridigitarla per conferma.
Alla fine il sistema comunicherà che l'operazione è andata a buon fine.
Prima installazione ed uso di Raspberry Pi 3B+
Non possiede un Hard Disk fisico ma al suo posto c'è una scheda SD (consigliata 8 GB ma si può usare anche molto più capiente 16 o 32 GB).
Con tale apparecchiatura è possibile usare diversi Sistemi Operativi sia Windows che Linux; esiste, in particolare, una distribuzione Linux appositamente progettata per questo dispositivo denominata Raspbian e derivata da Debian.
Dopo l'acquisto, fuori dalla scatola, il Raspberry si presenta come nell'immagine soprastante e per farlo funzionare occorre un alimentatore da 5 Volt, una tastiera, un mouse (o periferiche analoghe) anche wireless o bluetooth, un monitor (il tutto da collegare alle specifiche porte in dotazione al dispositivo) e, soprattutto, una capiente scheda SD.
Ecco la procedura per l'installazione del Sistema operativo Raspbian...
- La prima operazione da compiere è quella di scaricare su un PC uno specifico programma per la formattazione di una scheda SD la quale, sia che sia stata acquistata ex novo, sia che sia già stata usata per altre attività, va formattata (si può usare un programma tipo "SD Card Formatter").
- E' inoltre necessario scaricare dal sito ufficiale il S.O. nella sua versione più recente... (https://www.raspberrypi.org/downloads/raspbian/ oppure fai click qui per scaricare la versione più recente); il file scaricato è un file compresso con estensione .zip che va decompresso. Si otterrà un file con estensione .img che andrà, con opportuno programma salvato sulla scheda SD;
- Il programma per salvare il file immagine sulla scheda SD potrebbe essere Win32DiskImager (scaricalo da qui); Basterà avviare il programma dopo istallazione, e indicare sia il file di origine (il file del S.O con estensione .img) e la cartella di destinazione (la scheda SD precedentemente formattata).
mercoledì 16 gennaio 2019
Redirect 301 (Permanent) attraverso web.config
Si lasciano i contenuti del vecchio sito (circa tre mesi), se ne costruisce una copia con il nuovo dominio ed ogni pagina del vecchio sito viene reindirizzata al nuovo avendo cura di indicare la direttiva "permanent" (ovvero 301).
Quando i crawler dei motori di ricerca individuano le pagine del vecchio sito troveranno che la pagina punta ad un nuovo dominio e "impareranno" che ora i contenuti sono altrove (cioè nel nuovo sito).
Se il sito è costituito da poche pagine non sarà difficile inserire nella sezione head della pagina le direttive necessarie al re indirizzamento ma se le pagine sono alcune decine il lavoro si fa noioso... se poi il sito non è costituito da pagine statiche ma si usano linguaggi di script server side, non si può proprio fare....
Il sistema che propongo è adatto a chi usa CMS che utilizzano asp.net e che quindi possono modificare a manina il file web.config
Personalmente come CMS uso DNN che propone, per effettuare l'operazione di redirect, uno specifico modulo venduto a caro prezzo....
Per reindirizzare le pagine di un sito a nuovi URL utilizzando lo stato 301 agire come segue:
Creare un file rewriteMaps.config con questa struttura:
<?xml version="1.0" encoding="utf-8"?>
<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/oldurl" value="/newurl" />
<add key="/oldurl2" value="/newurl2" />
...
</rewriteMap>
</rewriteMaps>
Salvare il file nella root del sito.
Modificare il file web.config inserendo nella opportuna sezione il seguente codice:
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps configSource="rewritemaps.config"><rewriteMaps>
<rules>
<rule name="Redirect rule1 for Redirects">
<match url=".*" />
<conditions>
<add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Verificare il tutto sul sito: https://httpstatus.io/
Tale sito restituisce il response del server ad ogni chiamata di pagina... potrete così verificare se la procedura funziona
NB: il tutto può essere preceduto dall'analisi di quali siano le pagine indicizzate dal motore di ricerca: scrivere sulla barra della ricerca "site:xyz:it"; la risposta sarà l'elenco delle pagine indicizzate. Per ognuna delle pagine sarà possibile così inserire la chiave e lo specifico indirizzo di nuova destinazione nel file rewriteMaps.config
martedì 15 gennaio 2019
Impostazioni per GoogleAnalytics in un sito creato con DNN 9.1
La scappatoia è creare due file da posizionare direttamente nel fileSystem del sito:
Primo file = "GoogleAnalytics.config" da copiare in Portals/0 con questo contenuto...
<?xml version="1.0" encoding="utf-8"?>
<AnalyticsConfig xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Settings>
<AnalyticsSetting>
<SettingName>TrackingId</SettingName>
<SettingValue>UA-35742042-4</SettingValue>
</AnalyticsSetting>
<AnalyticsSetting>
<SettingName>UrlParameter</SettingName>
<SettingValue/>
</AnalyticsSetting>
<AnalyticsSetting>
<SettingName>TrackForAdmin</SettingName>
<SettingValue>false</SettingValue>
</AnalyticsSetting>
</Settings>
</AnalyticsConfig>
Sostituendo naturalmente "IL TUO TRAKING-ID" con il valore corretto fornito da Google.
Secondo File = "SiteAnalytics.config" da copiare nella root del sito con questo contenuto...
<?xml version="1.0" encoding="utf-8" ?>
<AnalyticsEngineConfig>
<Engines>
<AnalyticsEngine>
<EngineType>DotNetNuke.Services.Analytics.GoogleAnalyticsEngine, DotNetNuke</EngineType>
<ElementId>Head</ElementId>
<InjectTop>False</InjectTop>
<ScriptTemplate>
<![CDATA[
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '[TRACKING_ID]']);
_gaq.push(['_trackPageview']);
[PAGE_URL]
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
]]>
</ScriptTemplate>
</AnalyticsEngine>
</Engines>
</AnalyticsEngineConfig>
Salvati i files nelle rispettive posizioni Google Analytics comincerà a seguire il vostro sito.
martedì 14 giugno 2011
Server HotSpot per reti Wireless
Operazioni preliminari
Questo How-To prevede l'istallazione e la configurazione di un server ubuntu
versione 10.04.2 LTS come Hot Spot WiFi utilizzando
Freeradius, Mysql, Chillispot.
I prerequisiti per l'installazione sono modesti e possono essere così
esemplificati:
- Un computer con due interfacce di rete (il SERVER), nel nostro caso la
configurazione adottata è PC PIII 1GHz + RAM 128 MByte + HD 10 GByte + 2 NIC
Realtek 8139; - un access-point wireless, non strettamente necessario se si vuole collegare
computer cablati; - un computer (il CLIENT) ulteriore necessario per i test, dotato di un
interfaccia di rete ethernet o wireless e di un browser che supporti i Pop-Up.
In questa scheda vediamo "graficamente" come si prevede interagiscano i computer
________
| | access-point
| CLIENT | )))) ((( \|/ ________ Internet
|________| | | | |
+------| SERVER |------+
rete 192.168.2.0/24 eth1 |________| eth0
E' necessario che il server sia configurato come server LAMP
(Linux/Apache/MySQL/Php/Perl/Pyton); per la verifica digitare da terminale:
tasksel
Configurando la macchina come server è comodo selezionare alcune opzioni
utili per l'uso futuro.
Tastiera e monitor: la macchina, funzionando da server,
presumibilmente non avrà collegato un monitor perche vi si accederà da pc remoto
e per lo stesso motivo non avrà una tastiera. Per evitare che all'avvio il SO si
blocchi per la mancanza della tastiera accedere al bios prima del caricamento
del SO ed impostare la funzione Halt On a "All but keyboard".
Di seguito dopo aver aggiornato la repository del software:
sudo apt-get update sudo apt-get upgrade
installare il pacchetto openssh-server che ci permetterà l'accesso al server
da pc remoto
sudo apt-get install openssh-server
Ora con programmi come putty.exe sarà possibile entrare da remoto nel server.
Impostiamo quindi l'indirizzo IP in modo che sia statico (di norma durante
l'istallazione del SO l'indirizzo IP viene acquisito automaticamente da un server
DHCP). apriamo il file /etc/network/interfaces
sudo nano /etc/network/interfaces
e sostituiamo alle righe...
auto eth0 iface eth0 inet dhcp
le righe...
auto eth0 iface eth0 inet static address 192.168.1.250 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
In questo modo attribuiamo a eth0 l'indirizzo 192.168.1.250 e , con questa
scheda di rete ci collegheremo al router e quindi ad internet.
Aggiungere inoltre, allo stesso file, la seconda scheda di rete (eth1) che servirà per la connessione
ai client wireless;
auto eth1
Penserà Chillispot ad attribuire ai client l'indirizzo opportuno; salvare il file e riavviare il servizio di networking
sudo /etc/init.d/networking restart
Attivare in /etc/sysctl.conf l'IP Forward del router integrato nel Kernel
assicurandosi che sia decommentata la seguente riga:
net.ipv4.ip_forward=1
ed effettuando subito la modifica:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Riavviare la configurazione di rete del server
sudo /etc/init.d/networking restart
Aggiungere all'avvio il caricamento del modulo tun. Per farlo aggiungere una
riga con scritto "tun" in /etc/modules. Caricare nel frattempo il modulo con il
comando:
sudo modprobe tun
Server Radius e Database
Installare i pacchetti freeradius e freeradius-mysql:
sudo apt-get install freeradius freeradius-mysql
Con le versioni più recenti di Ubuntu (dalla 8.10 in poi) sarà installata la
versione 2 di FreeRadius, .
Creare il database, che sarà utilizzato per la gestione del sistema di
autenticazione RADIUS, con il seguente comando (rispondere al prompt "Enter
password: " con la password dell'utente DB root e poi digitare al prompt "mysql>
" i comandi seguenti):
mysql -u root -p Enter password: mysqladminsecret mysql> CREATE DATABASE radius;
mysql> quit
Creare un utente con i privilegi di accesso e modifica del database radius con
la struttura delle tabelle:
mysql -u root -p mysql> GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'mysqlsecret'; mysql> FLUSH PRIVILEGES; mysql> quit
Creare la struttura del database
NB Bisogna loggarsi da root digitando la password perchè l'accesso a questi
file è negato
sudo su enter password mysql -u radius -p radius < /etc/freeradius/sql/mysql/schema.sql mysql -u radius -p radius < /etc/freeradius/sql/mysql/nas.sql exit
Aggiustare il file /etc/freeradius/sql.conf con i dati di connessione al
database appena settati:
server = "localhost" login = "radius" password = "mysqlsecret"
Configurare il client 127.0.0.1 nel file /etc/freeradius/clients.conf
con il
valore della password per le connessioni al server Radius:
client 127.0.0.1 {
secret = radiussecret
}Test della configurazione (predefinita) basata su file
La configurazione predefinita di FreeRadius autorizza gli utenti con UserName e
Password da un file che si trova in /etc/freeradius/users. Possiamo effettuare
un test per la configurazione predefinita basata su file prima di modificare la
modalità di autorizzazione da "file" a "sql" (mysql).
Aggiungiamo quindi utente e password al nostro file degli utenti modificando la
riga che inizia con "John Doe":
sudo nano /etc/freeradius/users
Decommentare:
"John Doe" Auth-Type := Local, User-Password == "hello" Reply-Message = "Hello, %u"
A questo punto riavviamo la nostra macchina
reboot
Quindi passiamo alla modalità debug di freeradius dopo aver fermato il servizio
sudo /etc/init.d/freeradius stop sudo freeradius -XXX
Se tutto andrà bene l'ultima riga mostrerà il seguente messaggio:
Mon Mar 24 11:32:35 2008 : Info: Ready to process requests.
Digiyiamo Ctrl + C per uscire dalla modalità di debug
Facciamo ripartire il servizio di Freeradius
sudo /etc/init.d/freeradius start
Effettuiamo il test di autorizzazione basato su file
sudo radtest "John Doe" hello 127.0.0.1 0 radiussecret
Se tutto andrà bene dovreste avere la seguente risposta:
Sending Access-Request of id 136 to 127.0.0.1 port 1812 User-Name = "John Doe" User-Password = "hello" NAS-IP-Address = 255.255.255.255 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=136, length=37 Reply-Message = "Hello, John Doe"
Modalità DataBase
A questo punto possiamo convertire la modalità basata su file con quella basata su
DataBase.
sudo nano /etc/freeradius/radiusd.conf
decommentare la linea
#$INCLUDE sql.conf
quindi aprendo il file /etc/freeradius/sites-available/default:
nano /etc/freeradius/sites-available/default
modifichiamo...
authorize {
preprocess
chap
suffix
eap
#files ###Cambiare Manualmente
sql ###Cambiare Manualmente
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
eap
}
accounting {
detail
radutmp
sql ###Cambiare Manualmente
}
session {
sql ###Cambiare Manualmente
}E' una buona idea testare questa nuova configurazione prima di andare avanti,
quindi inseriamo un utente nel database:
$ echo "INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('mysqltest',
'Password', 'testsecret');" | mysql -u radius -p radiusE, dopo aver riavviato il servizio freeradius, ritentiamo il test di prima con i nuovi valori:
$ sudo /etc/init.d/freeradius restart $ sudo radtest mysqltest testsecret 127.0.0.1 0 radiussecret
Questo è il risultato...
Sending Access-Request of id 197 to 127.0.0.1 port 1812 User-Name = "mysqltest" User-Password = "testsecret" NAS-IP-Address = 127.0.1.1 NAS-Port = 0 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=197, length=20
ChilliSpot
Installiamo il pacchetto chillispot, che è presente nella repository di ubuntu.
$ sudo apt-get install chillispot
In fase di installazione, ci saranno rivolte alcune domande per configurare
chillispot. Ecco un elenco delle domande e delle risposte relative:
IP address of radius server 1: 127.0.0.1
Radius shared secret: radiussecret
Ethernet interface for DHCP to listen: eth1
URL of UAM server:
https://10.1.0.1/cgi-bin/hotspotlogin.cgi
URL of UAM homepage:
Shared password between chillispot and webserver: uamsecret
Conviene comunque revisionare il file di configurazione per dare le informazioni
che necessita a ChilliSpot configurando il file /etc/chilli.conf
in modo
opportuno:
net 192.168.2.0/24 ###change manually #dns1 192.168.2.1 #dns2 192.168.2.1 domain domain.org ###change manually radiusserver1 127.0.0.1 radiusserver2 127.0.0.1 radiussecret radiussecret dhcpif eth1 uamserver https://192.168.2.1/cgi-bin/hotspotlogin.cgi #uamhomepage https://192.168.2.1/welcome.html ###change manually uamsecret uamsecret uamlisten 192.168.2.1 ####change manually uamallowed www.google.it,192.168.2.0/24 ###change manually
Nota: uamhomepage è stata commentata perchè è opzionale
Per verificare eventuali errori nel file conf di Chillispot eseguire il comando
sudo /etc/init.d/chillispot start
Se si verifica un errore esso verrà mostrato sul monitor con il numero della
riga relativa che ha causato l'errore. Aprire il file chilli.conf e cercare la
riga per correggere il problema.
Se si riceve il messaggio:
Chillispot captive portal: disabled, see /etc/default/chillispot
aprire il file /etc/default/chillispot ed abilitare il servizio:
nano -w /etc/default/chillispot
ENABLED=1
Installazione Firewall
La procedura di istallazione di ChilliSpot ha creato delle regole per il firewall che vanno
abilitate:
sudo cp /usr/share/doc/chillispot/firewall.iptables /etc/init.d/chilli.iptables sudo chmod a+x /etc/init.d/chilli.iptables sudo ln -s ../init.d/chilli.iptables /etc/rcS.d/S41chilli.iptables
Le regole predefinite per il Firewall sono configurate in modo che eth0 sia
connessa ad internet mentre eth1 alla LAN. Se vogliamo cambiare questo settaggio
apriamo il file:
nano -w /etc/init.d/chilli.iptables EXTIF=eth0 INTIF=eth1
Vale la pena aprire la porta 80 ad eth0 per permettere di gestire i record di
mysql con applicazioni web come phpmyadmin, ezradius, dialup admin o altre.
Quindi apriamo il file /etc/init.d/chilli.iptables e aggiungiamo alla riga:
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 --syn -j ACCEPT
la riga:
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 80 --syn -j ACCEPT
Apache Server
Creare la pagina di login
sudo mkdir -p /var/www/hotspot/cgi-bin zcat -c /usr/share/doc/chillispot/hotspotlogin.cgi.gz | sudo tee (segue...) /var/www/hotspot/cgi-bin/hotspotlogin.cgi sudo chmod a+x /var/www/hotspot/cgi-bin/hotspotlogin.cgi
Modifichiamo lo script di login
nano -w /var/www/hotspot/cgi-bin/hotspotlogin.cgi
Decommentiamo e modifichiamo opportunamente la password
$uamsecret = "uamsecret"; $userpassword=1;
SSL
Apache Modules
Per installare il modulo di Apache2 per l'autenticazione via MySQL bisogna
eseguire il seguente comando da terminale:
sudo apt-get install libapache2-mod-auth-mysql
Una volta installato il modulo, questo sarà disponibile nella directory
/etc/apache2/mods-available. Sarà necessario usare il comando
a2enmod per abilitare il modulo. Si potrà utilizzare il comando
a2dismod per disabilitare il modulo. Una volta abilitato il
modulo sarà disponibile nella directory /etc/apache2/mods-enabled.
Setup up di Apache e SSL
Siate sicuri che LAMP server sia installato; se non è così si usi il comando:
tasksel
Creare il certificato
sudo apt-get install ssl-cert sudo mkdir /etc/apache2/ssl
E' necessario trovare il nome del nostro host per il certificato:
hostname -f
(Hardcoding cert lifetime based on this patch:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=293821#22)
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
(Rispondere alle domande)
Nota: l'"HostName" deve essere scritto correttamente in base a quello che
risulta dall'esecuzione del comando hostname -f
host.name #change to your host name
Install Module
Il modulo mod_ssl aggiunge ad apache2 Server una importante possibilità, quella
di criptare le comunicazioni. Così quando il vostro browser comunica usando la
cripazione SSL il prefisso https:// è usato all'inizio dell'URL nella barra
degli indirizzi del browser.
sudo a2enmod ssl /etc/init.d/apache2 force-reload
Creare il virtualhost
Creare un file virtualhost
sudo nano -w /etc/apache2/sites-available/hotspot
e modificarne il contenuto in modo che risulti simile al seguente
NameVirtualHost 192.168.2.1:443 <VirtualHost 192.168.2.1:443> ServerAdmin webmaster@domain.org DocumentRoot "/var/www/hotspot" ServerName "192.168.2.1" <Directory "/var/www/hotspot/"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> Alias "/dialupadmin/" "/usr/share/freeradius-dialupadmin/htdocs/" <Directory "/usr/share/freeradius-dialupadmin/htdocs/"> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /var/www/hotspot/cgi-bin/ <Directory "/var/www/hotspot/cgi-bin/"> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/hotspot-error.log LogLevel warn CustomLog /var/log/apache2/hotspot-access.log combined ServerSignature On SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem </VirtualHost>
Abilitare VirtualHost SSL
sudo a2ensite hotspot /etc/init.d/apache2 reload
Porte in ascolto
La porta 443 deve rimanere in ascolto per HTTPS. E' necessario quindi aggiungere
la stringa seguente al file /etc/apache2/ports.conf :
nano -w /etc/apache2/ports.conf
Listen 192.168.1.250:80
<IfModule mod_ssl.c>
Listen 192.168.2.1:443
</IfModule>
Server Root
nano -w /etc/apache2/apache2.conf
aggiungere
ServerName 192.168.1.250
Modificare il file host
nano -w /etc/hosts 192.168.2.1 host.name host #cambiare con il proprio nome.host
Riavviare il server di Apache:
sudo /etc/init.d/apache2 restart
Ora il Browser web dovrebbe essere in grado di collegarsi alla pagina
https://192.168.2.1/cgi-bin/hotspotlogin.cgi
e alla pagina
http://192.168.2.1:3990/
Finito
Riavviare il computer e ogni cosa dovrebbe funzionare regolarmente
reboot
