cantonada cantonada

Xarxa amb firewall hardware linux dedicat, antivirus i filtre de continguts

 

Inici

Instal·lació

Diferències

ClamAV

DansGuardian + Antivirus

Error Dansguardian

Desactivar USB

Interficie gràfica Dansguardian

Configuració Dansguardian

Evitar la denegació temporalment

per IP

per usuari

IDS (Sistema de detecció d'intrusos) que respongui als atacs : Guardian

Visualitzar la informació de la configuració

Filtre de Correu SMTP: SPAM + Antivirus

Visualitzar les adreces assignades pel servidor DHCP

Augmentar Swapfile

Bloqueig P2P

Bloqueig anuncis

Continuant amb els articles anteriors:

És molt recomanable haver llegit i entés els articles anterior ja que hi ha coses que no explicarem aquí perquè ja van ésser explicades en articles anteriors. Avui utilitzarem la següent topologia:

xarxa

La connexió a Internet es fa per router mitjançant IP estàtica i el router sense fils té un commutador (switch) incorporat.

Primer, utlitzarem un ordinador antic com a tallafocs per a tota la xarxa. Aquest tallafocs serà un Pentium II 233 amb 128 Mb de RAM. A més, instal·larem un filtre de continguts i un antivirus. Aquesta màquina, que utilitzarem exclusivament per això, utilitzarà una distribució GNU/Linux anomenada smoothwall.

Tot això va començar per una sèrie d'articles a kriptopolis on explicaven com muntar-ho tenint ADSL USB i IP dinàmica... tot el contrari que jo tinc.

Bé, el primer pas es descarregar l'smoothwall de la seva pàgina web, gravar-ho i començar el procés d'instal·lació:

www.flickr.com

Penseu però, que totes les dades de l'ordinador on instal·leu l'smootwall desapareixeran!!!

Abans de continuar amb la instal·lació, us recomano que us llegiu l'article de kriptopolis: Construir un firewall

En ell s'explica com prodecir amb la instal·lació. Hi ha però tot un seguit de diferències:

Això no crec que us doni cap tipus de problema. Llavors, un cop fet això, instal·lem el Dansguardian:

Normalment, aquest procés és el que dóna més problemes i errors. Si al fer "dansguardian -N" us dóna l'error:

Un cop fet això, també podem canviar algunes coses. L'editor que utilitzo per editar fitxers és el qeu porta incorporat el WinSCP3 (botó dret sobre el fitxer i edit).

Ja que no utilitzo per a res USB, podem anar a "etc/rc.d/rc.sysinit" i comentar aquestes línies:
echo "Loading USB subsystem"
/sbin/modprobe usbcore 2> /dev/null
/sbin/modprobe usb-uhci 2> /dev/null
/sbin/modprobe usb-ohci 2> /dev/null
mount -t usbdevfs none /proc/bus/usb

Un cop fet això, instal·leu el tauler de control dels dansguardian:

Ara que tenim una forma senzilla d'editar la configuració del filtre de continguts, veiem algunes opcions:

vegades, el filtre de continguts és massa restrictiu, podeu anar a services->content filter->Groups i canviar el "Naughtyness limit", És com un límit de punts que pot tenir una pàgina per si es filtrada. Jo el tinc a 75. Les referències són:

50 is for young children
100 for old children
160 for young adults

 

També vaig activar el Temporary Denied Page bypass i el vaig possar a 300 (5 minuts).
Un cop fet això, a Logging->Reporting level vaig canviar a l'opció 2 que fa que et puguis personalitzar la pàgina de prohibit amb un script en perl.

logging

Això últim, ho vaig fer per poder canviar la pàgina d'error i que si surt en el meu ordinador hi hagi una forma d'esquivar-ho temporalment, ja que en algunes web, la inclusió de publicitat fa que no es permeti la seva visualització.
Per fer això, assignarem una IP estàtica al nostre ordinador utilitzant l'adreça MAC i canviarem les opcions del servidor DHCP per a què no assigni la nostra IP, que en aquest cas serà 192.168.0.200

Si tot això sembla massa complicat, sempre pots possar la teva IP a la llista d'excepcions Ip a services->Content-> "Exception IP list file" feu clic a edit i hi afegiu la vostra IP. Aquesta opció però, és menys interessant...Per cert, (penseu que si no heu fet el pas d'assignar una IP a la vostra MAC, cada cop canviarà la vostra adreça.!!!

Ara doncs passem a fer l'script en perl. El meu està basat en un d'en dr3w2k Trobat als fòrums d'smoothwall.

L'script dansguardian.pl l'heu de posar a home/httpd/cgi-bin. podeu trobar instruccions més concretes per si us surt un error a Dansguardian Acces Denied

La imatge lock.gif que utilitzo és :

La veritat és que no hi ha cap sistema gaire segur per poder utilitzar la funcionalitat d'evitar el denegament d'accés a la web, però tampoc és gaire segur, Hi ha 2 mètodes, els 2 bastant insegurs: El primer és comparar la IP de connexió amb la nostra i si és la mateixa, mostrar un enllaç per poder saltar la protecció:

El codi és el següent:

#!/usr/bin/perl

$allow_html_code = 0;
&ReadEnvs;

$deniedurl = $in{'DENIEDURL'};
$reason = $in{'REASON'};
$user = $in{'USER'};
$ip = $in{'IP'};
$hash = $in{'HASH'};
$ippriv = "192.168.0.200";

print "Content-type: text/html\n\n";
print '<HTML><HEAD><TITLE>DansGuardian - Accés Denegat</TITLE></HEAD>';
print '<BODY>';

if ($ip eq $ippriv) {
print '<CENTER>';
print '<TABLE WIDTH=700 BORDER=0 CELLPADDING=2 CELLSPACING=0><TR>';
print '<TD COLSPAN=2 HEIGHT=100 BGCOLOR=#fea700>';
print '<P ALIGN=CENTER><FONT FACE="arial, helvetica"><FONT SIZE=6><B>Accés denegat!</B> </FONT></FONT></P>';
print '</TD></TR><TR>';
print '<TD COLSPAN=2 HEIGHT=30 BGCOLOR=#fffacd> </TD>';
print '</TR><TR>';
print '<TD WIDTH=150 VALIGN=top align=center BGCOLOR=#b0c4de><img src="http://192.168.0.1:81/ui/assets/3.5/img/lock.gif">';
print '<br><br><br><FONT FACE="arial, helvetica"><b>La teva IP:</b>';
print "<br>$ip";
print '<br><br><br><br><br><br><br><br>';
print '<img src="http://192.168.0.1:81/ui/assets/3.5/img/smoothwall.promo.button.gif">';
print '<br><FONT FACE="arial, helvetica" size=-2>SmoothWall Express 2.0<br>amb DansGuardian i ClamAV</TD>';
print '<TD WIDTH=550 BGCOLOR=#ffffff>';
print "<br><P ALIGN=CENTER><FONT SIZE=4><FONT FACE=\"arial, helvetica\"><FONT COLOR=#000000>Em sap greu $user , però l'accés a:";
print "<BR><BR><A HREF=\"$deniedurl\">$deniedurl</A>";
print '<BR><BR><FONT SIZE=3>... ha estat denegat per aquest motiu:';
print "<BR><br><FONT COLOR=#ff0000><B>$reason</B>";
print "<Br><br><br><a href=\"$deniedurl?GBYPASS=$hash\"><img src=\"http://192.168.0.1:81/ui/assets/3.5/img/on.gif\" border=0></a>";
print '<br><br><br>';
print '</P></TD></TR></TABLE>';
print '</CENTER>';
}
else {
print '<CENTER>';
print '<CENTER>';
print '<TABLE WIDTH=700 BORDER=0 CELLPADDING=2 CELLSPACING=0><TR>';
print '<TD COLSPAN=2 HEIGHT=100 BGCOLOR=#fea700>';
print '<P ALIGN=CENTER><FONT FACE="arial, helvetica"><FONT SIZE=6><B>Accés denegat!!</B> </FONT></FONT></P>';
print '</TD></TR><TR>';
print '<TD COLSPAN=2 HEIGHT=30 BGCOLOR=#fffacd> </TD>';
print '</TR><TR>';
print '<TD WIDTH=150 VALIGN=top align=center BGCOLOR=#b0c4de><img src="http://192.168.0.1:81/ui/assets/3.5/img/lock.gif">';
print '<br><br><br><FONT FACE="arial, helvetica"><b>La teva IP:</b>';
print "<br>$ip";
print '<br><br><br><br><br><br><br><br>';
print '<img src="http://192.168.0.1:81/ui/assets/3.5/img/smoothwall.promo.button.gif">';
print '<br><FONT FACE="arial, helvetica" size=-2>SmoothWall Express 2.0<br>amb DansGuardian i ClamAV</TD>';
print '<TD WIDTH=550 BGCOLOR=#ffffff>';
print "<br><P ALIGN=CENTER><FONT SIZE=4><FONT FACE=\"arial, helvetica\"><FONT COLOR=#000000>Em sap greu $user , però l'accés a:";
print "<BR><BR><A HREF=\"$deniedurl\">$deniedurl</A>";
print '<BR><BR><FONT SIZE=3>... ha estat denegat per aquest motiu:';
print "<BR><br><FONT COLOR=#ff0000><B>$reason</B>";
print '<br><br><br>';
print '</P></TD></TR></TABLE>';
print '</CENTER>';
}
exit;

sub ReadEnvs {
local($cl, @clp, $pair, $name, $value);
if ( $ENV{'REQUEST_METHOD'} eq 'POST' ) {
read(STDIN, $cl, $ENV{'CONTENT_LENGTH'} );
}
else {
$cl = $ENV{'QUERY_STRING'};
}
@clp = split(/::/, $cl);
foreach $pair (@clp) {
($name, $value) = split(/==/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
if ($allow_html_code != 1) {
$value =~ s/<([^>]|\n)*>//g;
}
$in{$name} = $value;
}
}

L'altra forma és instal·lar un dimoni Identd a cada ordinador i llavors fer l'autentificació per usuari, Primer, he instal·lat un dimoni identd per Windows XP També hi ha per Windows 95/98.
Un dimoni Ident retorna el nom d'usuari de l'equip. Bé per a què funcioni anem a Services->content filter->Network i activem "User name ID method Ident". Un cop fet això, canviem el nostre script en perl per a què ens identifiqui a qualsevol ordinador pel nostre nom d'usuari:

#!/usr/bin/perl

$allow_html_code = 0;
&ReadEnvs;

$deniedurl = $in{'DENIEDURL'};
$reason = $in{'REASON'};
$user = $in{'USER'};
$ip = $in{'IP'};
$hash = $in{'HASH'};

print "Content-type: text/html\n\n";
print '<HTML><HEAD><TITLE>DansGuardian - Accés Denegat</TITLE></HEAD>';
print '<BODY>';
print '<CENTER>';
print '<TABLE WIDTH=700 BORDER=0 CELLPADDING=2 CELLSPACING=0><TR>';
print '<TD COLSPAN=2 HEIGHT=100 BGCOLOR=#fea700>';
print '<P ALIGN=CENTER><FONT FACE="arial, helvetica"><FONT SIZE=6><B>Accés denegat!</B> </FONT></FONT></P>';
print '</TD></TR><TR>';
print '<TD COLSPAN=2 HEIGHT=30 BGCOLOR=#fffacd> </TD>';
print '</TR><TR>';
print '<TD WIDTH=150 VALIGN=top align=center BGCOLOR=#b0c4de><img src="http://192.168.0.1:81/ui/assets/3.5/img/lock.gif">';
print '<br><br><br><FONT FACE="arial, helvetica"><b>La teva IP:</b>';
print "<br>$ip";
print '<br><br><br><br><br><br><br><br>';
print '<img src="http://192.168.0.1:81/ui/assets/3.5/img/smoothwall.promo.button.gif">';
print '<br><FONT FACE="arial, helvetica" size=-2>SmoothWall Express 2.0<br>amb DansGuardian i ClamAV</TD>';
print '<TD WIDTH=550 BGCOLOR=#ffffff>';
print "<br><P ALIGN=CENTER><FONT SIZE=4><FONT FACE=\"arial, helvetica\"><FONT COLOR=#000000>Em sap greu $user, però l'accés a:";
print "<BR><BR><A HREF=\"$deniedurl\">$deniedurl</A>";
print '<BR><BR><FONT SIZE=3>... ha estat denegat per aquest motiu:';
print "<BR><br><FONT COLOR=#ff0000><B>$reason</B>";

if ($user eq martini) {
print "<Br><br><br><a href=\"$deniedurl?GBYPASS=$hash\"><img src=\"http://192.168.0.1:81/ui/assets/3.5/img/on.gif\" border=0></a>";
print '<br><br><br></P>';
}
else {
print '<br><br><br></P>';
print '<P align=center>Per a més informació, contacteu amb l\'Òscar Martínez';
}
print '</TD></TR></TABLE>';
print '</CENTER>';
exit;

sub ReadEnvs {
local($cl, @clp, $pair, $name, $value);
if ( $ENV{'REQUEST_METHOD'} eq 'POST' ) {
read(STDIN, $cl, $ENV{'CONTENT_LENGTH'} );
}
else {
$cl = $ENV{'QUERY_STRING'};
}
@clp = split(/::/, $cl);
foreach $pair (@clp) {
($name, $value) = split(/==/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/ //g;
if ($allow_html_code != 1) {
$value =~ s/<([^>]|\n)*>//g;
}
$in{$name} = $value;
}
}

Un cop fet això, podem seguir agregant funcionalitats al nostre smoothwall:

Sistema de detecció d'intrusos: Per instal·lar el sistema de detecció d'intrusos que respongui als atacs anem a:

Penseu que també instal·larem a dins de l'article anterior el add-on:

Amb això a la pestanya maintenance ens apareix "update snort rules"

Un cop fet això, instal·larem un MOD per a l'smoothwall ens doni més informació:

Ara mirem el resultat:

També instal·larem un filtre SMTP de SPAM i antivirus

i, per últim un visor d'adreces assignades per servidor DHCP:

Finalment, a més a més afegim un fitxer swap a la partició swap (fitxer o partició d'intercanvi que fa una mica com de memòria RAM però molt més lenta) existent ja que la que ve per defecte és de només 16 Mb i nosltres i afegirem 32Mb més ja que quan l'smoothwall porta uns quants dies en funcionament, la swap tendeix a omplir-se:

Per configurar amb el Guardian el bloqueig del tràfic P2P editar el fitxer /etc/snort.conf i descomentar la línia:

# include $RULE_PATH/p2p.rules

i després cal reiniciar l'snort:

restartsnort

Per bloquejar anuncis, primer necessitem una llista, la podem aconseguir a http://pgl.yoyo.org/adservers/

La podeu trobar en diversos formats, jo no em vaig para a mirar, vaig agafar la primera i vaig deixar només els noms dels servidor a bloquejar. Llavors vaig anar a services->Content filter ->Groups Buscar Banned site (domain) list i afegir a la llista els dominis:

007arcadegames.com
101com.com
101order.com
123banners.com
123found.com
12dailypro.com

....

I ja teni bastants anuncis bloquejats. Si veoleu bloquejar més, afegiu els llocs web a la llista (vigileu de no bloquejar tot el lloc web) només ageiu el seu servidor s'anuncis tipus :

ad.100.tbn.ru
ad.37.com
ad.4web.cz
ad.71i.de
ad.a8.net
ad.abcnews.com
ad.abctv.com
ad.about.com

...

Això és tot de moment...

Anar a Pàgina Principal

Imprimeix la web / Enviar a:
Google