Tag: ubuntu

  • Apache: come nascondere il banner contenente la versione, il packaging, etc. [ServerTokens]

    Ispirato dalla filosofia “security by obscurity” [sicurezza tramite segretezza], ho sempre avuto l’abitudine di limitare le informazioni rivelate dai server Apache che amministro. Solitamente (= di default), Apache rivela le seguenti informazioni:

    • Versione, major build [1, 2]
    • Packaging [Ubuntu, Fedora, etc.]
    • Eventuali moduli installati [mod_security, mod_python, etc.]
    • Versione estesa [2.0.47]

    Un po’ troppe per i miei gusti… Quindi limito la quantità di informazioni che Apache rivela al mondo in questo modo [istruzioni personalizzate per Ubuntu]:

    • Diventando root, modificate il file /etc/apache2/conf.d/security
    • Andate alla riga ServerTokens: # ServerTokens
      # This directive configures what you return as the Server HTTP response
      # Header. The default is 'Full' which sends information about the OS-Type
      # and compiled in modules.
      # Set to one of:  Full | OS | Minimal | Minor | Major | Prod
      # where Full conveys the most information, and Prod the least.
      #
      ServerTokens Minimal

      Come vi viene spiegato, potete scegliere il livello di granularità delle informazioni rivelate, andando da Full (che rivela tutte le informazioni possibili) fino a Prod, che non rivela quasi nulla (solo che usate Apache). Sui miei server, di solito, scelgo una via di mezzo e di conseguenza imposto ServerTokens a Minimal.

    • Salvate e riavviate Apache: sudo /etc/init.d/apache2 reload
  • Cheese: un’applicazione per fare fotografia con la webcam per Ubuntu [un clone di Photo Booth]

    imageSe state cercando un’alternativa a Photo Booth, il popolare software di Apple per scattare fotografie tramite la webcam del proprio computer, allora dovreste considerare Cheese.

    Si tratta di un programma molto semplice: una volta aperto, mostra l’immagine della webcam e vi permette di scattare una foto. Inoltre, è possibile applicare alcuni effetti “simpatici” [le foto sono degli sviluppatori di Gnome/Cheese].

    Cheese è incluso nei repository di Ubuntu, quindi per installarlo è sufficiente digitare: sudo apt-get install cheese

    Senza dubbio da provare!

  • Ubuntu: Apache2 con certificati self-signed e senza password all’avvio

    Recentemente mi è capitato di dover installare apache [in particolare, apache2] su una macchina Ubuntu. In particolare, mi è stato chiesto di installare la versione con ssl, ovvero che implementa il protocollo cifrato https.

    Apache2+ssl richiede l’utilizzo di un certificato firmato da un’autorità [es. Thawte, Verisign, etc.]. Se non vogliamo pagare una CA per ottenere un certificato firmato, possiamo generare un certificato firmato da noi stessi. Tuttavia, seguendo molte delle guide che si trovano in rete, apache viene installato con l’opzione ssl ma ogni volta che viene avviato richiede la password per l’utilizzo del certificato.

    Per questo riporterò qui una guida passo-passo che fa in modo che Apache2 non richieda la password per l’utilizzo del certificato: questa procedura è consigliata solamente se l’utilizzo è volto al testing o allo sviluppo. Qualsiasi altro uso è sconsigliato [richiedere una password per l’utilizzo del certificato è più che normale].

    • Abilitate il modulo ssl per apache2: sudo a2enmod ssl
    • Generiamo il certificato: cd /tmp; sudo openssl req -new > new.cert.csr
    • Vi verranno chieste delle informazioni a scopo puramente informativo e che compariranno nel certificato. Riempite le varie informazioni come credete
    • Ed ora una serie di comandi per generare tutti i file richiesti dai certificati: sudo openssl rsa -in privkey.pem -out new.cert.key
      sudo openssl x509 -in new.cert.csr -out new.cert.cert -req -signkey new.cert.key -days 1825
      sudo cp new.cert.cert /etc/ssl/certs/server.crt
      sudo cp new.cert.key /etc/ssl/private/server.key
    • Ora abilitiamo l’utilizzo dei certificati appena generati:sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
    • Modificate il file /etc/apache2/sites-available/default con il vostro editor preferito, ad esempio vi: sudo vi /etc/apache2/sites-available/default e cambiate le seguenti linee:
      Cambiare da…A…
      NameVirtualHost: *NameVirtualHost: *:80
      <VirtualHost *><VirtualHost *:80>
    • Modificate ora il file /etc/apache2/sites-available/ssl sempre con il vostro editor preferito e cambiate le seguenti linee:
      Cambiare da…A…
      NameVirtualHost: *NameVirtualHost: *:443
      <VirtualHost *><VirtualHost *>

      Dopo la linea che contiene DocumentRoot, aggiungete le seguenti righe:

      SSLEngine on
      SSLOptions +StrictRequire
      SSLCertificateFile /etc/ssl/certs/server.crt
      SSLCertificateKeyFile /etc/ssl/private/server.key
      
    • Ora date il seguente comando per abilitare l’utilizzo dei certificati in apache2: sudo a2ensite ssl
    • Infine riavviate Apache2 e finalmente non chiederà più la password del certificato: sudo /etc/init.d/apache2 restart

    Nota: se avete problemi controllate che il vostro file /etc/hosts sia fatto in questo modo:

    127.0.0.1 localhost localhost.localdomain {il vostro hostname}
    127.0.1.1 {il vostro hostname}
    {IP statico se ne avete uno} {DNS fully qualified se ne avete uno}
  • Ubuntu e Debian: come aggiornare automaticamente i pacchetti installati (unattended-upgrades)

    Nella vita di un sistemista esiste un task piuttosto ripetitivo: ovvero quello di aggiornare i pacchetti (= gli applicativi) installati sul proprio sistema (vuoi perché le versioni recenti dello stesso software dovrebbero essere migliori, più performanti e al riparo dagli ultimi bug di security, etc.).

    Nel caso di un sistemista alle prese con un sistema Ubuntu (o Debian), il task [da eseguire ripetutamente] si riduce a:
    apt-get update
    apt-get dist-upgrade

    (o comunque equivalente se usate aptitude).

    Ora, per evitare di ripetere il task, i sistemi Ubuntu/Debian mettono a disposizione unattended-upgrades: una volta installato il pacchetto, il sistema provvederà ad aggiornare e installare automaticamente tutte le applicazioni installate nel sistema. Vediamo come installare e configurare passo-passo unattended-upgrades:

    1. apriamo un terminale e installiamo il pacchetto unattended-upgrades: apt-get install unattended-upgrades update-notifier-common
    2. editiamo il file /etc/apt/apt.conf.d/50unattended-upgrades in questo modo:

      Automatically upgrade packages from these (origin, archive) pairs
      Unattended-Upgrade::Allowed-Origins {
      "Ubuntu hardy-security";
      "Ubuntu hardy-updates";
      };

    3. editiamo il file /etc/apt/apt.conf.d/10periodic in questo modo:

      APT::Periodic::Update-Package-Lists "1";
      APT::Periodic::Download-Upgradeable-Packages "1";
      APT::Periodic::AutocleanInterval "1";
      APT::Periodic::Unattended-Upgrade "1";

    A questo punto i pacchetti installati nel sistema verranno aggiornati automaticamente.

    Nota: è sempre opportuno controllare i log degli aggiornamenti per evitare eventuali problemi. I log degli aggiornamenti si possono trovare, ovviamente, in /var/log/unattended-upgrades

  • Come impostare il pinning (non aggiornare, ovvero mantenere la versione attuale) di un pacchetto su Ubuntu/Debian

    A volte può capitare che su certe macchine Ubuntu (o Debian) alcuni pacchetti importanti non debbano essere aggiornati dal gestore di pacchetti (apt-get o aptitude). Le ragioni possono essere le più svariate: incompatibilità, volontà di tenere la versione corrente (!), aggiornamento manuale, etc.

    Per fare in modo che un pacchetto non venga mai aggiornato (ovvero che il sistema continui a mantenere la stessa versione del pacchetto installato, bisogna ricorrere alla tecnica del apt pinning, che ci consente di specificare al sistema che un pacchetto (o un gruppo di pacchetti) non deve essere aggiornato e deve essere tenuto “in hold”.

    Per fare in modo che un pacchetto non venga aggiornato basta aprire un terminale e digitare:

    echo nomepacchetto hold | dpkg --set-selections

    dove nomepacchetto è il nome del pacchetto di cui volete che non vengano scaricati aggiornamenti successivi rispetto alla versione installata correntemente.

    Per rimuovere il “blocco”, aprite un terminale e digitate:

    echo nomepacchetto hold | dpkg --set-selections

    dove nomepacchetto è il nome del pacchetto di cui volete che vengano scaricati aggiornamenti successivi rispetto alla versione installata correntemente.

  • Ubuntu: montare automaticamente la partizione di Windows ad ogni avvio del sistema

    image

    Da quando sono più su Ubuntu che su Windows (sulla mia macchina dual-boot) mi capita sempre più spesso di dover accedere alla partizione di Windows per accedere ai miei dati. Tuttavia, Ubuntu non monta automaticamente la partizione di Windows e quindi sono costretto a montarla ad ogni riavvio del sistema.

    Per risolvere questa scomodità ho fatto in modo di montare automaticamente la partizione di Windows all’avvio del sistema. Ecco i passi per abilitare questa funzionalità:

    • Aprite un terminale, e scrivete il comando:
      sudo apt-get install ntfs-config
    • Dopo aver terminato l’installazione del pacchetto , andate nel menù di Ubuntu –> System tools –> NTFS Configuration Tool 
    • Selezionate la partizione Windows che volete auto-montare all’avvio e impostate un mount point opportuno (io ad esempio uso
      /media/windows) 
    • Cliccate su ‘Apply’ e abilitate entrambe le opzioni (“Enable write support for internal device” e (“Enable write support for external device”).
  • Aggiornare Ubuntu Intrepid Ibex (8.10) a Ubuntu Jaunty Jackalope (9.04) usando soltanto la linea di comando

    Ed ecco che finalmente, la nuova versione di Ubuntu 9.04 (il cui nome in codice è Jaunty Jackalope) è stata rilasciata. Un po’ come durante l’upgrade da Ubuntu da Hardy (8.04) a Intrepid Ibex (8.10), voglio utilizzare la linea di comando per aggiornare il sistema all’ultima release. Nota importante: per passare a Jaunty dovete obbligatoriamente avere Intrepid; date un lsb_release –a per scoprire che versione di Ubuntu state utilizzando, ad esempio:

    • $ lsb_release -a
      No LSB modules are available.
      Distributor ID: Ubuntu
      Description:    Ubuntu 8.10
      Release:        8.10
      Codename:       intrepid
      OK, questa macchina può essere aggiornata
    • $ lsb_release -a
      No LSB modules are available.
      Distributor ID: Ubuntu
      Description:    Ubuntu 8.04.2
      Release:        8.04
      Codename:       hardy
      KO, questa macchina NON può essere aggiornata. Dovete prima fare l’upgrade da Ubuntu da Hardy (8.04) a Intrepid Ibex (8.10) e poi tornare a seguire questa guida.

    Ora che abbiamo passato in rassegna i vari requisiti, passiamo alle istruzioni vere e proprie:

    1. Installare (se non è già installato) update manager con: sudo apt-get install update-manager-core
    2. lanciate il processo di aggiornamento con sudo do-release-upgrade

    update-manager vi chiederà se volete effettivamente aggiornare e vi darà anche una stima del tempo previsto:

    Calculating the changes

    Do you want to start the upgrade?

    12 packages are going to be removed. 160 new packages are going to be
    installed. 998 packages are going to be upgraded.

    You have to download a total of 749M. This download will take about
    51 minutes with your connection.

    Fetching and installing the upgrade can take several hours. Once the
    download has finished, the process cannot be cancelled.

    Continue [yN]  Details [d]

    Date ‘y’ e l’upgrade comincerà.

  • 10 cose da fare dopo aver installato Ubuntu Intrepid 8.10

    Ultimamente ho reinstallato Linux sulla mia macchina principale, dopo anni in cui lo tenevo relegato in una virtual machine in VMWare. La scelta della distribuzione è ovviamente caduta su Ubuntu Intrepid 8.10.

    Subito dopo l’installazione, ho cominciato a fare un po’ di pulizia (rimuovendo quello che non mi serve e/o è inutile) e installare il software che mi serve. Trovate una rapida descrizione ed i comandi relativi (da inserire nel terminale):

    1. Togliere il supporto all’accessibilità, i giochi, il software VOIP Ekiga (uso Skype) e il client BitTorrent Trasmission (molto lento rispetto agli altri client BitTorrent):sudo apt-get autoremove --purge at-spi transmission* gnome-games-* ekiga
    2. Cambiare il refresh rate del proprio monitor al più alto valore possibile (System -> Preferences -> Screen resolution)
    3. Rimuovere il fastidiosissimo “beep” del terminale:echo "blacklist pcspkr" | sudo tee -a /etc/modprobe.d/blacklist
      (è sufficiente un reboot affinché il beep sparisca)
    4. Abilitare i repository per i software multiverse (Menu -> System -> Administration -> Software sources -> abilitare restricted, multiverse, e partner)
    5. Visualizzare i file nascosti: aprite il file browser in una directory qualsiasi e andate in Edit -> Preferences -> “Show hidden and backup files”
      (si poteva fare anche tramite gconf-editor ma perché non usare le scorciatoie quando ci sono?)
    6. Installare software utile tra cui:
      • Flash player per Firefox
      • Filezilla (client FTP)
      • Font Microsoft (utili per OpenOffice) + font terminus (li preferisco per l’utilizzo nel terminale)
      • Java Development Kit (JDK) (utile per sviluppare software Java)
      • I principali tools di sviluppo (build-essential)
      • VLC (per vedere i filmati senza installare codec)
      • Mozilla Thunderbird + Enigmail (client e-mail + supporto a PGP)
      • Alcuni plugin utili per Pidgin (client per IM multipiattaforma, GTalk, MSN, etc.)
      • Software di compressione e decompressione (rar, zip, 7z, etc.)
      • Editor di testo Emacs e vim
      • Plugin utili per nautilus, il file browser di Gnome (plugin per aprire un terminale nella directory corrente, e così via)
      • Parcellite, un clipboard manager per Gnome
      • Deluge Torrent, il client BitTorrent che preferisco
      • CVS, subversion e git come strumenti di versioning del software sviluppato
      • htop, una versione di top che presenta molte più informazioni utili rispetto alla versione standard di top
      • sysinfo, un programma che visualizza tutte le caratteristiche hardware del computer
      • TeXmaker e la relativa suite LaTeX per produrre documenti scientifici come tesi, report, etc. (ho già pubblicato un post relativo al LaTeX poco tempo fa)

      sudo apt-get install flashplugin-nonfree filezilla msttcorefonts sun-java6-bin sun-java6-javadb sun-java6-jdk sun-java6-jre sun-java6-plugin ubuntu-restricted-extras vlc vlc-data vlc-dbg vlc-nox vlc-plugin-arts vlc-plugin-esd vlc-plugin-ggi vlc-plugin-jack vlc-plugin-pulse vlc-plugin-sdl vlc-plugin-svgalib thunderbird console-terminus pidgin-plugin-pack pidgin-libnotify pidgin-extprefs pidgin-themes pidgin-encryption pidgin-sipe pidgin-librvp pidgin-guifications pidgin-hotkeys python-psyco sun-java6-fonts compizconfig-settings-manager unace rar unrar zip unzip p7zip-full p7zip-rar sharutils aish uudeview mpack lha arj cabextract file-roller ttf-larabie-straight ttf-larabie-deco mplayer-fonts xfonts-terminus-dos xfonts-terminus xfonts-terminus-oblique xfonts-mona tv-fonts ttf-tuffy ttf-sjfonts ttf-sil-padauk ttf-sil-ezra ttf-paktype ttf-georgewilliams community-themes nautilus-open-terminal terminator tilda openssh-server emacs22-gtk htop workrave vim vim-gnome vim-gui-common vim-gtk vim-python nautilus-actions nautilus-gksu nautilus-image-converter nautilus-open-terminal nautilus-script-audio-convert nautilus-script-collection-svn nautilus-script-manager nautilus-sendto nautilus-share nautilus-wallpaper parcellite deluge-torrent subversion thunderbird-gnome-support mozilla-thunderbird-enigmail subversion-tools sysinfo texmaker texlive-latex-base git-core cvs

    7. Non installiamo Eclipse e/o Netbeans tramite i repository Ubuntu perché la versione installata tramite package è troppo datata. Per installare Eclipse, ad esempio, andiamo sul sito ufficiale e scarichiamo il tar.gz, scompattiamo il tutto in /opt/eclipse ed il gioco è fatto. Per Netbeans, invece, è sufficiente scaricare l’installare e lanciarlo (chmod +x netbeans-installer.sh && sudo ./netbeans-installer.sh ).
    8. Abilitare gli effetti grafici (System -> Preferences -> Appereance -> Visual Effect -> Extra), abilitare gli hot corner e gli effetti grafici che ritenete più opportuni (ad esempio abilito Exposè, System -> Preferences -> Compiz Settings Manager -> Scale) e disabilitare la fastidiosissima resistenza delle finestre al trascinamento lontano dal bordo (System -> Preferences -> Compiz Settings Manager -> Snapping Windows -> Behaviour -> deselezionare “Edge resistance”)
    9. Abilitare il ssh keep-alive (altrimenti dopo un certo timeout la connessione ssh verso altri host verrà abbattuta): sudo echo "TCPKeepAlive yes" >> /etc/ssh/ssh_config ; sudo echo "ClientAliveInterval 60" >> /etc/ssh/ssh_config
    10. Installare il software rimanente (andate sui siti ufficiali per effettuare il download dei package autoinstallanti): Google Desktop, Google Picasa, Skype, VMWare Player, …

    Di seguito trovate un mio screenshot: non ho trasformato Ubuntu in Windows 7, infatti grazie a VMWare (e alla copia gratuita e in versione beta di Windows 7, ho potuto provare con mano il nuovo sistema operativo Microsoft.

    ubuntu_win7

  • Aggiornare Ubuntu da Hardy (8.04) a Intrepid Ibex (8.10) usando la linea di comando

    Ultimamente mi è capitato di dover aggiornare alcuni server da Ubuntu 8.04 (NB: questa versione è una LTS, ovvero Long Time Support che significa pacchetti aggiornati per 3 anni per la versione desktop e fino a 5 per i server) a Ubuntu 8.10 (questa versione non è LTS!).

    Personalmente preferisco prima aggiornare una macchina di test, e, se tutto va bene, migrare tutte anche le altre macchine alla nuova versione. Ma come si può aggiornare Ubuntu usando soltanto l’accesso a linea di comando (tipicamente ssh)?

    È tutto molto semplice:

    1. Installare (se non è già installato) update manager con: sudo apt-get install update-manager-core
    2. Modificate il file /etc/update-manager/release-upgrades cambiando la riga:
    3. Prompt=lts

      con

      Prompt=normal

      (usate vim o il vostro editor preferito)

    4. Salvate il file e lanciate il processo di aggiornamento con sudo do-release-upgrade

    Se tutto va bene, update-manager vi chiederà se volete effettivamente aggiornare e vi darà anche una stima del tempo previsto:

    Calculating the changes

    Do you want to start the upgrade?

    24 packages are going to be removed. 208 new packages are going to be
    installed. 1018 packages are going to be upgraded.

    You have to download a total of 768M. This download will take about 1
    hour 10 minutes with your connection.

    Fetching and installing the upgrade can take several hours. Once the
    download has finished, the process cannot be cancelled.

    Continue [yN]  Details [d]y

  • Come formattare una partizione con XFS su Ubuntu

    Recentemente ho voluto provare il file-system XFS di SGI su una macchina Linux. Perché proprio XFS?

    Un articolo che può spiegare meglio i principali punti di forza di XFS si intitola “Anatomy of Linux journaling file systems“.

    Citando una parte dell’articolo:

    XFS supports full 64-bit addressing and provides very high performance using B+
    trees both for directories and for file allocation. XFS also uses extent-based
    allocation with variable block size support (from 512 bytes to 64KB). Along with
    extents, XFS uses delayed allocation, in which allocation of disk blocks is delayed
    until the blocks are to be written to disk. This functionality improves the chances that
    sequential disk blocks are allocated, because the total number needed will be
    known.

    Quando poi si illustrano i file-system ancora in sviluppo, in particolare Reiser4 e ext4, sono evidenziate alcune funzionalità che XFS già implementa:

    Reiser4 was designed for better journaling through the use of wandering logs and
    delayed allocation of blocks until the journal is committed (as was done in XFS).

    Like XFS and Reiser4, ext4fs includes delayed
    allocation to allocate blocks on the disk only when needed (which reduces
    fragmentation).

    Bene: per avere una partizione con XFS in Ubuntu dovrete:

    • avere un kernel con il supporto a XFS (il kernel di default ha già il supporto)
    • installare i tool per gestire il filesystem mediante il comando: $ sudo apt-get install xfsprogs

    A questo punto il gioco è fatto: vi basterà partizionare usando il vostro tool preferito (fdisk, gparted, …)