• Creare un mirror locale - Debian & derivati

    In questo (mini)-howto descriverò "come fare" per creare un mirror locale dopo una breve riflessione sull'effettiva convenienza.

    by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/apt-mirror.php

    Indice:

    1. Prerequisiti
    2. Mirror locale: vantaggi e svantaggi
    3. Lista repository

    Prerequisiti

    Con i sistemi debian-based basta fare:

    $ apt-get install apt-mirror

    che siamo in pista; tuttavia se dobbiamo creare un mirror usando un'altra distribuzione possiamo scaricare il pacchetto sorgente da qui (compatibile con tutti i sistemi con wget e perl, quindi anche CygWin.

    Mirror locale: vantaggi e svantaggi

    Perché creare un mirror locale? innanzitutto dobbiamo distinguere due fasce di utenti:

    • l'utente casalingo
    • l'utente "professionale" (aka: sysadmin in azienda, tecnico in qualche negozio, LUG, ecc.)

    Per la prima tipologia non è assolutamente necessario creare un mirror locale, anche se il parco macchine è abbastanza "ampio". Difatti un mirror comincia a diventare conveniente quando hai la possibilità di condividere la connettività oppure hai internamente un parco macchine con linux che necessita aggiornamenti continui. In questo caso risulta conveniente infatti far scaricare ad un solo PC i pacchetti, e poi i computer li aggiorneranno automaticamente (o semi-automaticamente, a seconda delle impostazioni) senza occupare banda sulla connessione ad internet. Può essere particolarmente utile negli ambienti di test, dove la macchina viene reinstallata diverse volte, oppure in ambienti di "riparazione", dove è necessario aggiornare/reinstallare la macchina ex-novo: la possibilità di un mirror locale velocizza le operazioni di aggiornamento riducendo il tempo al solo spacchettamento e posizionamento dei file sul PC.

    Lista repository

    Il file di configurazione di apt-mirror si trova alla locazione /etc/apt/mirror.list (nei sistemi debian[-based]) oppure nella directory di esecuzione (nel caso del sorgente). Un mirror.list per i sistemi Ubuntu (versione 7.10 gutsy) può essere:

    ############# config ##################
    #
    set base_path    /media/hdd1/apt-mirror/
    #
    # if you change the base path you must create the directories below with write privlages
    #
    # set mirror_path  $base_path/mirror
    # set skel_path    $base_path/skel
    # set var_path     $base_path/var
    # set cleanscript $var_path/clean.sh
    # set defaultarch  
    set nthreads     10
    set tilde 0
    #
    ############# end config ##############
    
    
  • SSH Chrooted

    In questo howto esploreremo una delle possibilità di chroot di ssh, ovvero come restringere l'utente alla sua home, creando una fake root.

    by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/ssh_chrooted.php


    Prerequisiti

    Inanzitutto dobbiamo avere installato OpenSSH, pam (quasi sempre incluso nelle distro), una particolare libreria di pam, chiamata libpam-chroot e makejail (per la fake root). Quindi possiamo dare (considerando che pam sia già installato):

    $ apt-get install openssh-server openssh-client libpam-chroot makejail

    Creazione utente

    In questo caso utilizzerò la home dell'utente per la sua fake root, però si può usare anche un'altra cartella. Creo quindi l'utente:

    $ adduser pippo

    Rispondendo alle varie domande. Mi posiziono in /home e creo il file di descrizione di makejail, che chiamerò utente.py (uno script python):

    #################################################
    #
    # Simple MakeJail Configuration file
    #
    #################################################

    # Destination Dir of the Jail
    chroot="/home/pippo"

    # Commands that will be tested inside jail
    #testCommandsInsideJail=["","",""]
    testCommandsInsideJail=["bash ","ls","cd","dir"
    "tar","gzip","gunzip",
    "cat","less","vi","echo",
    "chmod","chown","chgrp",
    "dd","cp","mv","grep",
    "kill","ln","mkdir","ps",
    "pwd","rm","rmdir","sleep",
    "touch","true",
    "find","diff",
    "env","id",
    "scp"]

    # Name of backgound processes (if any) as in ps
    #processNames=["","",""]

    # Commands that shound interact with demons inside
    # the jail from outside the jail
    #testCommandsOutsideJail=["","",""]

    # Files that MUST NOT be copied
    #doNotCopy=["","",""]

    # Files that NUST be copied
    #forceCopy=["","",""]
    forceCopy=["/etc/shells", "/etc/nologin","/etc/environment",
    "/etc/hosts*","/etc/ssh*",
    "/bin/*sh", "/lib/libnss*",
    "/dev/tty[0-9]*", "/lib/ld-linux.so.2", "/usr/bin/dircolors"]

    # Do not delete anything from the followind dir
    preserve=["/dev", "/lib", "/etc", "/home", "/var"]

    Basato su quello presente al link in fondo pagina Possiamo personalizzare i programmi da inserire, o se vogliamo possiamo fagli copiare alcuni files. Ora per creare la fake root diamo il comando:

    $ makejail utente.py

    E' importante che questo comando sia dato come utente root, o, in alternativa, con sudo.

    Ora che abbiamo la home dell'utente, dobbiamo dire a pam di usare questa come fake root.

    Configurazione PAM

    Come dire a pam di usare la libreria libpam-chroot ? Semplice: per prima cosa modifichiamo il file /etc/pam.d/ssh aggiungendo la riga:

    session required   pam_chroot.so

    Ora però dobbiamo dirgli dov'è la fake root: modifichiamo quindi il file /etc/security/chroot.conf aggiungendo:

    pippo    /home/pippo

    Spiegazione: il primo parametro è il nome utente, e il secondo invece è il path della fake root (io ho usato la home, ma può anche essere un'altra).

    Il file /etc/passwd, la home e il completamento bash

    Purtroppo makejail non crea un esatto /etc/passwd nella fake root, utile al sistema per identificare l'utente dopo il login. Questo non vuol dire che l'utente non si possa loggare, ma che non venga riconosciuto da bash. Inoltre scp delle volte fa storie. La soluzione è creare un fake /etc/passwd prendendo spunto da quello del server reale e togliendo tutti gli altri utenti. E' importante che l'uid e il gid siano uguali a quelli reali per far funzionare scp.

    Si può usare il seguente comando:

    $ echo `cat /etc/passwd | grep pippo:` > /home/pippo/etc/passwd

    Sostituendo pippo al vostro nome utente, lasciando i due punti dopo il nome utente.

    Un'altra cosa che non crea è la home...va creata manualmente, sia la cartella /home che /home/nomeutente (entrambe nella fake root)

    Inoltre, per rendere la shell bash più "carina" e funzionale, si possono prendere i tre file .bash* da /etc/skel (del pc reale) e piazzarli nella /root e nella home directory della fake root.

    Più avanti aggiungerò uno script che sto testando...

    Problema frequente: applicativo no such file or directory

    Utilizzando makejail potrebbe capitarvi di avere qualche programma (a me è successo con la shell bash) che non funziona, o meglio, quando si tenta di eseguirlo nella fake root restituisce l'errore no such file or directory, ad esempio:

    $ chroot /home/pippo/
    /bin/bash: no such file or directory
    $ _

    Questo molte volte è causato dalla mancanza di librerie: usate il tool ldd per trovare le librerie da cui dipende il programma e copiatelo manualmente (oppure inseritelo nello script del makejail sulla variabile forceCopy).

    Generalmente quando non funzionano restituiscono questo errore, ma potrebbero anche dirvi altro. Una controllata a ldd e la cartella /lib della fake root non è una cattiva idea.

    Problema comune: errore copia tty(s) varie

    L'errore sorge perché si usa una versione di stat che non si interfaccia bene con makejail. Nella nuova versione infatti alla fine della riga viene messo un ritorno a capo, che nelle vecchie versioni mancava. Questo basta per impedire a makejail di vedere il risultato delle vecchie versioni. A me è successo con la versione 5.93 di stat. Nella versione di un altro mio pc, 5.97, il problema non c'era. Per vedere la versione:

    stat --version

    Provate ad eseguire

    stat -t -c "%t %T" /dev/tty8

    e se sulla stessa riga del risultato appare il prompt (nomeutente@pc:$_) allora è la versione vecchia.

    Modificando /usr/sbin/makejail alla riga 276 c'è il comando stat che si presenta in questo modo:

    return map(lambda h: int(h,16),execute('stat -t -c "%%t %%T" %s' % fileName)[0].split())

    Per fixare basta aggiungere \\n dopo %T, come nell'esempio:

    return map(lambda h: int(h,16),execute('stat -t -c "%%t %%T\\n" %s' % fileName)[0].split())

    Crediti

    Ho preso liberamente spunto da http://www.emcy.it/wiki/doku.php?id=tips:ssh_con_chroot per fare questi script. Sono molto simili ma quelli del sito non funzionavano sul mio server Ubuntu Linux Server 6.10, quindi ho deciso di pubblicare una versione fixata e completa (nel senso che questa su macchine dove quella bacata funziona, anche questa funziona ;-) )

  • WPA su Linux


    Introduzione

    Proteggere la tua rete wi-fi, è buona cosa per evitare che persone non autorizzate, utilizzino servizi e intercettano informazioni dalla tua rete locale. Girando nelle nostre città possiamo trovare molti [hot-spot], ma a causa della diffusa ignoranza è possibile trovare molti punti di accesso a wi-fi non protette.

    Dopo la pessima figura fatta dalla chiave [WEP], è stato implementata la protezione [Wi-Fi Protected Access (WPA)] che è stata integrata nello standard IEEE 802.11i.

    Utilizzare la WPA su sistemi GNU/Linux

    Per poter utilizzare la chiave WPA-PSK (Chiave Pre-Condivisa), bisogna installare [WPASUPPLICANT], un programma 'demone' che gira in background.

    Per iniziare scaricate i sorgenti dell'ultima versione stabile da http://hostap.epitest.fi/wpa_supplicant e leggere il file README per installare il programma, oppure

     
    $ sudo apt-get install wpasupplicant

    per sistemi Debian e derivati.

    Configuriamo ora wpasupplicant;

    Da un terminale, lanciate il comando:

     
    iwlist scan

    E prendete nota dell'ESSID; Eseguiamo da terminale:

     
    wpa_passphrase <ESSID> <KEY>

    dove ESSID è l'essid precedentemente annotato e KEY è la vostra chiave WPA; L'output di questo comando dovrete copiarlo e incollarlo in un file che creerete in /etc/wpa_supplicant.conf L'output avrà una struttura come quella sotto riportata

     
    network={
    ssid="nome_essid_rete_annotato_prima"
    #psk="chiave_condivisa"
    psk=678365823439053487589462836564789365743562487566478523 (penso chiave crittografata!)
    }

    Adessio siamo pronti per stabilire una connessione con la nostra rete attraverso la scheda di rete Wi-Fi:

    prima di tutto avete nella rete un server DHCP che vi assegna un indirizzo IP? Normalmente si consiglia sempre di evitare questa impostazione, ma io, ho un Access Point che non mi permette di disabilitarlo, quindi, non mi da noia se mi assegna automaticamente un indirizzo.

    Quindi, lanciamo:

     
    ifconfig eth1 up

    nel caso eth1 è la vostra interfaccia wifi, e nel caso non vogliate utilizzare un IP statico.

    oppure

     
    $ ifconfig eth1 192.168.1.5

    nel caso eth1 è la vostra interfaccia wifi, e nel caso vogliate utilizzare un indirizzo IP scelto da voi e statico (logicamente, utilizzate un IP che appartiene alla vostra subnet).

    Dolce alla fine, eseguiamo:

     
    wpa_supplicant -Dwext -i eth1 -c/etc/wpa_supplicant.conf -B

    dove eth1 è la vostra interfaccia wifi. da adesso in poi, provate qualche ping a una macchina della vostra rete, e dovreste ottenere risposta.

    Imbocca al lupo!

subscribe via RSS