Linux, Apache ed OpenSSL

Posted on April 20, 2014 Comments

Abbiamo in un post passato parlato in breve di OpenSSL e del grave bug conosciuto come Heartbleed.

Ora descriveremo in breve come creare un certificato SSL su Apache installato su Linux (distro Debian).

Cominciamo con installare Apache

sudo apt-get install apache2

dopodichè abilitare SSL e riavviare apache:


sudo a2ensite default-ssl

sudo a2enmod ssl

sudo service apache2 restart

Creiamo una cartella in cui conservare i certificati, (i.e. etc/apache2/ssl), ed usiamo openssl per creare key e certificato:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Saranno chieste delle informazioni come ad esempio lo stato, il nome del server (anche l’ip va bene) ecc.

Aprire con Vim il file default-ssl:


vim /etc/apache2/sites-available/default-ssl

ed all’interno della sezione che comincia con <VirtualHost default:443>,

aggiungere:


ServerName yourdomain.it:443

ed accertarsi che ci siano nel file le seguenti tre linee:


SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Notate che per cercare in VIM basta digitare / (slash) e la parola da cercare.

attiviamo SSL per il nuovo virtual host e ricarichiamo apache:


sudo a2ensite default

sudo service apache2 reload

 

That’s all. Ovviamente se nessuna autorità vi certifica il sito (CA= certification authority), gli utenti riceveranno l’avviso di sito con certificato non autorizzato/scaduto.

Heartbleed: quando una falla fa tremare il mondo…

Posted on April 20, 2014 Comments

Negli ultimi giorni il mondo di Internet ha tremato. Una falla nel famosissimo protocollo SSL ha aperto immense vulnerabilità in gran parte dei siti web.

OpenSSL implementa SSL con codice open source e dopo i problemi già avuti in passato con questo protocollo e Debian, ora si passa a qualcosa di più serio: attacchi completamente intracciabili. Si legge in giro che oltre il 60% dei siti web sia (o sia stato) vulnerabile all’attacco. Questo vuol dire che in 60% dei siti web, un hacker che conosceva la falla poteva entrare, fare ciò che voleva ed uscirsene, il tutto senza nessuna traccia.

Ed allora… si riapre la faida: quanto il software open source è sicuro dato che è “open”. Gli equilibri non si sono mossi. I sostenitori dell’open continuano a dire che il lavoro di tante mente può solo generare prodotti migliori e che proprio il fatto che sia open renda più sicuri gli algoritmi perché:

1) Sono ipertestati.

2) E’ molto più veloce il fix di bug.

I contrari ora invece trovano terreno fertile: Snowden ha dichiarato che questo bug era noto all’NSA da almeno due anni…

La sicurezza affidata all’open source… è davvero così sicura?

Rendere più sicuro MySQL

Posted on April 17, 2014 Comments

Sicuramente vi sarà capitato di mettere su un database e trovarvi disorientati dall’incredibile mole di tentativi di attacco che si subiscono ogni giorno. Tentativi con username più disperati e password tentate con forza bruta sono all’ordine del giorno.

Per database che risiedono sullo stesso server dell’applicazione che usa il DB, il problema principale è nella configurazione. Come al solito in questi casi, prevenire i tentativi di attacco è la soluzione migliore possibile.

L’obiettivo principale è fare in modo che il DBMS accetti richieste SOLO da applicazioni presenti sul server stesso.

Vediamo brevemente come fare:


#backup del file corrente

sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.old

#modifichiamo il file di configurazione

sudo vim /etc/mysql/my.cnf

All’interno del file, aggiungiamo la seguente linea:


bind-address = 127.0.0.1

In questo modo il DBMS ignorerà tutto ciò che non proviene da quell’indirizzo.

Per le vecchie versioni di MySQL, invece che bind-address, usare:

skip-networking

Attenzione: questo non renderà il vostro DBMS inviolabile. E’ buona norma utilizzare username non comuni, database con nomi non scontati (i.e. non usare JOOMLA come nome di un database per Joomla…), aggiungere dei prefissi non di default…. eccetera… eccetera… eccetera….

.htaccess per WordPress

Posted on April 16, 2014 Comments

Per usare i permalinks su un blog WordPress, bisogna:

  • Creare un file .htaccess nella cartella in cui è presente il blog con il seguente contenuto:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<files wp-config.php>
order allow,deny
deny from all
</files>

Poi bisogna settare i permessi e l’ownership del file creato:


chown -v www-data:www-data /var/www/yourwordpressfolder/.htaccess

chmod -v 664 /var/www/yourwordpressfolder/.htaccess

ed infine da shell:


sudo a2enmode rewrite

sudo service apache2 restart

That’all!

Configurare Virtual Hosts su Apache

Posted on April 16, 2014 Comments

Ciao a tutti,

supponiamo che abbiate la bella idea di caricare più websites su un unico server e… non sapete dove sbattere la testa.

Andiamo con ordine…

Iniziamo con il configurare il web server. Per semplicità e forse perché è il più diffuso, consideriamo che abbiate installato Apache.

Da shell lanciate il seguente comando:

sudo vim /etc/apache2/sites-available/default

vi si aprirà il file contente la vostra configurazione.

A questo punto basterà aggiungere:


<VirtualHost *:80>
DocumentRoot /var/www/vhost0
ServerName www.yourdomain0.it
ServerAlias yourdomain0.it
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/vhost1
ServerName www.yourdomain1.it
ServerAlias yourdomain1.it
</VirtualHost>

dove con vhost0 and vhost1 si intendono le cartelle del vostro virtual host e con yourdomain0 e yourdomain1 si intendono i vostri domini.

Lanciate:


sudo service apache2 restart

per riavviare apache.

Ora configuriamo i domini. Dove potete impostare i DNS, settate:

per yourdomain0 (e successivamente per yourdomain1)

  • NAME @
  • TTL 5 min.
  • Type A
  • Value ip address del vostro server

e poi

  • Name www
  • TTL 1 Day
  • Type CNAME
  • Value yourdomain0.it

Commentate per domande di approfondimento 😉

 

Nota: se non avete vim:


apt-get update

apt-get install vim