Tag Archives: setup

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/

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.