Configurare una Proxy Appliance basata su Linux Consulta anche la sezione dedicata alla Distro IpCop sul nostro sito web Prefazione La seguente documentazione traccia le attività svolte durante l'installazione e la configurazione di uno dei nostri prodotti hardware/software. Di seguito mostriamo i passi necessari in merito all’installazione di un software di proxy
e filtraggio delle url, basato su sistema Linux ed altri software open source. Panoramica software da
installare Assemblaggio Installazione di Linux In questa
prima fase occorre collegare tastiera e monitor (meglio se Crt) all’appliance. 1) Collegare il cavo di rete LAN (ove presente un router) alla scheda di rete principale, cioè quella con dei piccoli led sopra. Verrà vista come eth0, mentre la secondaria che collegheremo in WAN sarà in seguito vista come eth1. 2) Avviare l’appliance da cd-rom e scegliere “Install a Server” (se si installa la versione oem si ha un errore sul boot). 3) Durante la procedura guidata, scegliere di configurare eth0 come scheda principale. La rete di verrà configurata tramite dhcp, al momento della scelta del nome host, se vogliamo possiamo fare “annulla” e scegliere di configurare la rete manualmente. 4) Seguiamo le istruzioni a video per partizionare manualmente in questo modo: · (circa) 1,7Gb ext3 con journaling · (circa) 130Mb di swap Rigorosamente senza LVM! Nota: L’ideale sarebbe partizionarlo a mano, ma se dovesse funzionare, riavviare e procedere con il partizionamento guidato 5) Installiamo il bootloader Grub. 6) Infine scegliamo di installare i restanti pacchetti. Durante
l’installazione ci verrà chiesto di creare un utente e password. Ricordiamo che
quest’ultimo avrà i permessi di admin ma potrà usare i comandi di root solo
tramite sudo. Al primo avvio del sistema dopo aver effettuato l’autenticazione, modifichiamo il file dei sudoers in modo che non ci venga chiesta la password con sudo. Quindi: sudo –i Configurazione dei repositories Gli installatori di pacchetti default di Ubuntu sono basati su Aptitude. In questi esempi procederemo alle varie installazioni tramite apt-get. Per prima cosa dobbiamo eliminare il cd-rom dalle fonti aptitude. Da root (o sudo) digitiamo: nano /etc/apt/sources.list - Mettiamo
il commento alla riga che inizia per CD-ROM Dopo aver
aggiornato il file, per aggiornare il repository, diamo: Importante : Se i dati non vengono aggiornati è perché c’è un bug nella visualizzazione di alcuni caratteri in nano (in pratica quando si cerca di fare un # con ALT+à si rischia di creare un carattere invisibile che non viene riconosciuto. In questo caso occorre installare in qualche modo SSH e cercare di lavorare da PuTTY (via Windows) Nota: l’ip usato dall’appliance in Clanius sarà 192.168.1.10/255.255.255.0 , con questo va associato un gateway preferenziale, se scelto correttamente durante l’installazione, quindi se la connessione internet non funziona ancora, verifichiamo la configurazione Ip della scheda di rete principale con il comando: ifconfig eth0 ed eventualmente effettuiamo modifiche con: nano /etc/network/interfaces Installazione Environment (ambiente di lavoro) Ottimizzazione del sistema operativo Seguiamo le seguenti operazioni con questo ordine: Aggiorniamo
il kernel: Installiamo la
GUI, cioè l’interfaccia grafica. apt-get clean && apt-get install ubuntu-desktop Se si dovesse ricevere un errore per mancanza di spazio, diamo questo comando: apt-get clean && dpkg --configure -a così verrà ripulito di disco da tutti gli installer e l’installazione dell’interfaccia grafica riprenderà fino al suo termine. Ora diamo nuovamente: apt-get clean Ad installazione terminata, iniziamo ad eliminare ciò che non serve del pacchetto grafico: apt-get remove openoffice* evolution* games* gimp* totem* serpentine gaim gthumb Dopo che abbiamo reso il sistema più snello, provvediamo a cambiare la risoluzione di default dello schermo a 800x600 per il traffico Vnc più performante: nano /etc/X11/xorg.conf Cerchiamo la parola: “Modes”, ci ritroveremo nella posizione di una riga simile: Modes "1280x1024" "1024x768" "800x600" …e
cancelliamo le altre risoluzioni lasciando solo “800x600” Poi riavviamo:
reboot . Controllo remoto Installiamo
ora gli strumenti di controllo remoto con il comando: Se come in
questo abbiamo installato la grafica in un secondo momento, non possiamo
usufruire del pannello user friendly messo a disposizione da ubuntu per modificare
le proprietà del server Xvnc. Vino è l’utility che integra tutte le proprietà. Facciamo ora
un test entrando da un computer Windows con UltraVnc. Nota: Già da adesso è consigliabile
lavorare il più possibile sotto SSH dove l’I/O ha una migliore resa (vedi bug
che può verificarsi in sources.list). Cambio scenario di rete Ora che possiamo accedere via Ssh e Vnc alla macchina, possiamo collegarla nel nostro armadio rack (o nei pressi del router) esulando monitor e tastiera. Entriamo
nella configurazione del router e modifichiamo la classe IP. Nel caso della
nostra rete è stato necessario modificare da: Si consiglia
di disabilitare il servizio dhcp se
presente. Se si
desidera portare a 6 il numero di host (per introdurre dei router alternativi),
usare come subnet mask 255.255.255.248
Dopo aver modificato correttamente Ip e netmask del router, questo non sarà più raggiungibile in rete dai comuni client. Colleghiamolo quindi alla seconda scheda di rete attraverso un cavo ethernet di tipo crossover o attraverso un cavo standard se si tratta di un router con switch integrato. Impostiamo
un indirizzo ip alla seconda rete con il comando: Se riusciamo navigare in internet dal proxy, allora la configurazione è andata a buon fine e possiamo provvedere a salvarla nel file /etc/network/interfaces Aggiungendo queste righe: auto eth1 Alla fine del file (senza sostituire la già presente configurazione della prima scheda) e commentando la riga con il gateway di default in riferimento alla prima scheda eth0. Predisposizione storage card Il passo
successivo è quello di predisporre la memoria esterna (memory card CF) per la
registrazione dei log e della cache e di tutti i file che hanno modifica più
frequente. Occorrerà quindi partizionarla in 2 partizioni da 2 Gb l’una. La
prima partizione verrà usata come partizione di restore del sistema (vedremo in
seguito come), la seconda come contenitore di cache. Configuriamola
con: Terminata la procedura, spegniamo l’apparato. Inseriamo la memory card nello slot ed avviamolo. Da Gnome diamo ALT+F2 (esegui) e digitiamo: Nella barra degli strumenti in alto a destra possiamo scegliere su quale device agire (tra Dom e Cf). Clicchiamo sul menu a tendina per selezionare la cf, che ne nostro caso corrisponde a /dev/hdd Nota: Se la memory card non dovesse figurare in elenco,
disinseriamola e reinseriamola nello slot e selezioniamo l’opzione refresh devides dal menu GParted. A questo punto possiamo creare le due partizioni di 2Gb ciascuna, le opzioni nel menu Partition. La procedura è abbastanza intuitiva. E’ importante creare in ordine prima la partizione di restore (nel nostro caso in /dev/hdd1) formattandola Fat32. Lo spazio restante lo dedichiamo ai log e sarà ext3. Ora via
shell possiamo montare l’unità. Editiamo il file /etc/fstab aggiungendo
questa riga che possa dare le corrette informazioni sul file system: Se è tutto
ok. Oltre alla directory Lost+Found che troveremo di default dopo la
formattazione, procediamo col creare queste tre directory nella card: Configurazione dei componenti proxy e firewall Per
abilitare le funzionalità di proxy trasparente attiviamo Ip forwarding. */1 * * * * echo 1 > /proc/sys/net/ipv4/ip_forward Ogni utente ha il suo crontab, quindi assicuriamoci di essere in root, prima di eseguire questo comando. Per evitare errori di compilazione durante l’installazione dei prossimi componenti, aggiornare il kernel con una versione differente ove il compilatore LibC funzioni bene con il nostro processore. Per vedere
la versione attuale diamo: La nostra image dovrebbe essere la 2.6.15-55-386 o qualcosa di simile. Modifichiamola
con una svn leggermente precedente. Per mostrare le versione installabili in
repository diamo: Cerchiamo
una versione precedente che sia sempre di classe i386. Questa andrà bene: e riavviamo: reboot Ricordiamo che in questo caso nel grub rimane in automatico creata la possibilità di far partire il sistema con la precedente image installata. In questo modo possiamo compilare Squid senza problemi. Dopo il riavvio occorre settare tutti i routing lanciando in cascata questa serie di comandi: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j
REDIRECT --to-port 8080 Possiamo controllare la corretta applicazione lanciando il comando: iptables-save Se tutto è
ok, proseguiamo salvando i risolutati in un file: Per poi
aggiungere queste regole all’avvio automatico. A questo punto tutto il traffico che arriva sulla porta 80 (www), verrà girato sulla 8080 (dansguardian) e così via per le altre applicazioni (squid su 3128 e p3scan su 8110). Sono appunto questi due i software di base che ora andremo ad installare per il funzionamento dell’appliance. Squid e DansGuardian Squid-cache
sarà il software di proxy che regolamenta il traffico e lo stack tcp, mentre
DansGuardian effettua controlli sul contenuto delle Url e inoltre fa si che non
entrino virus (grazie all’antivirus Clamav). Insieme sono la "forumla core" della nostra applicazione. Questo è il comando per installare Squid di default: apt-get install squid squid-common Se ci viene restituito un errore ove si envince che il “visibile_hostname” non è ancora stato settato modifichiamo il file: /etc/squid/squid.conf Ed aggiungiamo questa riga: visible_hostname proxy (oppure invece di proxy usiamo
l’host di default che abbiamo dato all’installazione) Installiamo
i filtri di con Dansguardian: Questo
comando installerà anche l’ultima versione di clamav 0.9.x presente nel
repository, che molto probabilmente andrà aggiornata. Vedremo in seguito come. Se nessuna
di queste soluzioni funziona, diamo questo comando di reinstallazione: Questo comando riproduce i precedenti due in sequenza. Non dovremmo avere errori. Avremo solo un errore di avvio di Dansguardian, ed è giusto così, poiché il programma deve ancora essere configurato. Nota: Controlliamo che dopo l’installazione di DansGuardian il file /etc/iptables non sia stato sovrascritto in modo automatico. Nel caso, riportiamo l’instradamento delle porte come prima modificando il file. Extra: Nel mio caso, anziché usare i
repositori ho preferito compilare a mano l’ultima versione di DansGuardian. E’
una procedura più complessa rispetto a quella base, ma è una valida
alternativa. Poi
scaricare ed installare DansGuardian: Se si riceve
un messaggio di qualche libreria mancante, installiamola. Se dopo
./configure il report è ok, allora compiliamo il sorgente con il comando: Modifichiamo
la configurazione di DansGuardian in modo che inizierà a funzionare al prossimo
riavvio, quindi diamo il comando: Proviamo ad avviarlo con il comando dansguardian Se ci viene
restituito un errore di questo tipo: Ora che
DansGuardian è pronto, modifichiamo anche la configurazione di squid: A questo
punto possiamo già riavviare il demone Squid per testarlo: Mettiamo quindi un client con classe 192.168.1.* sotto proxy alla porta 3128 e proviamo. Se lo start
non avviene, controlliamo che la memory card sia montata bene, altrimenti
riavviamo. Se tutto va bene, proviamo a metterci sotto proxy nelle porte 80 oppure 8080, dovremmo navigare attraverso DansGuardian. Posta elettronica e antivirus Proseguiamo
con l’installazione del proxy di posta pop3 P3scan. Al termine dell’installazione occorre configurarlo, per cui cambiamo le impostazioni nel file /etc/p3scan.conf Teniamo
presente che p3scan risponde sulla porta 8110 ove abbiamo già provveduto ad
effettuare il NAT, per cui non modifichiamo alcuna impostazione sulle porta
nella configurazione. Testiamo
P3scan con un client di posta. Nel caso non funzioni, proviamo a dare: Se risulta
startato ma non funziona ancora, testiamone il funzionamento con il comando: Ora che
P3scan è in ascolto, diamo il comando: e scarichiamo
il motore aggiornato con questo wget: Ad
installazione completata, diamo il comando: Gestione pagine di segnalazione errori e siti bloccati Se viene richiesta una URL presente in una delle blacklist di Dansguardian, è necessario che gli venga proposto all'utente una pagina che gli consentirà l’invio della segnalazione di sblocco all’amministratore. Installeremo quindi un server web per permettere l’invio della segnalazione di sblocco di una pagina: apt-get install apache php5 con /etc/init.d/apache2 start avviamo il servizio. Da come abbiamo visto nella configurazione di Dansguardian
abbiamo già predisposto questa pagina di errore ’http://192.168.1.10/error.php’,
dove 192.168.1.10 è l’indirizzo Ip eth0 del nostro proxy. Apriamo un browser da
un client e digitiamo http://192.168.1.10/ ,
dovrebbe apparirci una pagina che ci indica il corretto funzionamento del
server web. Dobbiamo adesso creare il file error.php a nostro piacere.Si
consiglia di scaricare il template dal nostro repository di Clanius: Nota: Possiamo cambiare questo percorso da /etc/apache2/httpd.conf , nel nostro caso lo lasceremo invariato Nota 2: Ora che Apache è pronto, consigliamo di installare anche il componente SARG (reperibile su sourceforge) per una più comoda visualizzazione delle statistiche della navigazione effettuata. TIPS... Appendice 1: Possiamo ovviamente cercare dei pacchetti Deb più aggiornati da: http://packages.ubuntu.com Appendice 2: La compilazione con “make” non
funziona? Diamo: Appendice 3: Se le IpTables non danno gli effetti
desiderati, diamo sempre un: Se avete suggerimenti e miglioramenti da proporre scrivetemi una e-mail a: a.verde{at}clanius{dot}com |