Skip to topic | Skip to bottom
HomeLogo Ministero
  

TWiki
TWiki.RapportoDiInstallazioner1.7 - 19 Oct 2005 - 15:42 - Main.mailmanFine della pagina

Start of topic | Skip to actions

Rapporto di Installazione del Software di Gestione dei Contenuti del Portale della Didattica

Indice

Introduzione

In questo rapporto vengono descritte le principali azione eseguite durante l'installazione del software "TWiki" sul server del Comune di Ancona

Configurazione del Server Web

La prima fase è stata dedicata alla personalizzazione di alcune parti del file di configurazione di Apache versione 2.0 specificatamente:

Sezione Principale

ScriptAlias /twiki/bin "/twiki/bin/"

<Directory "/twiki/bin">
    AllowOverride AuthConfig Limit FileInfo
    Options ExecCGI
    SetHandler cgi-script

    Order allow,deny
    Allow from all
</Directory>

########## START MOD_PERL Configuration for TWiki Connection       ##########

&ltIfModule !mod_perl.c&gt
        LoadModule perl_module modules/mod_perl.so
        PerlRequire "/usr/local/apache/lib/perl/startup.pl"
&lt/IfModule&gt

########## END MOD_PERL Configuration for TWiki Connection       ##########

Sezione relativa al Virtual host

#################### TWiki   ####################

    Alias /twiki "/twiki/"
    <Directory "/twiki">
        AllowOverride None
        Redirect /twiki/index.html http://81.117.60.253/twiki/bin/view
        Order deny,allow
        Allow from all
    </Directory>

    <Directory "/twiki/pub">
        Options FollowSymLinks +includes
        AllowOverride None
        Allow from all
    </Directory>

    <Directory "/twiki/data">
        AllowOverride None
        Order allow,deny
        Deny from all
    </Directory>

    <Directory "/twiki/template">
        AllowOverride None
        Order allow,deny
        Deny from all
    </Directory>

    #################### TWiki   ####################

Modifica Permessi delle Directory

La modifica dei permessi dei file è stata effettuata seguendo le seguenti indicazioni:

  1. www-data proprietario dei file script
  2. i file della directory twiki/data scrivibile dall'utente www-data (664)
  3. le sottodirectory di twiki/data ed i suoi file scrivibili da www-data (775)
  4. le sottodirectory di twiki/pub ed i file scrivibili da www-data (775)
Qui di seguito l'elenco delle liste delle directory interessate

-rw-rw-r--    1 twiki    twiki      692162 Aug 31 18:35 TWikiDocumentation.html
-rw-rw-r--    1 twiki    twiki      123154 Aug 31 18:35 TWikiHistory.html
-rw-rw-r--    1 twiki    twiki       10283 Aug 22 00:35 UpgradeTwiki
drwxrwxr-x    2 twiki    twiki        4096 Oct 14 11:38 bin
drwxrwxr-x    7 www-data www-data     4096 Oct 22 11:14 data
-rw-rw-r--    1 twiki    twiki         837 Aug 30 09:02 index.html
drwxrwxr-x    5 twiki    twiki          91 Oct 22 12:05 lib
-rw-rw-r--    1 twiki    twiki       19696 Aug 30 08:52 license.txt
drwxrwxr-x    7 www-data www-data      102 Oct 14 10:30 pub
-rw-rw-r--    1 twiki    twiki         475 May 29 08:51 pub-htaccess.txt
-rw-rw-r--    1 twiki    twiki        4516 Aug 31 18:35 readme.txt
-rw-rw-r--    1 twiki    twiki         564 Aug 30 08:37 robots.txt
-rw-rw-r--    1 twiki    twiki         554 May 29 08:51 root-htaccess.txt
-rw-rw-r--    1 twiki    twiki         516 May 29 08:51 subdir-htaccess.txt00m
drwxrwxr-x    2 twiki    twiki        4096 Oct 22 11:23 templates

Configurazione chroot

Quello che segue è il listato della directory e dei relativi permessi necessari alla installazione in modalità chroot di TWiki.

d--x--x--x    2 root     root           62 Sep  6 11:14 bin
d--x--x--x    2 root     root           17 Oct 14 10:37 dev
d--x--x--x    3 root     root         4096 Oct 14 10:28 etc
d--x--x--x    2 root     root         4096 Oct 14 10:20 lib
drwxrwxrwt    2 root     root           22 Oct 22 10:29 tmp
drwxrwx--x    7 twiki    twiki        4096 Oct 22 11:13 twiki
d--x--x--x    6 root     root           50 Sep  3 11:22 usr
d--x--x--x    4 root     root           27 Oct 14 10:11 var

Entriamo in dettaglio:

la directory bin:

---x--x--x    1 root     root       511400 Sep  6 11:07 bash
---x--x--x    1 root     root        46444 Sep  3 11:21 egrep
---x--x--x    1 root     root         8956 Aug 10 15:56 false
---x--x--x    1 root     root        46444 Sep  3 11:21 fgrep
---x--x--x    1 root     root        43784 Aug 10 15:56 ls
lrwxrwxrwx    1 root     root            4 Nov 29 10:36 sh -> bash

la directory etc:

NOTA: Molti di questi files sono stati modificati per l'ambiente chroot rispetto a quelli standard di sistema.

drwxr-xr-x    2 root     root           67 Oct 14 11:42 apache
-r--r--r--    1 root     root           25 Aug 10 15:59 group
-r--r--r--    1 root     root          119 Oct 13 13:33 hosts
-r--r--r--    1 root     root        11062 Oct 14 10:02 ld.so.cache
-r--r--r--    1 root     root           18 Oct 14 10:28 networks
-r--r--r--    1 root     root          416 Oct 14 10:27 nsswitch.conf
-r--r--r--    1 root     root          111 Oct 14 10:22 passwd
-r--r--r--    1 root     root         1748 Oct 14 10:28 protocols
-r--r--r--    1 root     root           73 Aug 10 16:03 resolv.conf
-r--r--r--    1 root     root        16126 Oct 13 13:29 services
-r--r-----    1 root     root           56 Aug 10 16:01 shadow

La directory lib:

-r-xr-xr-x    1 root     root        90210 Aug 10 13:50 ld-linux.so.2
-r--r--r--    1 root     root      1153784 Aug 10 13:47 libc.so.6
-r--r--r--    1 root     root        19136 Aug 11 09:58 libcrypt.so.1
-r--r--r--    1 root     root        49828 Aug 11 09:56 libdb.so.2
-r--r--r--    1 root     root         8008 Aug 10 16:08 libdl.so.2
-r--r--r--    1 root     root       130088 Aug 11 09:57 libm.so.6
lrwxrwxrwx    1 root     root           17 Aug 10 16:08 libncurses.so.5 -> libncurses.so.5.2
-r--r--r--    1 root     root       248132 Aug 10 15:54 libncurses.so.5.2
-r--r--r--    1 root     root        69472 Aug 11 09:58 libnsl.so.1
-r--r--r--    1 root     root        40152 Oct 14 10:20 libnss_compat.so.2
-r--r--r--    1 root     root        12176 Aug 10 16:03 libnss_dns.so.2
-r--r--r--    1 root     root        32668 Aug 10 15:31 libnss_files.so.2
-r--r--r--    1 root     root       102172 Aug 10 13:49 libpthread.so.0
-r--r--r--    1 root     root        23388 Aug 11 09:57 librt.so.1
lrwxrwxrwx    1 root     root           17 Aug 10 15:54 libtermcap.so -> libncurses.so.5.2

Per quanto riguarda le altre directoryes:

  • twiki -> è la directory di installazione classica
  • var -> contiene solo i logs di apache
  • tmp -> è vuota.. ma serve come directory di appoggio
  • usr -> Contiene i files e gli eseguibili di apache, inoltre contiene le librerie e gli eseguibili del perl (ovviamente il suo albero è strutturato in modo standard).

Caso a parte della directory usr/bin:

---x--x--x    1 root     root        63060 Nov 29 10:39 ci
---x--x--x    1 root     root        58784 Nov 29 10:39 co
---x--x--x    1 root     root        62044 Nov 29 10:39 diff
---x--x--x    1 root     root        42124 Nov 29 10:39 merge
---x--x--x    1 root     root       708808 Sep  3 12:40 perl
---x--x--x    1 root     root        63648 Nov 29 10:39 rcs
---x--x--x    1 root     root        57172 Nov 29 10:39 rcsclean
---x--x--x    1 root     root        43896 Nov 29 10:39 rcsdiff
---x--x--x    1 root     root        43084 Nov 29 10:39 rcsmerge
---x--x--x    1 root     root        48088 Nov 29 10:39 rlog
---x--x--x    1 root     root       472280 Nov 18 13:38 statistics

NOTA: statistics è un piccolo programma linkato staticamente che mi serve per lanciare lo script delle statistiche di Twiki (/twiki/bin/statistics) utilizzando l'utente di apache. In altre parole setta uid e gid a 33 (www-data) prima di eseguire lo script. Ho dovuto aggiungerlo perchè il cron gira al di fuori dell'ambiente chroot e lancia i comandi con i privilegi di root (senza tali privilegi non si può fare la chiamata alla chrrot() ) in questo modo ripristino i privilegi per l'esecuzione dello script delle statistiche.

Configurazione Notifiche E-mail

Per quanto riguarda la notifica e-mail è stato usato un server di posta presente all'interno della rete comunale configurando in modo opportuno le variabili nella pagina TWikiPreferences esattamente
Set SMTPMAILHOST = xxxxx.comune.ancona.it

Scripts di notifica automatica

La notigfica periodica è stata ottenuta attraverso il processo cron con la configurazione descritta qui di seguito del file in /etc/cron.daily:

#!/bin/bash
# Notifica dei cambiamenti in Twiki
#
# Questo script esegue il comando di notifica dei cambiamenti nelle
# pagine di twiki
chroot [directory chrooted env] /twiki/lib/notifica

File lanciato dallo script aggiunto alla directory /etc/cron.daily/twikinotify che a sua volta lancia lo script perl per la generazione delle notifiche.

#!/bin/bash
# Lancia il mailnotify chiamato da un chrooted env.
cd /twiki/bin
./mailnotify -q

Indicazioni Generali su come aggiungere librerie PERL

Quella che segue è una semplice check-list di orientamento su come procedere per installare le librerie richieste dai plugin:

  • Scaricare le tarball dal sito CPAN (http://www.cpan.org)
  • Scompattare gli archivi in una directory temporanea (per es /tmp)
  • Seguire le indicazioni per l'installazione su un ambiente non CHROOT (di solito si tratta di lanciare in sequenza make; make test; make install)
  • Seguendo l'output dei comandi precedenti (in particolar modo quello della make install) e tenendo conto dei percorsi nell'ambiente CHROOT replicare le operazioni di copia e di creazione delle directory svolte per l'installazione.

Conclusioni

Il problema riscrontrato con il modulo RCS è stato risolto mediante il link simbolico "=sh->bash=" nella directory /bin dell'ambiente chroot. Il problema si presentava perchè perl per eseguire i comandi usa la funzione system() che si appoggia alla shell di default "/bin/sh" invece di chiamare una delle funzioni exec*() appoggiandisi direttamente alla bash.

In sostanza, senza tale link simbolico, l'installazione di twiki in chroot non era in grado di eseguire alcun comando rendendo quindi inservibile il client RCS e la pagina di ricerca. Nonostante questo però, tale omissione lo ha reso TOTALMENTE IMMUNE al noto bug di sicurezza relativo al incidente http://twiki.org/cgi-bin/view/Codev/SecurityAlertExecuteCommandsWithSearch.

Cenni finali sulla sicurezza

In questo momento ho riattivato il client RCS Standard (e quindi anche le ricerche) per monitorare il comportamento del server contro eventuali attacchi basati su iniezione di comandi mediante stringhe di ricerca malformate. L'unica precauzione che ho preso per ora è quella di richiedere l'autenticazione dell'utente per l'accesso alla funzionalità di ricerca.

Per farlo ho modificato il file .htaccess in =/twiki/bin/ aggiungendo la direttiva:

<Files "search">
       require valid-user
</Files>

..ed il file di configurazione di Apache httpd.conf aggiungendo nella sezione di Twiki le seguenti direttive:

    <Location "/twiki/bin/view/Main/WebSearch*">
        require valid-user
    </Location>

    <Location "/twiki/bin/view/Main/WebSearchAdvanced*">
        require valid-user
    </Location>

-- MarcoCasavecchiaM - 29 Nov 2004
All'inizio


Sei qui: TWiki > RapportoDiInstallazione

All'inizio

Copyright © 1999-2010 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback