Archivio

Archivio per aprile 2009

Installare squid proxy server su Ubuntu + Configurazione Squid Avanzata

29 aprile 2009

Girovagando per la rete mi sono imbattuto in una guida  interessantissima che spiega come installare squid proxy server su ubuntu e ovviamente ho subito provato:

  1. Da terminale digitare apt-get install squid
  2. Aprire gedit /etc/squid/squid.conf
  3. Trovare il TAG: visible_hostname e aggiungere visible_hostname <hostname> dove <hostname> è il nome host del computer.
  4. Controllare che la porta http sia impostata a 3128.
  5. Salvare e chiudere.
  6. Digitare adduser squid e specificare una password.
  7. Digitare /etc/init.d/squid restart
  8. Fermare il sevizio con /etc/init.d/squid stop
  9. Testare il servizio in debug mode digitando squid -z (crea la cache).
  10. Digitare squid -NCd10.
  11. Aprire Firefox all’indirizzo localhost:3128.
  12. Se tutto è a posto uscire dal modo debug con CTRL-C.
  13. Lanciare /etc/init.d/squid start
  14. Per configurare Firefox con squid andare su Modifica–>Preferenze cliccare su Avanzate.
  15. Rete>Impostazioni e Configurazione manuale dei Proxy. In Proxy http, inserire localhost e su porta 3128.

GUIDA ALLA CONFIGURAZIONE AVANZATA DI SQUID

Aggiungo questa guida relativa alle funzioni e ai comandi di Squid nel caso servisse a qualcuno come riferimento.

Il file di configurazione principale di Squid è squid.conf, il prefix cambia a seconda del package utilizzato per l’installazione, esempio il prefix del file di configurazione dei sorgenti è /usr/local/etc mentre per l’rpm di redhat è /etc/squid.
Il file di configurazione base risulta essere molto verboso e ostico per il numero di parametri configurabili, ma teoricamente si potrebbe commentare tutte le voci e il demone partirebbe con i valori settati a quelli di default.

Di seguito sono riportati le principali opzioni settabili nel file di configurazione con relativa  spiegazione:

http_port
Specifica la porta ove squid si metterà in ascolto, come nell’esempio è possibile specificare più porte, La porta di default è 3128
Esempio: http_port 7575 8080

cache_dir
Specifica la directory ove risiede la cache gestita da squid; i valori a seguire risulatano essere, la dimensione della cache in mega (512) e il numero delle sottodirectory  di primo livello (16) e secondo (256). Come nel caso di http_port è possibile specificare più entry per lo stesso operatore.
I valori di default sono: 100 16 256.
Esempio: cache_dir /var/cache/ 512 16 256

cache_effective_user , cache_effective_group
Parametro per specificare l’owner dei processi di squid.
Per motivi di sicurezza è bene evitare di utilizzare l’owner di root ma di un utente creato ad hoc.
Di default, se le opzioni sono commentate, l’owner del processo corrisponde a quello dell’utente che ha lanciato il demone.
Esempio:
cache_effective_user squid
cache_effective_group squid

cache_peer
Abilitata questa opzione, squid ha la possibilità di comunicare con altri squid nella stessa network, con una specificata gerarchia, per gestire in modo più funzionale la cache distribuita nei vari nodi.
Esempio: cache_peer proxy.openskills.info parent 3128 3130 default
Il primo campo specifica l’hostname dell’affiliato ovvero l’host con il quale comunicherà per l’interrogazione della cache. Il secondo campo specifica un vero e proprio grado di parentela fra i due host. Il terzo campo specifica la porta http del server destinatario, mentre il quarto valore specifica la porta ICP (UDP) query port, ovvero la porta utilizzata per l’interrogazione della cache remota, l’ultimo e quinto valore specifica le opzioni.

cache_mem
Specifica  l’ammontare della shm (shared memory) in mega da dedicare alla cache. Da ricordare che squid di fatto acquisisce tre volte tanto il valore specificato

cache_mgr
Parametro per configurare l’email del “cache manager”, visualizzato anche nelle pagine di errore.

acl, http_access, icp_access
L’uso delle acl permette usufruire di uno strumento molto flessibile per il controllo degli accessi alle risorse del proxy. Tipicamente viene utilizzata la regola generale di negare a tutti quanti e di limitare l’accesso ai  soli host appartenenti alle proprie network ma è possibile limitare l’accesso per altre discriminanti come l’ora locale e il dominio di destinazione, per il tipo di browser o addirittura per la comunity SNMP.
Per definire le acl occorre differenziare due elementi:

classi : Identificano le regole che gestiscono l’accesso per un gruppo di client con una determinata descriminante. Per esempio per ip o per dominio.
operatori : Gestiscono le regole o le stessi classi per uno specifico protocollo. Esempio: http_access, icp_access and snmp_access
Esempio di classe:acl all src 0.0.0.0/0.0.0.0
Creazione di una acl chiamata “all” che identifica tutti i client (src 0.0.0.0/0.0.0.0)
Esempio di operatore:http_access deny all
Uso dell’operatore http_access per negare l’accesso in modo indiscriminato.

Sintassi acl
acl name type (string|”filename”) [string2] [string3] [“filename2”]
La sintassi minima prevede come primo argomento un nome univoco per determinare la acl stessa(name), il tipo della acl come secondo argomento (type) e come terzo argomento la descriminante (string)

Sintassi operatore
operatore allow|deny [!]aclname [& [!]aclname2 … ]
il primo argomento specifica l’azione ovvero permette (allow) o nega (deny) l’acl che segue. L’acl deve essere specificata con il suo nome e possono essere specificate + acl sulla stessa linea di configurazione.

Squid – Autenticazione utenti su dominio Active directory o NT4

E’ possibile configurare Squid per autenticare gli utenti che possono usare il proxy usando le credenziali di un dominio Active Directory o di tipo NT4.

L’autenticazione si basa su winbind, il demone fornito con Samba che permette l’autenticazione degli utenti locali di una macchina Linux su un domain controller di un dominio di tipo Active Directory o NT4.

Il servizio winbind deve essere in esecuzione (anche non configurato) e la macchina su cui gira Squid deve aver joinato il dominio.

In /etc/squid/squid.conf devono essere presenti le seguenti configurazioni:

Settaggi relativi al sistema di autenticazione:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic

Alternativa che negozia automaticamente la password dell’utente loggato sul dominio
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol= squid-2.5-ntlmssp

Se si vuole permettere accesso solo a utenti del gruppo “navigatori” del dominio “DOMINIO” usare invece questa alternativa:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="DOMINIO+navigatori"
Notare che è necessario avere “winbind separator = +” in smb.conf (il file di configurazione di Samba) se si lascia il separator normale \ non funziona!

Le seguenti righe devono essere invece sempre presenti:
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param ntlm use_ntlm_negotiate on

E’ poi necessario configurare le acl di Squid per forzare la richiesta di autenticazione (cambiare gli ip della local_network secondo le proprie esigenze):
acl password proxy_auth REQUIRED
acl local_network src 192.168.171.0/24
http_access allow local_network password

Web virus filtering con Squid e ClamAV

E’ possibile configurare Squid per filtrare tutte le richieste web che vengono eseguite dagli utenti con l’antivirus engine ClamAV.
Uno dei metodi utilizzabili prevede la configurazione di SquidClamAVredirector.

Scaricare SquidClamAVredirector dal sito ufficiale.
Prerequisiti sono Squid, ClamAV, Python e le librerie Python per interfacciarsi con ClamAV: pyclamav disponibili all’indirizzo: http://xael.org/norman/python/pyclamav/ .

Installazione pyclamav (Usare l’ultima versione disponibile)
Scaricare PyClamav dal sito ufficiale
tar -zxvf pyclamav-0.3.2.tar.gz
cd pyclamav-0.3.2
python setup.py build
python setup.py install

Installazione SquidCLamAV Redirector (SCAVR):
Scaricare SCAVR dal sito ufficiale.
tar -zxvf SCAVR.tar.gz
cp SquidClamAV_Redirector.py /usr/local/bin/
chmod +x /usr/local/bin/SquidClamAV_Redirector.py
cp SquidClamAV_Redirector.conf /usr/local/squid/etc/
chown squid /usr/local/squid/etc/SquidClamAV_Redirector.conf
vi /usr/local/squid/etc/SquidClamAV_Redirector.conf

Esempio di SquidClamAV_Redirector.conf
[SquidClamAV]
# restricted = http://virus.jackal-net.at/infected.php?virus=restricted
virusurl = http://10.0.0.178/infected.php
#virusurl = http://virus.jackal-net.at/infected.php
cleancache = 300
ForceProtocol = http or https
MaxRedirection = 99
MaxRequestsize = 2Mb
log_priority = LOG_INFO
log_facility = LOG_LOCAL6
acceptredirects = 300 301 302 303
MIMETypes = all image/bmp image/gif image/jpeg image/png image/tiff text/html
Timeout = 60.0

[Debug]
Infected = true
Clean = true
Error = true
Ignored = true

[Extensions]
pattern = all .jpg .exe .zip .rar .ar .com .bzip .gz

## [Proxy]
### http = http://localhost:3128

[Whitelist]
www.jackal-net.at       = 0

Configurazione Squid
In squid.conf inserire le seguente righe, utilizzando ovviamente i path corretti relativi a dove si è copiato lo script SquidClamAV_Redirector.py (deve essere eseguibile) sul proprio sistema:
redirect_program /usr/local/bin/SquidClamAV_Redirector.py -c /usr/local/etc/squid/SquidClamAV_Redirector.conf
redirect_children 5
redirector_access deny localhost
http_reply_access allow all

NOTA: La direttiva “redirector_access deny localhost” va messa dopo “acl localhost src 127.0.0.1/255.255.255.255” (che già esiste).

Esempio di configurazione di Squid con controllo degli accessi

Segue un esempio di configurazione di Squid, in cui viene impostato il controllo degli accessi rispetto ad indirizzi IP sorgenti e autenticazione degli utenti.
Viene inoltre indicato come integrare Squidguard (software separato) per filtrare l’accesso a determinati siti con contenuto “non consono” (warez, porno ecc.).

Esempio di SQUID.CONF
# La configurazione di Squid prevede numerose impostazione per il tuning della cache, la gestione di una struttura di caching distribuita e la modifica di innumerevoli parametri di funzionamento del programma. In questo esempio si è mantenuta il più possibile la configurazione di default, rimuovendo i settaggi che generalmente sono commentati (perchè già impostati di default) e lasciando inalterate le impostazioni presenti nel file di default (su una Fedora 2).
# Le parti dove sono state introdotte delle customizzazioni sono spiegate contestualmente

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
# Di default la dimensione massima della cache su hard disk è 100 Mb, ha senso aumentarla secondo le proprie disponibilà. Qui si è messo 2000 Mb
cache_dir ufs /var/spool/squid 2000 16 256
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hour
# Squid può autenticare i suoi utenti in molti modi (tramite ldap, smb, pam, dominio NT...). Qui si decide di usare un file di password creato con il sistema di autenticazione di base di apache ("htpasswd -c /etc/squid/utenti).
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/utenti
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# Definiamo alcune access list adatte al nostro scopo:
# – la rete dei client che possono usare il proxy (“retelocale”)
# – l’uso del meccanismo di autenticazione sopra definito, definendo un gruppo che che include le login “paolo” e “carlo” (“utenti”)
# – Un indirizzo della rete locale che non può usare il proxy (“hostnegato”)

acl retelocale src 10.42.42.0/255.255.255.0
acl utenti proxy_auth carlo paolo REQUIRED
acl hostnegato src 10.42.42.10

# Le acl sopra definite vengono ora applicate. E’ molto importante l’ordine con cui sono indicate. In questo caso, prima viene impedito l’accesso web a “hostnegato” e poi viene permesso agli utenti autenticati che fanno parte della rete locale. Notare l’uso di entrambe le acl sulla stessa riga, entrambe vanno rispettate
http_access deny hostnegato
http_access allow utenti retelocale

# Seguono le impostazioni preimpostate in /etc/squid.conf, notare che di default c’è un “http_access deny all” alla fine. Se questo fosse prima, impedirebbe gli accessi eventualmente definiti successivamente
http_access allow localhost
http_access deny all

http_reply_access allow all
icp_access allow all

# La seguente riga è da aggiungere (scommentandola) se si vuole usare SquidGuard per gestire l’accesso anche sulla base dei contenuti dei siti in cui si naviga. SquidGuard è un programma separato che va installato a parte
# redirect_program /usr/bin/squidGuard

Esempio di SQUIDGUARD.CONF
logdir /var/log/squidguard
dbhome /var/lib/squidguard

dest adult {
domainlist      adult/domains
urllist         adult/urls
expressionlist  adult/expressions
}

acl {
default {
pass     !adult all
redirect http://www.google.com
}
}

Restrizioni ai download con Squid

La gestione delle ACL sotto Squid basate su regexp permette di affiancare, alle classiche restrizioni di accesso sui siti web, limiti sui download.

Il concetto, anzichè applicato sulla ricerca di sottostringhe all’interno dell’intero url, sarà concentrato nella parte finale, dove viene esplicitata l’estensione del file.

Si procede con la crezione di un file, per comodità nella stessa directory che contiene gli altri filtri di squid:

# cd squidblock/
# ls
files   games   mp3     pirated porn
#

Il file files contiene l’elenco delle estensioni che si vogliono escludere dalla possibilità di download:

# cat files
# blocco file
\.(afx|asf|asx|au|avi|divx|m3u|mov|mp2|mp3|mpeg|mpg|qt|ra|ram|rm|viv|vivo|vob|vqf|wav|wma|wmv|vbs|shs|pif)($|\?)
#

Si aggiungono infine gli appositi riferimenti nel file squid.conf:


# definisco l’acl “files”
acl files url_regex “/etc/squid/squidblock/files”


# applico l’acl negandola con deny
http_access deny files

Un’altra simpatica direttiva utile contro i selvaggi download da parte degli utenti è la reply_body_max_size, che specifica la dimensione massima di una risposta a una richiesta HTTP.

Transparent Proxy con Squid

Già discussi e ridiscussi sono i benefici di un proxy all’interno nella infrastruttura di rete, primo fra tutti la gestione centralizzata delle restrizioni ai siti consentiti alla navigazione. La personalizzazione in questo contesto può essere mirata nel dettaglio, inutile dire che la presenza di numerose macchine sotto proxy aumenta proporzionalmente le difficoltà di gestione, favorendo ad esempio la possibilità di abusi da parte di utenti legittimi.

La funzione del Transparent Proxy è quella di intercettare ogni richiesta di un particolare servizio (in questo caso richiesta HTTP) per poi redirigerla a un proxy (Squid) affinchè svolga tutte le funzioni del caso (semplice content filtering piuttosto che caching). Nel dettaglio la funzionalità di intercettare traffico appartiene ai vari packet filtering, Squid assolve eslusivamente i compiti di proxy.

I benefici portati da una implementazione simile sono notevoli: la forzatura a utilizzare il proxy lato client è trasparente per l’utente; l’amministratore è relativamente certo di controllare il traffico HTTP per tutte le workstation che gestisce.

L’analisi viene effettuata su un’unica macchina che assolve entrambi i compiti di packet filtering e proxyserver (opzione sicuramente discutibile).

Si considera la config di Squid:

# Forzo il binding di Squid su localhost
http_port 127.0.0.1:3128

# Direttive minime per le funzionalità di proxy
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

L’opportuna gestione delle ACL di Squid terminerà la config del proxy, implementando politiche di navigazione per indirizzi ip / subnet ip che daranno origine alla richiesta.
Lato packet filtering si considera la configurazione per pf (OpenBSD):
#/etc/pf.conf
...
rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
...
e iptables (Linux):
#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
in entrambi i casi si redirige il traffico HTTP sullo Squid locale.

Osservazioni
Come già accennato risulta sicuramente discutibile la scelta di integrare packet filter e proxy sulla stessa macchina, da valutare in base al contesto di utilizzo della soluzione.

Inoltre, l’attuale configurazione redirige OGNI richiesta HTTP, incurante della sorgente e delle destinazione del traffico (da rivalutare con l’eventualità di webserver all’interno della rete).

Infine, una centralizzazione di questo tipo porta a un “single point of failure” rappresentato dal proxy; anche in questo caso risulta doverosa l’analisi sulla eventuale implementazione di una soluzione ridondata.

Gestione dei log di Squid

Questo piccolo “HoW-To” vi permetterà di inserire i log all’interno di un database e con l’utilizzo di un’interfaccia grafica scritta in php di avere report abbastanza dettagliati e personalizzabili
Sul sito ufficiale di squid potete trovare numerosi tool per l’analisi dei log

http://www.squid-cache.org/Scripts/

—————————-
Requisiti
—————————-

-Perl (i moduli richiesti sono elencati sotto)
-Mysql
-Apache+php
-access.log di squid

http://texilee.altervista.org/doc/apps/PHP_SQUID.rar

PHP_SQUID contiene la dir

sql         ->  struttura della tabella / qualche record di esempio

—————————-
Inserimento dei log su DB
—————————-

I log NON DEVONO essere in formato common. Qualora li aveste in quel formato

potete usare ‘apacheconv’ una utility che si trova nel pacchetto squid-graph per la conversione al formato nativo

http://squid-graph.securlogic.com/

Ecco un esempio di log in formato squid nativo

1083837773.713    411 192.168.20.168 TCP_MISS/200 437 GET http://www.texilee.altervista.org/SITO2/inc/img/counter/miniportail_2/cnt4.gif tex DIRECT/207.44.136.44 image/gif

1083837773.713                                     –> time
411
192.168.20.168                                     –> remotehost
TCP_MISS/200                                       –> status
437                                                –> bytes
GET
http://www.texilee.altervista.org/SITO2/inc/img/counter/miniportail_2/cnt4.gif  –> request
tex                                                –> rfc931
DIRECT/207.44.136.44
image/gif

Per informazioni riguardo i log di squid vi riporto qui.

—————————-
Creazione della Tabella
—————————-

CREATE TABLE logfile (
id int(11) NOT NULL auto_increment,
remotehost varchar(255) default NULL,
rfc931 varchar(64) default NULL,
request text,
status int(11) default NULL,
bytes int(11) default NULL,
time float(10,3) default NULL,
PRIMARY KEY  (id),
KEY user_time (rfc931,time),
KEY time_index (time),
KEY user_status (rfc931,status)
) TYPE=MyISAM;

—————————-
Requisiti inserimento dei log : squidparse.pl
—————————-

Lo script per l’inserimento dei log è scritto in perl.

Fa parte del tool squidalyser, potete ovviamente sempre avvalervi dello script originale se trovate difficoltà con quello

modificato da me 🙂

http://squidalyser.sourceforge.net/

Per poter essere utilizzato bisogna installare i seguenti moduli (www.cpan.org)

DBD-mysql
DBI
Time

—————————-
Inserimento dei log : squidparse.conf e crontab
—————————-

Modificate i parametri di configurazione in squidparse.conf

Prestate attenzione al parametro

-> expire 4_w

Ogni volta che lo script entrerà in funzione tutti i record più vecchi di 4 settimane verranno eliminati dal DB.
Se volete conservare lo storico aumentatene il valore… se avete problemi di spazio o avete necessità di “controllare”

solamente i log recenti abbassate il valore anche a 1_d (un giorno)

#crontab -e

55 */4 * * * /usr/local/PHP_SQUID/squidparse.pl

Inserite una riga simile a questa nel crontab e ogni 4 ore verrà aggiornato il DB

—————————-
Report con PHP_SQUID
—————————-

PHP_SUID necessita di un web server che supporti php. Apache fa al caso nostro. Estratto il pacchetto tar.gz ad esempio su

/usr/local/PHP_SQUID spostate la dir php_squid all’interno del vostro web server (es. /www/htdocs/php_squid ).

Potete vedere lo script all’opera all’url

http://bud.altervista.org/squid_php/index.php

Gestione logging di Squid

Tra i molteplici vantaggi di SQUID c’è da considerare il logging delle navigazioni effettuate tramite proxy da parte dei client che lo utilizzano.
Vediamo alcune configurazioni che si possono fare in squid.conf per customizzare il logging in base alle proprie esigenze.

ATTIVAZIONE LOGGING CON LO STILE DI QUELLO DEI WEB SERVER
emulate_httpd_log off/on
Di default SQUID logga con una sua propria modalità e quindi il default di questo parametro di configurazione è impostato ad OFF.
Esempio di logging secondo il formato nativo di Squid:
1084289766.082    410 blasco.intranet TCP_MISS/200 28491 GET http://openskills.info/ – DIRECT/213.198.151.253 text/html
Impostando ad ON il suddetto parametro Squid inizierà a loggare nel seguente modo:
blasco.intranet – – [11/May/2004:17:29:33 +0200] “GET http://openskills.info/modify/modify.php? HTTP/1.0” 200 16486 TCP_MISS:DIRECT
Indubbiamente l’emulazione del logging stile web server rende l’analisi dei log di più facile lettura e risulta utilizzabile da un maggior numero di programmi di analisi e statistiche di traffico.

ATTIVAZIONE LOGGING CON DNS LOOKUP
log_fqdn off/on
Anche per questa configurazione di SQUID il default è OFF e non abilita un reverse lookup per ottenere il come completo di ogni IP che si collega al proxy.
E’ sempre consigliabile lasciare il default in quanto la risoluzione dell’hostname da parte di SQUID può introdurre delle latenze e rallentare il proxy, ovviamente in alcuni casi però può essere utile attivare questa opzione.

Ovviamente per ottenere effetto sulle proprie modifiche occorre riavviare il servizio squid.

Reverse Proxy con Squid

Le ragioni che portano all’utilizzo di un proxy sono molteplici, considerate le numerose funzioni che tale apparato è in grado di soddisfare. Nel dettaglio, il reverse proxy risulta indicato nel caso in cui sia necessario eseguire relay di un client esterno verso  un server interno. I vantaggi di una simile implementazione spaziano da motivi prestazionali (riducendo il carico del server) fino a considerazioni che riguardano la security, sia dell’applicazione che del server che la ospita.

La configurazione di esempio sotto riportata simula l’implementazione di un reverse proxy per un server web installato su una diversa macchina.

# Forzo l’ascolto di Squid sulla porta 80
http_port 80

# Definisco una ACL…
acl allowed_hosts src 0.0.0.0/0.0.0.0

# … e ne autorizzo il traffico sopra definito
http_access allow allowed_hosts

# Definisco l’indirizzo IP del server web interno
httpd_accel_host 192.168.51.67

# Definisco la relativa porta sul quale è in ascolto il server interno
httpd_accel_port 9900

# Le richieste non presenti in cache vengono dirottate sul server interno
httpd_accel_single_host on

# Attivo funzioni di application proxy e caching
httpd_accel_with_proxy on

# Da abilitare nel caso in cui il server interno utilizzi VirtualHost
httpd_accel_uses_host_header off

Anonymizing Proxy con Squid

Squid contiene funzionalità di proxy “anonimizzante”, permettendo di nascondere al sito visitato l’IP dal quale ha origine la richiesta HTTP client.

Le istruzioni da aggiungere al file di configurazione squid.conf:
# Disabilito il sistema di cache logging
cache_access_log /dev/null
cache_store_log none
cache_log /dev/null

# Eventuali ip loggati vengono forzati a 0.0.0.0
client_netmask 0.0.0.0

# Tutti possono accedere al proxy
http_access allow all

# Forzo il client a non fornire alcuna identità al server richiedente
forwarded_for off

# Disabilito le statistiche sui client che si connettono
client_db off

Le istruzioni sopra riportate permettono la non tracciabilità da parte del server verso il client autore della richiesta HTTP, ma non riguardano la cifratura del traffico tra il client e il server proxy; con uno sniffer potrebbe essere possibile analizzare il traffico, poichè non criptato.
Una comunicazione sicura in questo senso può essere implementata con:
– Squid in modalità SSL (su HTTPS), con cifratura appunto SSL del traffico tra client e proxy server;
– tunnel SSL (con stunnel) tra client e server.

Squid e protocollo WPAD

Il Web Proxy Autodiscovery Protocol è un protocollo di livello 7 elaborato da un gruppo di produttori software (Microsoft, RealNetworks, Sun Microsystem ed InkTomi…..) che consente all’utente finale di configurare il proprio browser web in maniera trasparente, ovvero senza fare ricorso ad alcuna configurazione manuale.

Il protocollo WPAD permette ad alcuni browser (quali ad esempio Microsoft Internet Explorer) di autoconfigurare il proxy server tramite un semplice javascript che viene cercato automaticamente all’indirizzo (se esiste) http://wpad[.dominio.it]//wpad.dat
Alcuni grossi Internet Provider (tin.it per esempio) preferiscono indicare agli utenti il percorso del file di autoconfigurazione. Ma in piccole realtà aziendali è preferibile far fare tutto al browser.
Fondamentale è configurare regolarmente il proxy server Squid e poi:
– Modificare il file /etc/mime.types per specificare il MIME TYPE dei file .dat
– Creare nella document root di APACHE il file wpad.dat
– Creare un alias di tipo “wpad.dominio.it” sul server web su cui abbiamo creato il file wpad.dat
Ma procediamo con ordine.
Innanzitutto apriamo con un editor di testo il file mime.types presente in /etc ed aggiungiamo la riga:
application/x-ns-proxy-autoconfig pac dat

Creiamo nella document root del server web configurato per rispondere a wpad.dominio.it (generalmente /var/www/html) il file wpad.dat con un semplice javascript tipo:
function FindProxyForURL( url, host )
{
if( isPlainHostName( host ) ||          // se nessun dominio viene specificato
dnsDomainIs( host, "intranet.palermo" ) || // se viene richiesto un url del dominio locale indicato
shExpMatch( url, "https*" ) ||      // se si usano protocolli sicuri
shExpMatch( url, "snews*" ) )
return "DIRECT";||                    // Non si usa alcun proxy
else
return "PROXY 192.168.1.1:3128; " +                     // Altrimenti usare il proxy indicato
"DIRECT";
}

Dove:
192.168.1.1 -> indirizzo ip del proxy server
3128 -> posta di default di ascolto del server proxy SQUID
intranet.palermo -> dominio (in questo caso non esistente nella realtà) locale per il quale non usare il proxy

Editiamo il file relativo agli indirizzi dns per la zona dominio.it inserendo (nel caso di utilizzo di una distribuzione Fedora Core 1 sotto /var/named/chroot) la riga che fa riusolvere wpad.dominio.it con lìIP del server web dove è stato inserito il file wpad.dat:
wpad    IN      A       192.168.1.10

Rifacciamo partire SQUID, NAMED e HTTPD.
Selezioniamoo in Microsoft Internet Explorer Strumenti -> Opzioni Internet -> Connessioni -> Impostazioni LAN -> Configurazione automatica (rileva impostazioni automaticamente).
In questo modo il browser utilizzerà il proxy in modo trasparente all’utente.

Restrizioni di accesso a siti Web con Squid

All’interno di un’azienda la navigazione spesso viene gestita dal Proxy per svariati motivi:
– Autorizzazione alla navigazione tramite autenticazione degli utenti
– Gestione Access List che permettono di autorizzare/negare la navigazione alle macchine ad esempio in base agli indirizzi IP
– Logging di tutte le richieste fatte dai singoli client che navigano sulla linea internet aziendale
– Risparmio di banda grazie alla gestione da parte del proxy da parte del proxy server
– Possibilità di blocco di diversi indirizzi web.
La scelta del proxy server ricade quasi esclusivamente su Squid per le sue performance, affidabilità e per il fatto che è Open Source e quindi nella visione (distorta) di questo fenomeno da parte dei dirigenti aziendali, gratuito.

Squid può essere configurato per limitare l’accesso o meno a determinati siti web, per fare ciò bisogna utilizzare il TAG url_regex con cui è possibile indicare i file contenenti la lista delle parole chiave selezionate che non possono essere presenti negli URL richiesti dal client.

Esempio:
acl badlanguage url_regex "/etc/squid/squidblock/badlanguage.txt"
acl entertainment url_regex "/etc/squid/squidblock/entertainment.txt"
acl games url_regex "/etc/squid/squidblock/games.txt"
acl mp3 url_regex "/etc/squid/squidblock/mp3.txt"
acl pirates url_regex "/etc/squid/squidblock/pirates.txt"
acl porno url_regex "/etc/squid/squidblock/porno.txt"

A questo punto basta applicare le ACL che abbiamo appena definito tramite il TAG http_access come nell’esempio:
http_access deny badlanguage
http_access deny entertainment
http_access deny games
http_access deny mp3
http_access deny pirates
http_access deny porno

Per poter avere una lista aggiornata di siti web da bloccare si segnalano un paio di siti che forniscono e aggiornano i files contenenti i vari domini negati:
http://www.squidblock.com
http://www.squidguard.org
In particolare quest’ultimo permette tramite un semplice script sul server di scaricare gli aggiornamenti che sono veramente molto frequenti.

Autenticazione degli utenti di Squid

I parametri da inserire nel file di configurazione di squid per abilitare l’autenticazione base degli utenti non sono molti e i commenti all’interno del file sono molto chiari e specifici.

Se ci si avvale di un’installazione di default di squid non occorre compilare programmi aggiuntivi come consigliato nello squid.conf. Bisogna operare sulla direttiva auth_param. Di norma i valori di default saranno sufficienti e occorrerà in caso si desideri abilitare l’autenticazione base scommentare la riga che riguarda questo tipo.
La riga dovrebbe apparire come segue
#auth_param basic program < uncomment and complete this line >

Quello che occorre è specificare il percorso del programma esterno che si occupa di autenticare gli utenti e il percorso del file delle password.
Per un’autenticazione base il programma che occorre si chiama ncsa_auth e si trova su RedHat9.0 in /usr/lib/squid/
Per il file delle password il percorso è arbitrario e va creato con il comando di Apache htpasswd.
La sua sintassi è la seguente
htpasswd -c [nome del file] [nome dell'utente]

Se non ci si trova nella directory scelta per questo file occorrerà specificare l’intero percorso oltre al nome del file.
Una volta effettuata questa operazione la riga del file squid.conf deve essere modificata come segue:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squidpasswd

Ora non resta che specificare una acl che abiliti l’autenticazione con l’istruzione proxy_auth.
acl nomeacl proxy_auth REQUIRED
e di seguito permettere l’accesso a questa acl
http_access allow nomeacl

In questo modo all’accesso di un browser al proxy si dovrebbe aprire una finestra che chiede di inserire utente e password.
Questa forma di autenticazione, come detto, è base e i parametri utente e password sono inviati in chiaro; per approfondire e implementare un’altro tipo di autenticazione leggere la documentazione ufficiale di squid. Da notare che si possono specificare più metodi in comune e verranno considerati dal client in ordine di sicurezza dalla più alta a quella base.

Installazione Squid tramite rpm

Il proxy server è uno strumento che permette di condividere tra più client un singolo accesso ad Internet, gestendo una cache delle informazioni precedentemente scaricate che consente di risparmiare banda e velocizzare la navigazione.
SQUID è un software che ci permette di implementare un proxy server sulla nostra rete interna senza grandi difficoltà e con ottimi risultati.

SQUID supporta oltre al protocollo HTTP anche FTP, Gopher, SSL e altri protocolli Internet.

L’installazione più semplice avviene tramite RPM, addirittura in molti casi l’installazione avviene direttamente dall’installazione della nostra distribuzione Linux. Per sapere se Squid è già installato sul nostro sistema è possibile verificarlo con il classico comando:
rpm -q squid
Se squid è già installato procedere con lo scaricamento dell’ultima release stabile per la propria distribuzione linux ed eseguire:
rpm -U squid-2.x.x-xx.i386.rpm
Nel caso non sia già installato eseguire invece il comando:
rpm -iv squid-2.x.x-xx.i386.rpm

A questo punto SQUID sarà installato nel nostro sistema ed avviabile tramite il comando /etc/init.d/squid start. Il primo avvio potrebbe impiegare un pò di tempo in quanto dovrà settare la cache in /var/spool/squid. Con il file di configurazione di default il servizio dovrebbe risultare da subito avviabile senza particolari interventi sulla configurazione e restare in ascolto sulla porta di default 3128.
E’ probabile che a questo punto sia comunque necessario configurare squid per permettere di essere utilizzato dai client abilitati. Intervenire su /etc/squid/squid.conf (sempre ben commentato) per il tuning della configurazione.

Share

Tips Linux e Microsoft

Samba configurazione in Ubuntu Linux

29 aprile 2009

Samba

Esistono due sistemi di condivisione molto utilizzati:

  • Samba: il sistema compatibile con le condivisioni di Windows
  • NFS: il sistema storicamente usato su Unix e Linux

Per comodità e più possibilità utilizzeremo il servizio Samba: ci consentirà infatti di utilizzare le nostre condivisioni anche su sistemi Windows oltre che Linux.

Avviare Cartelle condivise

La loro configurazione iniziale è estremamente semplice: aprendo il menu Sistema, all’interno della cartella Amministrazione troviamo Cartelle condivise.

Se non abbiamo mai installato né Samba né NFS ci sarà richiesto di installare almeno uno dei due. Come abbiamo detto preferiremo Samba, per cui toglieremo la spunta su Installare il supporto a reti Unix (NFS), lasceremo soltanto il secondo e cliccheremo su Installazione servizi.

I servizi di condivisione non sono installati Scaricamento file dei pacchetti

Verrà avviata automaticamente la procedura per lo scaricamento e l’installazione dei pacchetti. Al termine della procedura torneremo alla finestra di gestione delle condivisioni.

Cartelle condivise Proprietà generali

La finestra è divisa in due schede: la prima chiamata Cartelle condivise mostra le cartelle già condivise mentre la seconda Proprietà generali consente di cambiare il nome del gruppo di lavoro. Quello predefinito è MSHOME.

Cliccando su Aggiungi sarà possibile aggiungere una nuova condivisione: dovremo soltanto scegliere la cartella da condividere, il protocollo (Rete di tipo Windows), il nome da assegnare alla condivisione, un eventuale commento e decidere se la cartella sarà di sola lettura o sarà permessa anche la scrittura. Quest’ultima regola sarà poi sottoposta agli eventuali permessi, ma una condivisione in sola lettura non sarà mai modificabile anche se l’utente è autorizzato alla scrittura.

Condividi cartella paperotto Condividi cartella Examples

Per il nostro scopo aggiungeremo due condivisioni: la cartella home dell’utente paperotto e la cartella Examples dentro la home dell’utente. Quest’ultima sarà segnata come Sola lettura.

Cartelle condiviseConfermato l’inserimento delle due cartelle la finestra delle cartelle condivise ce le mostrerà entrambe. Naturalmente possiamo in ogni momento eliminarle o modificarle.

Fatto ciò il passaggio è quasi completato. Le cartelle sono condivise regolarmente, possiamo già collegarci utilizzando il nome del computer oppure l’indirizzo IP e osservare le condivisioni tramite il menu Risorse, Rete come spiegato su Connettere una condivisione Windows o un sito FTP.

Possono tuttavia capitare alcuni problemi nell’accesso, uno dei quali è dovuto al nome del computer assegnato durante l’installazione. Infatti Ubuntu all’installazione assegna come nome del computer, il nome dell’utente principale seguito da -desktop, ad esempio se l’utente principale è paperotto, il nome del computer sarà paperotto-desktop.

Sebbene questo comportamento può essere modificato in fase di installazione, se è stato assegnato un nome del computer più lungo di 15 caratteri ci saranno problemi nello sfogliare le risorse condivise sia da Windows che da Linux. In una condizione del genere abbiamo due possibilità: la prima è quella di cambiare il nome del computer dalla gestione della rete (network-admin), la seconda invece consiste nel cambiare il nome del computer usato da Samba. Per far ciò è necessario modificare il file smb.conf con questo comando:

gksudo gedit /etc/samba/smb.conf

E inserire all’interno della zona Global:

netbios name = nomecomputer

Nel nostro esempio daremo come nome paperotto, Samba vedrà il computer condiviso con questo nome anziché quello usato dal sistema.

Tramite Linux adesso sarà possibile navigare tra le condivisioni in maniera anonima, senza la necessità di inserire utente e password, ma nella condizione attuale sarà possibile soltanto leggere ma non apportare modifiche ai files o alle cartelle condivise.

Vedremo in seguito come assegnare dei criteri di accesso, come modificare i files delle cartelle condivise e come accedere da sistemi Windows.

Configurazione avanzata di Samba

L’interfaccia guidata per la creazione delle cartelle condivise mediante Samba consente di specificare solo il nome della condivisione, il suo percorso, un commento e lo stato di sola lettura, decisamente troppo poco per poter utilizzare Samba al meglio.

Per configurare tutte le opzioni di Samba è necessario modificare il file di configurazione di Samba, posto su /etc/samba/smb.conf tramite utente root. Per far ciò basterà premere Alt+F2 e scrivere:

gksudo gedit /etc/samba/smb.conf

Le righe che iniziano per “#” o per “;” identificano dei commenti, cioè potremo scriverci qualsiasi cosa, Samba non le considererà parte della configurazione e le ignorerà. Per convenzione si utilizza il simbolo “#” per scriverci testo o spiegazioni mentre il “;” per disabilitare un’istruzione: basta togliere il simbolo all’inizio per utilizzare nuovamente quell’istruzione.

La modalità di accesso predefinita alle condivisioni di Samba è quella definita per utente (user), che cioè richiede l’utilizzo di una coppia utente/password registrata sul sistema in cui si accede. Un’altra modalità di accesso tipica di Samba è quella per condivisione (share) e consente di regolare gli accessi su ogni singola condivisione definendo gli accessi direttamente nelle impostazioni delle singole condivisioni.

Attivando la modalità per condivisione potremo configurare gli accessi per le singole condivisioni anziché restringere l’accesso ai soli utenti registrati nel sistema. All’interno del file smb.conf troveremo una riga security = user (disabilitata). Rimuovendo il “;” e cambiando la modalità di accesso per utente alla modalità per condivisione permetteremo l’accesso al server Samba anche senza l’utilizzo di un utente esistente sul server. Sarà naturalmente nostro compito regolare gli accessi alle singole condivisioni. Modificare la riga security come indicato:

security = share

In fondo al file di configurazione troveremo le condivisioni e le definizioni dei permessi alle stesse. La riga tra parentesi quadre identifica la condivisione e delimita l’inizio delle definizioni per la stessa. Al suo seguito possono esserci alcune delle seguenti istruzioni:

  • path = percorso
    Indica il percorso fisico della cartella condivisa
  • comment = commento alla condivisione
    Identifica il commento alla condivisione, sarà mostrato quando verranno richiesti dettagli sulla condivisione
  • available = yes|no
    Consente di attivare (yes) o disattivare (no) la condivisione
  • browsable = yes|no
    Mostrerà (con yes) o nasconderà (con no) la condivisione sfogliando la rete. Una condivisione nascosta è pienamente funzionale ma chi non ne conosce il nome non potrà accedervi
  • writable = yes|no
    Descrive la possibilità di scrittura all’interno della condivisione. Se impostata a no non sarà consentita alcuna modifica a files o cartelle, anche se il nostro utente o i permessi lo consentono; al contrario yes indicherà che Samba consentirà la modifica del contenuto, a patto che l’utente abbia i permessi necessari
  • read only = yes|no
    Rappresenta l’esatto opposto all’istruzione writable, se viene assegnato yes, la condivisione sarà sempre in sola lettura mentre su no Samba consentirà la modifica del contenuto. Utilizzare a scelta writable o read only
  • guest ok = yes|no
    Consente l’accesso alla condivisione da parte di utenti anonimi. Se ci si connette con un utente autorizzato sarà connesso quell’utente altrimenti si verrà connessi come guest/anonimo
  • public = yes|no
    Sinonimo dell’istruzione guest ok
  • guest account = utente
    Consente di specificare l’utente che verrà usato per le connessioni anonime. Se qualcuno tenta di connettersi alla condivisione e non possiede espliciti accessi verrà collegato come anonimo e svolgerà le operazioni con l’utente indicato in questa istruzione. Generalmente viene utilizzato l’utente nobody
  • guest only = yes|no
    Forza l’utilizzo dell’utente anonimo anche se chi accede possiede una connessione con un utente autorizzato. Richiede la presenza di guest ok = yes
  • valid users = elenco utenti
    Permette di specificare un esplicito elenco di utenti che potranno accedere alla condivisione
  • invalid users = elenco utenti
    Consente di specificare un esplicito elenco di utenti ai quali sarà sempre vietato di accedere alla condivisione
  • force user = utente
    Forza l’utilizzo di un particolare utente per le operazioni sui files e cartelle. Non riguarda in alcun modo l’autenticazione che richiede comunque un utente autorizzato o che sia abilitato l’accesso anonimo
  • force group = gruppo
    Forza l’utilizzo di un particolare gruppo per le operazioni sui files e cartelle

Le seguenti istruzioni possono essere usate solo quando la modalità security non è impostata su share ma ad esempio su user:

  • admin users = elenco utenti
    Specifica un elenco di utenti che potranno accedere alla condivisione come se fossero root, superando qualsiasi limitazione imposta sia da Samba che dai permessi su files e cartelle. Da usare con estrema cautela.
  • read list = elenco utenti
    Consente di specificare un elenco di utenti che avranno comunque accesso in sola lettura anche se per la condivisione è stato specificato writable = yes (o read only = no)
  • write list = elenco utenti
    Consente di specificare un elenco di utenti con possibilità di scrittura anche se la condivisione è impostata in sola lettura
  • map to guest = Bad User|Bad Password
    Trasforma in anonimi gli utenti che forniscono utenti inesistenti (Bad User) o password errate (Bad Password). Questa impostazione consente di utilizzare l’accesso anonimo anche con la modalità security su user

Dove è richiesto l’inserimento di un elenco utenti è possibile specificare uno o più utenti separati da spazio. Gli utenti possono essere sia quelli che accedono al sistema sia utenti creati appositamente per Samba. Oltre agli utenti possono essere indicati anche nomi di gruppi di utenti semplicemente anteponendo @ al nome del gruppo.

Molte delle istruzioni qui presentate possono essere inserite nella sezione [global] del file di configurazione e saranno valide per tutte le condivisioni che non specifichino in maniera differente. Per impostazione predefinita ad esempio il gruppo di utenti non validi (invalid users) contiene l’utente root, anche se non specificato all’interno delle singole condivisioni.

Le condivisioni create con la configurazione delle condivisioni sono generate come segue:

[paperotto]
path = /home/paperotto
comment = Cartella Home di paperotto
available = yes
browsable = yes
public = yes
writable = yes

[Examples]
path = /home/paperotto/Examples
comment = Cartella Examples in sola lettura
available = yes
browsable = yes
public = yes
writable = no

Possiamo quindi notare che sono generate abilitate, visibili nella rete, con accesso anonimo abilitato e a seconda della scelta in sola lettura o meno. Non sono presentati permessi di alcun genere, né limitazioni esplicite. Gli utenti anonimi opereranno con l’utente nobody, per cui nel caso volessimo conceder loro permessi di scrittura dovremmo assicurarci che la cartella condivisa abbia i permessi per l’utente nobody.

Dopo aver apportato modifiche al file di configurazione è necessario far ricaricare a Samba il file tramite il comando da terminale:

sudo /etc/init.d/samba reload

La man page di smb.conf spiega bene i differenti parametri ammessi. Infine una guida in inglese completa a Samba e alla sua configurazione è disponibile sul sito di Samba.

Condividere una cartella con Samba su Ubuntu 8.04

Ne avevamo già parlato in passato, su Ubuntu 7.10 la condivisione delle cartelle richiedeva giusto un paio di click, sempre che non si verificassero problemi col nome del computer. Poi se gli utenti che accedono fanno parte di una rete Windows il discorso si complica un po’, rischiando infine di dover effettuare una configurazione avanzata di Samba.

Su Ubuntu 8.04 questa storia non si ripete, la condivisione delle cartelle con Samba e con Windows è diventata davvero semplice.

Il vecchio pannello di configurazione di Samba (shares-admin) è stato nascosto dai menu, perché ormai inutile per una semplice condivisione di cartelle. Basterà un click col tasto destro sopra una cartella e scegliere Opzioni di condivisione.

Sarà presentata una finestrella sintetica inizialmente senza la spunta su Condividere questa cartella. Basterà cliccare sulla spunta per consentire alla condivisione della cartella.

Se non era stato installato in precedenza il servizio Samba verrà richiesto di installarlo, cliccando sul pulsante Installa servizio. Quando richiesto immettere la propria password per avviare l’installazione.

L’installazione del servizio Samba procederà automaticamente, basterà premere Chiudi al termine dell’installazione. A questo punto della procedura, anche se non indicato si raccomanda di disconnettere il proprio utente dal menu Sistema – Esci – Termina sessione, quindi accedere nuovamente e riavviare la condivisione, per consentire l’applicazione dei permessi al proprio utente.

Al termine dell’installazione si tornerà automaticamente alla finestra della condivisione, la prima spunta consente la condivisione normale mediante utenti registrati sul sistema, ovvero soltanto chi possiede un utente e la relativa parola d’ordine potrà accedere alla condivisione.

La seconda spunta Consentire ad altre persone di scrivere in questa cartella regola la possibilità di far apportare modifiche all’interno della cartella, senza la quale avremmo una condivisione in sola lettura.

L’ultima spunta Accesso ospite consente anche ad utenti anonimi, senza un proprio utente sul sistema, di accedere alla cartella, impersonando l’utente nobody. Ciò significa che chiunque potrà accedere alla condivisione, leggere i files condivisi e apportare modifiche se è stato scelto di consentire la scrittura.

Cliccare Crea condivisione per confermare i dati immessi e controllare i permessi della cartella, se compatibili con quelli qui scelti.

Se è stato scelto di consentire l’accesso agli utenti anonimi sarà necessario reimpostare i permessi alla cartella e la finestra successiva consentirà di farlo automaticamente.

Fatto ciò la condivisione è terminata, è possibile provare sin da subito a connettersi alla condivisione Samba tramite Ubuntu oppure con Windows.


Qualora si presentasse la seguente situazione in cui si illumina di rosso il nome della condivisione e in fondo è mostrato il messaggio di errore “net usershare” ha restituito l’errore 255: net usershare: cannot open usershare directory /var/lib/samba/usershares. Error Permesso negato nessuna paura.

Se non si è riavviata la sessione dopo l’installazione di Samba, procedere al riavvio e ritentare l’operazione, quasi sicuramente l’errore andrà via, il nostro utente ha guadagnato il permesso al gruppo sambashare ma senza riavvio della sessione, non ne potrà godere.

Qualora anche dopo il riavvio venisse mostrato lo stesso errore è necessario intervenire sul gruppo degli utenti sambashare.

Avviare la gestione dei gruppi di utenti dal menu Sistema – Amministrazione – Utenti e gruppi (consultare l’articolo sulla configurazione dei gruppi in caso di dubbi), cliccare il pulsante Sblocca per consentire le modifiche ai permessi e quindi su Gestisci gruppi.

Cliccare sul gruppo sambashare e quindi sul pulsante Proprietà. Nella finestra mostrata immettere la spunta sopra il nostro utente, nella figura paperotto. Confermare il tutto con OK, chiudere tutto, disconnettere la sessione e rilanciare la condivisione.


Per chi si chiedesse che fine ha fatto la vecchia finestra di amministrazione delle condivisioni, è ancora presente, richiamabile con ALT+F2 e scrivendo il comando shares-admin. Tuttavia col nuovo metodo di condivisione di Samba, le singole cartelle condivise mediante Nautilus non saranno visibili; sarà invece possibile cambiare il nome del gruppo di lavoro e decidere quali utenti potranno accedere con Samba.

Il file /etc/samba/smb.conf non conterrà le condivisioni create mediante Nautilus. Le nuove condivisioni potranno trovarsi su /var/lib/samba/usershares dove ogni file identificherà una condivisione personale.

Share

Tips Linux e Microsoft

Connettersi da Ubuntu a Windows via RDP

29 aprile 2009

Avendo attivato su un sistema Windows il Desktop remoto che consente ad altri utenti di connettersi e manovrare il sistema, su Ubuntu mediante il Client per terminal server è possibile connettersi ad un sistema RDP quale il Desktop remoto di Windows.

Il suo utilizzo è molto semplice, dal menu Applicazioni aprire il gruppo Internet e scegliere il Client per terminal server.

La finestra iniziale si presenta come nell’immagine sotto, suddivisa in 5 schede. La principale è la scheda Generale che consente di specificare le informazioni di collegamento al sistema in ascolto.

L’indirizzo del Computer server è l’unico dato necessario per potersi connettere: potrà essere indicato il nome di un host registrato oppure il suo indirizzo IP. La casella di scelta protocollo consente di scegliere il protocollo per il collegamento: se il server in ascolto è un Windows 2000 Server è necessario scegliere il protocollo RDP, altrimenti con Windows XP/2003/Vista e successivi è possibile utilizzare il protocollo RDP5.

Nome utente, Password e Dominio sono i corrispondenti dati di accesso al sistema Windows, specificandoli qui non sarà presentata la finestra di accesso di Windows, altrimenti verranno richiesti dopo il collegamento.

Il campo Nome host del client sarà il nome con cui Windows riconoscerà il sistema dell’utente collegato, generalmente non è necessario e sarà assunto il nome del sistema.

I tre pulsanti in basso consentiranno rispettivamente di avviare una sessione salvata in precedenza, di aprire il file di una sessione per la modifica e di salvare le informazioni indicate per il successivo richiamo.

La scheda Schermo consente di decidere la risoluzione grafica mentre la scheda Risorse locali consente di specificare il funzionamento dell’audio, se dovrà essere eseguito sul sistema locale, su quello remoto o non riprodotto. Potrà anche essere scelta la mappatura della tastiera da utilizzare su Windows. La spunta in basso Add my local drive to the remote computer consente di rendere visibile il file system al sistema di destinazione.

La scheda Programmi fornisce la possibilità di avviare automaticamente un programma al collegamento, anziché presentare subito il desktop di Windows. Può rendersi utile per postazioni di lavoro dove si usa principalmente un solo programma. L’ultima scheda Prestazioni consente piccole messe a punto quali abilitare la cache delle immagini, limitare i movimenti di moto oppure l’ultima opzione Collegarsi alla console consente di non avviare una nuova sessione di desktop remoto su Windows ma sfruttare quella principale, connessa al monitor. Si rende utile su sistemi Windows 2003 che generalmente avviano nuove connessioni lasciando comunque connessa la console.

Quella indicata sopra è un esempio di configurazione per l’accesso ad un sistema con Windows XP/2003 che usa il protocollo RDP5 e l’utente Administrator. Cliccando infine su Connetti sarà stabilito il collegamento con il server Windows.

Qualora non fossero state indicate le informazioni di collegamento verranno richiesti utente e  password di Windows.

Avendo specificato Ubuntu Hardy su Nome host del client, questo sarà visibile sul Task Manager alla scheda Utenti.

Inoltre specificando la spunta di aggiungere il file system locale sulla scheda Risorse locali, sarà aggiunta un’unità a Windows, utilizzabile normalmente sia in lettura che scrittura, naturalmente nel rispetto delle autorizzazioni all’utente Linux che si connette. L’unica eccezione è che non sarà assegnata una lettera all’unità ma è il normale comportamento di RDP.

Ciò consentirà il completo utilizzo del sistema Windows a cui si connette e lo scambio dei files in maniera bidirezionale.

Share

Tips Linux e Microsoft

Come configurare un server VPN PPTP con Ubuntu Linux

29 aprile 2009

Connessione VPN

Partiamo dunque:

sudo apt-get install pptpd bcrelay

Il servizio sarà già attivo e funzionante… non rimane che dargli qualche piccola limatura, creare gli utenti e abilitare la porta sul router.

Sul router adsl, o firewall aziendale è necessario che la porta TCP 1723 sia aperta sull’ip del server linux con le funzionalità di PPTP Server.

Fatto questo siamo raggiungibili dall’esterno, pertanto dobbiamo creare gli utenti per la connessione.

Bisogna quindi modificare il file /etc/ppp/chap-secrets tramite terminale oppure utilizzando l’interfaccia grafica webmin che ha un modulo per il pptp.

La struttura del file è semplice e chiara:

“NomeUtente” nometunnel “Password” *

oppure in caso di utenti di dominio

“DOMINIO\\Nome Utente” NomeTunnel “Password” *

Se non c’e’ dominio consiglio di utilizzare la prima sintassi.

Il nome del tunnel predefinito per il servizio è pptpd quindi une esempio potrebbe essere:

“Pippo” pptpd “PasswordDiPippo” *

Riavviamo il servizio:

/etc/init.d/pptpd restart

Prima di testare la connessione, è necessario capire se ma macchina Linux ha attivato l’IP

FORWARDING, altrimenti il client remoto sarà in grado solamente di raggiungere le risorse sul server e non gli altri pc della rete.

Per verificare se IP Forwarding è abilitato:

cat /proc/sys/net/ipv4/ip_forward

Se risponde 0 vuol dire che non è abilitato. Se invece risponde 1 possiamo proseguire allegramente

Per settare definitivamente l’impostazione :

gksudo /etc/sysctl.conf

e impostiamo la riga in questione così:

net.ipv4.ip_forward = 1

Per abilitarlo già da subito, senza riavviare, andiamo a forzare l’impostazione sul kernel in esecuzione:

echo “1” > /proc/sys/net/ipv4/ip_forward

A questo punto, se proviamo a collegarci con Windows vedremo che si collegherà correttamente,

solamente che non sarà più possibile navigare, questo perché il server pptpd (su Ubuntu per lo meno) non va a impostare un default gateway per la connessione remota.

Dal canto suo, il comportamento predefinito della connessione VPN di Windows è quello di aspettare il nuovo gateway dal Server PPTPD;

quindi l’utente remoto potrà raggiungere le risorse sul server ma non saprà come raggiungere qualsiasi altro indirizzo in internet.

Abbiamo quindi 2 opzioni:

Impostare la connessione di Windows affinché non utilizzi il gateway del server remoto, ma utilizzi quello solito di windows

1. Impostare la connessione di Windows affinché non utilizzi il gateway del server remoto, ma utilizzi quello solito di windows

2. Impostare il server affinché dia il default 2. gateway e i dns per la navigazione

Per il primo caso, basta andare a modificare le impostazioni IPv4 della connessioni sul singolo client remoto, quindi su avanzate -> togliere la spunta su “usa gateway predefinito sulla rete remota”.

Riavviando la connessione tutto funzionerà a dovere.

Per il secondo caso andiamo a modificare il file /etc/ppp/pptpd-options e commentiamo nodefaultroute in questo modo

#nodefaultroute

inotre impostiamo i dns che verranno passati al client remoto; in questo caso imposto quelli di Telecom, ma potrebbero essere anche di un dns interno alla rete di casa/ufficio.

ms-dns 212.216.112.112.

ms-dns 151.99.0.100

Di default PPTPD, per ogni connessione stabilità, creerà una nuova interfaccia pppX con indirizzo IP 192.168.0.xxx mentre i client che si connetteranno riceveranno indirizzo IP 192.168.1.xxx e le due interfacce potranno comunicare tranquillamente tra loro.

Tuttavia questa configurazione di IP spesso va a cozzare con gli indirizzi già esistenti nella rete locale. E’ possibile modificarli per assegnare quelli da noi desiderati, semplicemente con:

gksudo gedit /etc/pptpd.conf

Se la vostra rete ha indirizzo 192.168.1.0 vi consiglio di trovare una decina di indirizzi ip statici contigui che non sono gestiti dal DHCP Server. ad esempio da 192.168.1.150 a 192.168.1.160.

E aggiungere in fondo al file:

localip 192.168.1.150

remoteip 192.168.1.151-160

Questo forzerà il server PPTPD a utilizzare per ogni client un indirizzo IP compreso tra 192.168.1.151 e 192.168.1.160, mentre sul server per ogni connessione sarà costituita un’interfaccia pppX con IP fisso 192.168.1.150.

In questo modo tutti quanti i client nella stessa rete potranno comunicare direttamente, siano essi interni siano essi esterni. Naturalmente tutte le informazioni in transito saranno crittografate.

Alla fine delle modifiche ricordiamoci di riavviare il servizio pptpd con:

sudo /etc/init.d/pptpd restart

Share

Tips Linux e Microsoft

La TV via WEB

29 aprile 2009

Desiderate stare seduti davanti al pc e seguire via internet una trasmissione TV?

Allora LiveStation fa per voi.

LiveStation è finalmente uscita dal periodo a inviti ed è ora disponibile gratuitamente al download.

In linea teorica è possibile vedere con LiveStation 1275 canali gratuiti.
I più importanti comunque sono:
CNN, BBC, NBC News, Bloomberg e EuroNews.

Per l’italia troviamo:

All Music
Rai Uno
Rai DUE

Share

Documenti Tecnici

Video tutorial: “Crakkare una chiave WPA-PSK ”

29 aprile 2009

Fonte:   http://www.mambro.it/

In questo video viene fatta una dimostrazione sull’uso della AirCrack suite (potete scaricarla da .::Qui::.
) per mostrarvi quanto sia semplice  crakkare una chiave WPA-PSK con un
attacco di tipo “forzabruta” o “dizionario”. Un buon metodo è quello
di precalcolare l’attacco usando le rainbow tables ma dovrete
costruirle in base ad uno specifico SSIDs. Il tempo che servirà
affinche l’attacco compia il suo dovere dipende dalla lunghezza della
chiave, specialmente se usate il metodo bruteforce.

Quindi la cosa importante è sempre impostare password lunghe e complesse (intendo con punteggiatura asterischi parentesi)

Guarda il video

Share

Documenti Tecnici

Come recuperare le password di rete WI-FI

29 aprile 2009

Vi è mai capitato di impostare una password su un access point e dopo tempo non ricordarla?

Ecco un programmino che permette di recuperare questa password.

WirelessKeyView è un programma gratuito solo per Windows che permette di trovare le password di rete wi-fi registrate sul vostro pc.
Puo capitare a volte di dimenticare la pass di accesso ad una rete wi-fi.
Basterà lanciare questo programma e vi verranno mostrate tutte le password immesse in precedenza.

Attenzione: questo programma non serve a craccare reti ma solo a recuperare le vostre password.

Link per scaricare l’utility:   http://www.nirsoft.net/utils/wireless_key.html

Share

Tips Linux e Microsoft

Come recuperare password pop3,imap,http,smtp

29 aprile 2009

Mi capita spesso di dover spostare account di posta da un pc all’altro e l’utente che ha creato queste configurazioni si è dimenticato utente e password, oppure non le ha conservate.

Ecco un programmino che permette di recuperare facilmente queste configurazioni.

Mail PassView rivela le passwords e altri dettagli degli accounts per i seguenti client di posta elettronica:

* Outlook Express
* Microsoft Outlook 2000 (solo account POP3 e SMTP)
* Microsoft Outlook 2002/2003/2007 (POP3, IMAP, HTTP and SMTP)
* Windows Mail
* IncrediMail
* Eudora
* Netscape 6.x/7.x
* Mozilla Thunderbird
* Group Mail Free
* Yahoo! Mail – se la password è salvata nel programma
* Hotmail/MSN mail – se la password è salvata nel programma
* Gmail – se la password è salvata nel programma Gmail Notifier application, Google Desktop, o in Google Talk.

Per ogni accounts, mostra i seguenti campi: Account Name, Application, Email, Server, Server Type (POP3/IMAP/SMTP), User Name, e la Password.

Link per scaricare l’utility:      http://www.nirsoft.net/

Share

Tips Linux e Microsoft

Come eliminare le limitazioni dei PDF

29 aprile 2009


Nei documenti in formato PDF possono essere usati due tipi di password: il primo tipo consente di inibire l’accesso ad alcune funzioni come il copia e incolla, il secondo invece blocca l’apertura del file per la lettura. PDF Unlocker permette di aggirare entrambi i tipi di protezione per mezzo di un semplice clic del mouse: l’installazione del software posiziona infatti un collegamento sul desktop, e per sproteggere il documento in PDF è sufficiente trascinare quest’ultimo su tale collegamento.

Link per scaricare l’utility:  http://www.pdf-unlocker.com/

Share

Tips Linux e Microsoft

Backup della posta outlook express

29 aprile 2009
Penso che molti di noi si sono trovati, almeno una volta, nella necessità di formattare l’hd, a causa di un virus o di qualche problema che impediva il funzionamento di Windows. La formattazione per qualcuno può essere un’esperienza dolorosa, perchè, se non abbiamo preventivamente pensato di fare una copia dei nostri file, corriamo il rischio di perdere tutti i dati, le immagini, le foto, i documenti e soprattutto tutta la posta elettronica e i contatti della rubrica .
In questo post spiegherò come effettuare un backup dei messaggi di posta elettronica e di tutti gli indirizzi memorizzati nella rubrica.
Ma dove si trovano tutte le cartelle della posta? E la rubrica? Prima di iniziare a cercare, dovete rendere visibili le cartelle nascoste. La procedura è stata descritta nel post che riguardava il virus della chiavetta.
Backup e ripristino dei messaggi di posta (OutlookExpress).
Aprite in sequenza le seguenti cartelle, partendo da Risorse del computer.
C \Documents and Settings\nome_utente\Impostazioni locali\Dati Applicazioni\Identities\{E00CD3EB-7A72-4D9B-9E03-4E5AFC65EF7B\Microsoft\Outlook Express .
In quest’ultima cartella c’è tutta la vostra posta. Noterete che i file hanno estensione dbx. Sono gli archivi compressi delle cartelle di OutlookExpress. Copiateli tutti in un supporto esterno, (una pen drive o un CD-RW) e di tanto in tanto aggiornateli. Se per un motivo qualsiasi il vostro pc un giorno non ne vuol sapere di partire, la vostra corrispondenza è salva. Per ripristinarla dopo aver formattato, fate così:
Aprite OutlookExpress, cliccate nell’ordine:
File\Importa\Messaggi\MicrosoftOutlookExpress6\Avanti\Importa messaggi da una directory di archiviazione\Ok\Sfoglia. Andate sul supporto dove avete salvato gli archivi. Tutto verrà “travasato” al suo posto.
Backup e ripristino della rubrica.
La rubrica la trovate seguendo il seguente percorso partendo da Risorse del Computer.
C\Documents and Settings\nome_utente\Dati Applicazioni\Microsoft\Address Book .
Aprite quest’ultima cartella, troverete il file nome_utente.wab (ha la forma di un libretto aperto). Quella è la rubrica. Salvatela sulla chiavetta.
Per ripristinarla dopo la formattazione fate così:
aprite OutlookExpress e cliccate nell’ordine:
File\Importa\Rubrica. Seguite la stessa procedura usata per i messaggi e come per magia tutti i contatti saranno reinseriti nella rubrica.

In alternativa propongo l’utilizzo di un software che trovate a questo link:
http://www.amictools.com/v-amic_email_backup.html
Disponibile in una versione di prova funzionate per 15 giorni, Amic Email Backup consente infatti di salvare in una copia di sicurezza, detta backup, le e-mail ricevute ed inviate dei maggiori programmi di posta elettronica, fra cui Microsoft Outlook, Outlook Express, Mozilla Thunderbird ed IncrediMail, e di ripristinarle facilmente quando serve.
Share

Tips Linux e Microsoft