# Filtro antivirus sul gateway?

## federico

Ho dato un occhio sul forum ma non ho trovato nulla a riguardo e in giro non ho mai letto di tali programmi... Mi domandavo come fanno alcuni aparecchi router hardware a fare un filtro antivirus direttamente sul gateway prima che il flusso dati arrivi ai client ... E' possibile farlo con linux ?

----------

## xchris

devi lavorare a livello di applicazione.

Quindi con un proxy accoppiato ad un filtro: (ad es per il web)

squid

squidguard

oppure ma non e' molto praticabile attraverso iptables string.

(va bene quando vuoi bloccare una particolare e ben nota stringa)

ciao

----------

## dboogieman

Ciao queste soluzioni di antivirus gateway (cosi li definiscono) solitamente funzionano cosi:

-disponendo il gateway di un IP pubblico, lo stesso viene dichiarato a DNS come MX primario del dominio che si deve depuare, prima di consegnare la posta al reale mail server.

-cosi facendo la posta spedita al MX ed in giacenza sul MX, viene depurata dal daemon responsabile.

-la stessa macchina depuratrice poi, mediante SMTP spedisci i messaggi depurati al mail server.

-per finire i client fanno POP3 al mail server che dovrebbe consegnare cosi', posta pulita.

Ho Visto che implementano altri sistemi con logiche differenti, questa e' una di quelle, con Linux io mi sono sempre trovato bene con amavis oppure clamav.

Spero possa esserti utile.

Ciao

dboogieman

----------

## FonderiaDigitale

porta 80 ->> iptables REDIRECT porta arbitraria (es. 81) --> tproxy/transproxy (ovvero un transparent proxy) --> porta 8080 DansGuardian  + antivirus patch ---> porta 3128 Squid che ritorna la pagina pulita coi risultati

cosi i client non si accorgono neanche che c'e' un proxy ( a parte il delay del tempo necessario a processare le richieste.. ma dipende dall'hardware, specie del disco fisso)

----------

## federico

 *FonderiaDigitale wrote:*   

> porta 80 ->> iptables REDIRECT porta arbitraria (es. 81) --> tproxy/transproxy (ovvero un transparent proxy) --> porta 8080 DansGuardian  + antivirus patch ---> porta 3128 Squid che ritorna la pagina pulita coi risultati
> 
> cosi i client non si accorgono neanche che c'e' un proxy ( a parte il delay del tempo necessario a processare le richieste.. ma dipende dall'hardware, specie del disco fisso)

 

In entrata da internet verso la rete devo mettere quindi che tutto il traffico passa sulla 81 sulla quale c'e' un proxy trasparente che ridirige a sua volta sulla 8080 (a sto punto non potevo ridirigere direttamente sulla 8080 saltando la 81?) e poi sulla 8080 c'e' sto DansGuard e antivirus che spara i risultati sulla 3128 dove c'e' squid immagino.

In uscita dalla rete verso internet devo fare che tutto il traffico sulla 80 passi sulla 3128 per filtrare le ricerche via squid ... (Ho visto ora la pagina di dansguardian e fa anche quello che mi servirebbe fare, ovvero che non siano visibili i siti coi pornazzi, ma non capisco tutto questo giro di porte)

Una roba del gere?

EDIT:

Ho fatto due prove e noto che se il client in uscita verso internet lo setto sulla 8080 di dansguardian mi filtra bene anche i risultati pornografici (altro obiettivo che devo raggiungere) ma in questo modo sto saltando squid oppure devo utilizzare la porta 8080 e se trova squid sulla 3128 la utilizza lui in automatico?

----------

## federico

Alt... sto incasinando tutto  :Smile: 

Lasciamo perdere il concetto di entrata e di uscita  :Smile: 

Valutato che dansguard senza squid non funziona molto e valutato che un prerouting della 80 direttamente sulla 8080 mi manda a pallino la rete, dovrebbe essere corretta una cosa di questo tipo

la porta 80 va in nat prerouting sulla 81 

```

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 81

```

dove troviamo un proxy trasparente che passa la palla alla porta 8080 dove risiede dansguard che assieme a squid sulla 3128 elaborano i pacchetti e tutto il sistema funziona, giusto?

Non ho trovato un proxy trasparente  :Sad:  E non sono sicuro neanche che sia corretta questa iterpretazione del tutto ...

EDIT:

Ho provato inoltre la soluzione

```

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

```

Ma imballa tutta la rete e squid mi dice che tutti gli indirizzi sono malformati e blocca tutto...

----------

## FonderiaDigitale

 *federico wrote:*   

> 
> 
> In entrata da internet verso la rete devo mettere quindi che tutto il traffico passa sulla 81 sulla quale c'e' un proxy trasparente che ridirige a sua volta sulla 8080 (a sto punto non potevo ridirigere direttamente sulla 8080 saltando la 81?) e poi sulla 8080 c'e' sto DansGuard e antivirus che spara i risultati sulla 3128 dove c'e' squid immagino.

 

si ma non lo puoi fare direttamente, la richiesta deve essere riscritta. hai bisogno di transproxy (non e' in portage)

 *Quote:*   

> 
> 
> In uscita dalla rete verso internet devo fare che tutto il traffico sulla 80 passi sulla 3128 per filtrare le ricerche via squid ... (Ho visto ora la pagina di dansguardian e fa anche quello che mi servirebbe fare, ovvero che non siano visibili i siti coi pornazzi, ma non capisco tutto questo giro di porte)
> 
> 

 

2 righe di iptables, 1 per fuori una per dentro

 *Quote:*   

> 
> 
> EDIT:
> 
> Ho fatto due prove e noto che se il client in uscita verso internet lo setto sulla 8080 di dansguardian mi filtra bene anche i risultati pornografici (altro obiettivo che devo raggiungere) ma in questo modo sto saltando squid oppure devo utilizzare la porta 8080 e se trova squid sulla 3128 la utilizza lui in automatico?

 

esatto

----------

## federico

Seguendo questo link (oltre al thread  :Smile:  )

http://www.google.it/search?q=cache:x8KBdUKKEvMJ:www.linux-tip.net/cms/images/stories/documents/transparent_proxy_mdk92.pdf+iptables+transproxy&hl=it&client=firefox

passatomi da fonderia sono riuscito ad attivare il filtro "parole indesiderabili" (o quasi, alcune parole non me le becca ma vedro' con calma come mai), appena riesco vedo se trovo la patch antivirus (o quello che dovrebbe essere, manco di documentazione) per dansguardian e vi faccio sapere  :Smile: 

----------

## FonderiaDigitale

glad to be of service..  :Wink: 

----------

## croot

ma qual'è il vantaggio di usare transproxy ?

----------

## FonderiaDigitale

non e' un vantaggio: e' necessario.

squid ha supporto nativo per funzionare come transparent proxy: peccato che le richieste passino PRIMA per dansguardian, che non lo ha; e' ncessario quindi riscrivere l'header della richiesta HTTP del pacchetto. questo fa transproxy.

----------

## xchris

ahem..

ma io sto facendo esattamente: redirect 80 -> local:8080 -> squid -> out

senza transproxy!

e l'howto che ho letto conferma la cosa.

(transproxy serve se la macchina che ha dansguardian non e' quella di squid....non ho approfondito...)

cmq.. sto postando attraverso sto giro di pacchetti  :Smile: 

non dite se(x) por(n) altrimenti non leggo  :Laughing: 

----------

## FonderiaDigitale

postaci come hai fatto allora

----------

## xchris

http://users.gurulink.com/drk/transproxy/TransparentProxy.html

per squid ho letto un po' la config base indicata. (4,5 param)

per dansguardian non ho toccato nulla. (non e' cmq quella con patch)

e il redirect e' il solito 80>8080>3128

ciao

----------

## FonderiaDigitale

secondo quell'howto non passi per dansguardian

inoltre, passando PRIMA da dansguardian, quando arrivi a squid e' gia filtrato il traffico "sporco" senza sovraccaricare ulteriori risorse

----------

## xchris

quel doc e' solo per indicare i parametri di squid.

Ti confermo che passo prima da dansguardian poi da squid...

tutto in modo trasparente.

mi sfugge qc?

ciao

```

Chain lan_dnat (1 references)

target     prot opt source               destination         

REDIRECT   tcp  --  anywhere             anywhere            tcp dpt:www redir ports 8080 

```

----------

## FonderiaDigitale

non so, probabilmente sfugge a me   :Sad: 

----------

## X-Drum

beeeeeeeelo sto 3d la cosa mi interessa e nn poco

----------

## federico

Sinceramente a me senza transproxy non funzionava, ed ho provato. Sarei curioso di capire l'arcano mistero anche io ^^ . Questo sistema funziona una bomba pero', l'ho implementato in associazione (croceverde) e da allora ho avuto molti meno problemi con schifezze e download (becco un po' di falsi positivi che sto sistemando pian piano).

----------

## xchris

non so che dire....

dopo posto la config di squid e quella di dansguardian.

Squid e' configurato malino perche' era importante solo vederlo andare.

(ACL su 0.0.0.0/0.0.0.0) e filtrato da firewall.

Dansguardian non l'ho propio toccato.

Solo startato.

Cosi' di default dansguardian accetta richieste sulla 8080 e invia sulla 3128.

Con iptables poi (fatto con shorewall) redirigo ogni richiesta sulla 8080.

Niente di +.

Piu' tardi preparo i file di config per fare una prova on the fly.

Inzialmente non mi andava...poi ho messo quelle opzioni scritte nel howto sopra e tutto ha cominciato a girare...

a dopo

ciao

----------

## xchris

ok posto la config.

Occhio perche' e' stata fatta in circa 10 minuti e NON E' SICURA.(avviso per chiunque faccia un copia-incolla)

 *squid.conf wrote:*   

> 
> 
> acl all src 0.0.0.0/0.0.0.0
> 
> acl CONNECT method CONNECT
> ...

 

 *dansguardian.conf wrote:*   

> 
> 
> accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'
> 
> bannedextensionlist = '/etc/dansguardian/bannedextensionlist'
> ...

 

come vedete ho customizzato ben poco.(manco il dominio)

Esiste poi il solito redirect con iptables. 80>8080.

E tutto gira...

----------

## FonderiaDigitale

testero', poi ti faccio sapere cosa ho sortito  :Smile: 

----------

## federico

Attivando queste 4 direttive in squid

```

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

```

come scritto nell'howto indicato da xchris, mi pare che effettivamente tutto funzioni senza transproxy. Qualcuno puo' provare per riconferma? Non sono del tutto sicuro che la mia macchina sia un buon ambiente di test perche' con tutte le modifiche che ci ho messo in mezzo ....

----------

## xchris

ottimo!

potresti postare le tue modifiche per eliminare i falsi positivi?

hai whitelistato i siti o cosa?

ciao

----------

## federico

 *xchris wrote:*   

> ottimo!
> 
> potresti postare le tue modifiche per eliminare i falsi positivi?
> 
> hai whitelistato i siti o cosa?
> ...

 

Dunque, il lavoro e' ancora in corso ed e' un po' complesso perche' accadono cose un po' "pacco", ad esempio connettendosi al sito della repubblica o del corriere della sera spesso le pagine vengono bloccate perche' parlano di disastri o cose del genere... Altre volte invece erano eccessive le parole che dansguardian pesava. In linea di massima sto procedendo sia con una piccola whitelist sia con modifiche direttamente sulle parole pesate italiane per lo piu'. Ho eliminato in particolare dal conto del peso la parola "chat" ed affini perche' appare ormai fin troppo spesso in qualsiasi sito che uno visiti (buono o cattivo che sia), parole come "attenzione,contenuto,foto,materiale,offensivo,webcam" le ho altresi' eliminate perche' di uso molto comune, insomma sto cercando di renderlo meno aggressivo. Inoltre ho alzato la soglia di peso minima da 50 a 70, ora mi pare che vada decisamente meglio.

Per intenderci la configurazione base bloccava siti come libero, virgilio e compagnia.

Ho messo on line i log dei siti visitati/bloccati dal dansguardian attivo da un paio di settimane in croceverde, se qualcuno fosse interessato nel vedere il comportamento di dansguardian nei confronti di un po' di siti (le visite sono molto varie visto che lo usa parecchia gente) puo' darci uno sguardo.

```

wget http://www.sideralis.net/blackman/dansguardianlog.tar.bz2

```

----------

## FonderiaDigitale

se effettivamente tutto funziona senza transproxy e' decisamente meglio, in quanto il meccanismo di per se stesso era abbastanza "accrocchiato", e aveva diversi possibili punti di 'rottura' (ossia troppi programmi in catena che potrebbero essere soggetti a crash e rompere tutto il gingillo).

adesso resta da provare a stressare i due bimbi. esistono programmi di bench? qualcosa tipo apachebench?

----------

## xchris

non saprei...

pero' squid non dovrebbe avere problemi...

dansguardian con la patch magari un po' + problematico potrebbe essere.

ciao

----------

## croot

riposta up questo 3d perchè mi interessa molto.

Vi dico subito che non ho ancora provato dansguardian.

Ma ho provato un redirect per clamav che sembra funzionare.

Quindi nessun bisogno di parent proxy che dovrebbe rendere il tutto più leggero anche se ovviamente manca la filtratura di siti proibiti che fa dansguardian.

Ma se mi interessasse solo l'antivirus dovrebbe essere sufficiente.

Allora il redirect è qui

Semplicissimo da installare: copiate il file .conf dentro /etc/squid, il bin in /usr/local/bin, editate squid.conf inserendo il redirect:

```

redirect_program /usr/local/bin/SquidClamAV_Redirector.py -c /etc/squid/SquidClamAV_Redirector.conf

redirect_children 15

redirector_access deny localhost

```

Riavviate squid.

Qualcuno lo prova e mi dice il suo parere ?

Magari se ha installato dansguardian con antivirus è meglio.

Ciao.

Dimenticavo ovviamente dovete avere già le dipendenze che se non ricordo male sono clamav, python e pyclamav (per interfacciarsi a clamav).

EDIT: avevo dimenticato la terza linea del squid.conf

----------

## federico

Ciao a tutti, ritiro in ballo questo topic perche' e' sorto un problema che non riesco a risolvere, e non so cosa fare.

Ho la necessita' di escludere una macchina dal filtraggio di dansguardian, e ho visto che c'e' un file apposito in dansguardian che si chiama

exceptioniplist

che dovrebbe proprio fare al caso mio anche seguendo la documentazioe. Inserire l'ip nel file e questo ip verra' ignorato da dansguardian.

Il problema e' che la cosa non funziona, scrutando i log sembra che per dansguardian tutte le richieste paiono provenire da localhost, 127.0.0.1 e non dalle macchine di rete, e quindi non puo' distiguerle.

Qualche idea che possa aiutarmi a tirare avanti?

Ciao ragazzi !!!

Federico

----------

## fat_penguin

non puoi escludere l'host da SQUID?

byebye

fat_penguin

----------

## federico

No perche' prima le cose passano da dansguardian, poi da squid...

Io sto utilizzando ancora il metodo transproxy, e' possibile che sia questo che fa vedere tutto come se provenisse dalla macchina 127.0.0.1 ? (nn faccio una prova subito perche' dovrei tentare di dare meno disservizio possibile sul server :/ )

Fede

----------

## federico

Dunque, eliminando transproxy effettivamente adesso dansguardian riconosce gli ip delle macchine quindi dovrebbe funzionare.. Adesso non posso sapere se quella macchina in particolare gode dei privilegi che gli stiamo concedendo perche' si trova in una sala sotto chiave, domani vi faccio sapere!

Federico

----------

## croot

guarda che dal conf di squid puoi settare qualunque genere di policy, anche sul mac address della scheda di rete.

----------

## federico

 *croot wrote:*   

> guarda che dal conf di squid puoi settare qualunque genere di policy, anche sul mac address della scheda di rete.

 

Ok, ma se viene bloccato prima da dansguardian, squid non puo' fare nulla.

----------

## X-Drum

Riuppo questo 3d perche' volevo implementare su una macchina che funge al momento

fa da gateway, un sistema di filtraggio molto semplice.

Sostanzialmente cio' che dovrebbe fare tale sistema:

a)Negare l'accesso a tutti i siti tranne uno o un piccolo insieme.

b)Consentire l'accesso a tutti i siti tranne che ad uno o un piccolo insieme.

c)Nulla, nessuna operazione di content filtering

Dico semplice perche in realtà non mi interessa un sitema che filtri costantemente

il traffico, dato che ho la possibilità di appoggiarmi (ma non toccare e/o modificare la conf) ad un proxy

che risiede su un'altra macchina della stessa rete ben istruito che filtra l'immondizia.

Dovrei quando necessario attivare quel sistema in modalità a o b

per poi ritornare alla modalità c.

(quindi gestirei una sorta di blacklist o una whitelist)

Attualmente il mio gateway accetta le richieste da un interfaccia e le ridireziona verso

quel proxy, c'è la possibilità di creare questo "filtro" senza ricorrere all'accoppiata squid/dansguardian??

----------

## xchris

con delle regole sul firewall non potrebbe andare bene?

eventualmente con qualche scriptozzo ad hoc.

ciao

----------

## X-Drum

 *xchris wrote:*   

> con delle regole sul firewall non potrebbe andare bene?
> 
> eventualmente con qualche scriptozzo ad hoc.
> 
> ciao

 

con iptables? 

del tipo Droppare tutte le richieste www a parte che so io  213.92.16.191 (www.repubblica.it)

per fare un esempio di tipo a  :Razz: 

----------

## xchris

eh tipo...

magari il tutto da un comodo script..

ciao

----------

