Internet Atzipen Kontrola

Era askotan egin daiteke internet atzipen kontrol bat. Normalena, suhesian ebaki kanporako atzipena. Soluzio honek, arazo bat dauka. Edonork ezin dezake suhesia kontrolatu. Beste metodo bat behar dugu. Edozein irakaslek erabil dezakeena. Horrela, irakasle batek, gela bati ezar diezaioke interneterako atzipena edo ukatu. Gainera, era erraz batean behar du egin. Normalena, web orri baten bitartez. Hau egiten saiatuko gara.

Kontutan izan, adibide hau, HTTP proxy-aren atalean agindakoaz laguntzen dela. Beste instalazio mota bat nahi izanez gero, sistema imaginatu beharko da atal biak kontutan izanez.

Ikus dezagun ikastetxe baten adibidea.


Eskolako Azpisareak

Azpisareak

IP Taldeak

Irakasleak

172.16.0.0/24

Ikasleak

172.16.1.0/24

Zuzendaritza

172.16.2.0/24

Zerbitzariak

172.16.3.0/24


Ikasgelen Helbideak

Ikasgelak

IP Taldeak

Gela-01

172.16.1.17 -> 172.16.1.32

Gela-02

172.16.1.33 -> 172.16.1.48

Gela-03

172.16.1.49 -> 172.16.1.64

Gela-04

172.16.1.65 -> 172.16.1.80

Gela-05

172.16.1.81 -> 172.16.1.96

Gela-06

172.16.1.97 -> 172.16.1.112

Gela-07

172.16.1.113 -> 172.16.1.128

Gela-08

172.16.1.129 -> 172.16.1.144

Baherrezko softwarea

Behar ditugun paketeak squid eta sudo dira. Besteak instalatuta daude.


    apt-get install squid sudo

Instalazio script-ak, /var/spool/squid-n sortuko digu katxe-aren direktorio hierarkia, eta martxan jartzen du. Badaukagu ba, squid martxan. Edozxein arrazoirengatik, ez baditu direktorioak sortzen, sortzera behar dezakegu squid -z agintearekin.

Squid konfiguratzen

Konfigurazio fitxategia /etc/squid/squid.conf da. Probak egin nahi baditugu, hona hemen aldatu daitezkeen parametro batzuk:


cache_mem 64 MB

maximum_object_size 8192 KB
maximum_object_size_in_memory 36864 KB
ipcache_size 4096
fqdncache_size 4096

Ez dira egin probak, aldaketa hauen eragina ebaluatzeko, baina RAM memoria nahikoa badugu, ez dute arazorik sortu behar.

Komenigarria da hurrengoa aldatzea. Jarri komeni zaizkizuen izenak / esaldiak.


ftp-user
anonymous@NIRE-ESKOLA.NET
cache_mgr sare-admin@NIRE-ESKOLA.NET

Zein portutan egon behar den zain esango diogu. Sare txartelaren helbidea ere esango diogu,. Honela, bat baiono gehiago baditugu, zeini kasu egin behar dion erabaki dezakegu.


http_port 172.16.0.4:3128

Zein orri ez dituen katxeatu behar esango diogu. Normalean, cgi-ak izango dira, berrien orriak, eta aguraldiarena, noski. Geinera, esan diezaikegu, ez ditzala katxeatu abestiak, bideoak, etab. Administratzailearen esku utziko dugu erabakia.


acl QUERY urlpath_regexp cgi-bin \?
acl ESNEA dstdomain .weather.com
acl ESNEA dstdomain .berria.info
acl ESNEA dstdomain .gara.net
acl ESNEA dstdomain .elpais.es
acl ESNEA dstdomain .elcorreodigital.com

no_cache deny QUERY
no_cache deny ESNEA

Defektuzko konfigurazioan, squid-ek soilik onartzen ditu localhost konexioak. Gure sareetatik eginiko konexioak onar ditzan, horrela agindu behar diogu. Hortarako, atzipen kontrol zerrenda bat sortuko dugu, eta zerrenda hori baimen dezala esango diogu.


acl our_networks src 10.22.0.0/24 10.22.1.0/24 10.22.2.0/24 10.22.3.0/24

http_access allow our_networks

Orain esango diogu, beste proxy bat duela gainean, eta hura erabili behar duela. Proxy hay HAVP da, eta trafikoa aztertzeko erabiltzen dugu.


cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default
cache_peer_access 127.0.0.1 allow all


acl Scan_HTTP proto HTTP
never_direct allow Scan_HTTP

Euskaraz jarriko ditugu errore mezuak. Hortarako, pertsonalizatu ditugun mezuak kopiatuko duitugu, eta Squid-en konfigurazioa aldatu. Lehenengo, /var/www/lhpaiaki/squid-basque eta /var/www/lhpaiaki/squid-spanish direktorioak kopiatuko ditugu bere kokalekura. Lehendik dauden gaztelerazkoei segurtasun kopia ere egingo diegu.


    mv -p R /usr/share/squid/errors/Spanish /usr/share/squid/errors/Spanish-orig
    cp -p R /var/www/lhpaiaki/squid-basque /usr/share/squid/errors/Basque
    cp -p R /var/www/lhpaiaki/squid-spanish /usr/share/squid/errors/Spanish

Orain, squid konfigurazio fitxategian, Euskara aukeratuko dugu errore mezuen hizkuntzarako. Hurrengo lerroa horrela geratuko da /etc/squid/squid.conf fitxategian:


error_directory /usr/share/squid/errors/Basque

Errorerik egin dugun proba dezagun. Hortarako, konfigurazio fitxategia aztertzeko agintea erabiliko dugu:


    squid -k parse

Dena ongi badago, konfigurazio berri har dezan esango diogu:


    /etc/init.d/squid reload

Squid-en 2.6.5-6 bertsioan, ohartu naiz, errore bat ematen duela, eta ez dela abiarazten squid, fitxategi batzuen baimenengatik. Ugazaba root da, eta proxy izan beharko litzateke. Konpon dezagun arazoa:

Ugazaba aldatuko diogu.


    chown proxy /var/spool/squid/swap*

Proxy-a probatu aurretik, eta DMZn dagoenez, atzipena baimendu behar dugu suhesian. Honela geratuko litzateke erregla:

Source

Destination

Service

Action

Irakasleak

Ikasleak

Zuzendaritza

Zerbitzariak

antivirus perimetral

squid (3128)

Accept

Proxy-a probatzeko, nabigatzailearen hobespenak aldatu, eta esan proxy-a duela periometroko antibirusaren IP-an, eta 3128 portuan. Sorte on!

ACL-ak / ACLs

Nork erabil dezaken squid eta nor ez zehazteko, acl-ak erabiltzan dira. Hau da: atzipen kontrolerako zerrendak. Sistema hau erabiliko dugu Interneteko atzipoena kontrolatzeko. Squid proxy-ak, acl-ak azztertuko ditu, adierazita dauden ordenan.

Denok dakigu, nabigatzaileetan sortzen diren arazoak, gehigarriak direla eta. Batez ere Internet Explorer nabigatzailean. Gainera, gehigarri edo plugin hauen, erabiltzaileak jakin gabe instalatzen dira. Hau dela eta, hiru motatako acl-ak sortuko ditugu. Lehenengoa, irakaslee sareak baimentzeko. Web orri instituzionalak jarriko ditugu gero. Orri hauek edozein nabigatzailekin eta beti ikusteko aukera izango dugu. Gero, seguruak ez diren nabigatzaileei ukatu egingo diegu interneterako atzipena. Azkenik, ikasgelen kontrola egingo dugu. Hona hemen irudi bat:

Kontuitan izan, zerrenda hauek, jarrita dauden moduan ebaluatuko direla. Hau da, lehenengo agertzen denak arabakiko du ukatu ala ez atzipena. IP zerrendak dst acl mota  bidez jartzen baditugu, DNS konexioa behar da lehenengo ezxarri. Motelagoan izango dira konexio ebaluapen hauek. IP helbidearen bitartez jartzen baditugu, prozesua azkarragoa izango da. Horrela jarriko ditugu, adibide gisa. Hurrengoan beste erara jarriko ditugu. Ikus ditzagun orain, erabiliko ditugun acl-ak. Zerrendak komentatuak daude, eta beraz, ez dugu azalpen gehiagoreik emango.


# ----------- Jatorrizko helbideak / Direcciones origen -------------
# Eskolako azpisareak / Subredes de la escuela
acl irakasle_sarea src 172.16.0.0/24
acl zuzendaritza_sarea src 172.16.2.0/24
acl zerbitzari_sarea src 172.16.3.0/24

# Ikasleen gelak / Aulas de alumnos
acl gela-01 src 172.16.1.17-172.16.1.32
acl gela-02 src 172.16.1.33-172.16.1.48
acl gela-03 src 172.16.1.49-172.16.1.64
acl gela-04 src 172.16.1.65-172.16.1.80
acl gela-05 src 172.16.1.81-172.16.1.96
acl gela-06 src 172.16.1.97-172.16.1.112
acl gela-07 src 172.16.1.113-172.16.1.128
acl gela-08 src 172.16.1.129-172.16.1.144

IP helburuak. Denentzat interesgarriak diren zenbait helbide.


# ----------- Helburuko helbideak / Direcciones de destino ------------------
# www.nire-eskola.net (xx.xx.xx.xx) : Eskolako interneteko orria, interneten badaukagu
# Páginas de la escuela, si está en Internet
#acl BetiPasa dst xx.xx.xx.xx

# www.euskadi.net : Euskadi.Net, hezkuntza, Zenbait hiztegi (morris, 3000, Elhuyar...)
acl BetiPasa dst 194.30.48.1
acl BetiPasa dst 212.55.29.1
acl BetiPasa dst 194.30.48.2
acl BetiPasa dst 212.55.29.2

# parlamento.euskadi.net : Eusko legebiltzarreko administrazioko hiztegia
# Diccionario del Parlamento vasco, para la administración

acl BetiPasa dst 212.55.31.252

# www.bizkaia.net : Bizkaierazko hiztegia eta diputazioaren web orri nagusia
acl BetiPasa dst 80.245.0.26

# www.gipuzkoa.net : Gipuzkoako diputazioaren web orri nagusia
acl BetiPasa dst 82.116.160.2

# www.araba.net, www.alava.net : Arabako diputazioaren web orri nagusia
acl BetiPasa dst 194.30.32.126
acl BetiPasa dst 206.251.184.30

# www.hiztegia.net : Zerrenda orokorra
acl BetiPasa dst 82.194.66.80

# www.euskaltzaindia.net : Euskaltzaindiaren hiztegia
acl BetiPasa dst 212.55.8.113

# www.hizkuntza.tk : Euskara <-> Katalana hiztegia
acl BetiPasa dst 62.129.131.34
acl BetiPasa dst 62.129.131.35

# abarka.free.fr : Euskara <-> Frantseza hiztegia
acl BetiPasa dst 212.27.40.164

# www.bitez.com : Beste euskarazko hiztegi batzuk
acl BetiPasa dst 213.195.78.64

# www.hiru.com : Esaera bilduma
acl BetiPasa dst 212.142.249.135

Orain, nabigatzaileen definizioak jarriko ditugu.


# ----------- Nabigatzaile Seguruen definizioa / Definiciones de navegadores seguros ------------------
acl OngiNabiga browser Firefox
acl OngiNabiga browser Opera
acl OngiNabiga browser Safari
acl OngiNabiga browser Konqueror
acl OngiNabiga browser Galeon
acl OngiNabiga browser Camino
acl OngiNabiga browser Gecko
acl OngiNabiga browser Java

Orain, atzipen erreglak jarriko ditugu. Lehenengo suebkiari emango diogu baimena. Gero irakasle, zuzendaritza eta sareko azpisareei. Segidan, interesgarriak diren web guineetan emango digi sartzeko baimena. Gero, seguruak ez diren nabigatzaileak debekatuko ditugu. Azkenik, ikasgelen atzipen kontrola egingo dugu. Defektuz, denek dute debekatuta Internet Atzipena.


# Utzi ordenagailu berari ( ez da oso erabilgarria)
http_access allow localhost

# Utzi eskolako irakasle eta administrazio azpisareei restrikziorik gabe
http_access allow irakasle_sarea
http_access allow zuzendaritza_sarea
http_access allow zerbitzari_sarea

# Beti utzi BetiPasa taldeko helbideak arakatzen (edozein nabigatzailerekin)
http_access allow BetiPasa

# Debekatu MS IE, gainontzeko kenexioetan
http_access deny !OngiNabiga

# Ikasleen gelak kudeatu
http_access deny gela-01
http_access deny gela-02
http_access deny gela-03
http_access deny gela-04
http_access deny gela-05
http_access deny gela-06
http_access deny gela-07
http_access deny gela-08

Proba dezagun funtzionamendua. Jar diezaiogu ordenagailu bati 172.16.1.18/24 helbidea. Helbide hau, gela-01 gelako bigarren ordenagailuaren helbidea da. Hurrengo aginte hau egikarituko dugu, eta Internetea atzipena duen egiaztatuko dugu. Ez probatu MSIE nabigatzailearekin ;-) Erabili Azeria. 


    sed -i s/http_access\ deny\ gela-01/http_access\ allow\ gela-01/ /etc/squid/squid.conf
    squid -k reconfigure

Dena ongi? Aurrera!

Arazoak sortzen direnean

ACLekin lan egiten dugunean, sarritan sortzen dira arazoak, eta erregistroak ez digu informazio gehiegirik ematen. Hurrengo parametroak jarri /etc/squid/squid.conf fitxategian, eta berrabiarazi squid. Sorte on!


debug_options ALL,1 33,2

debug_options ALL,1 33,2 28,9

CGI skrip-a

Ez dugu squid.conf fitxategia zuzenean aldatuko, baizik eta web zerbitzariak egikaritzen duen script exekutagarri baten bitartez. Script honek, erregistro fitxategi bat sortzen du. Fitxategi hontan, nork, noiz, nondik, eta zein nabigatzailekin eman duen aldatze agintea agertuko dira. Fitxategi hau /var/log/iak direktorioan sortuko dugu. Beraz, Apache agikaritzen duen prozesuak idazteko baimenak izan behar ditu direktorio hontan. Hotarako:


    mkdir /var/log/iak
    chown www-data:root /var/log/iak

Orain script-a sortuko dugu. Script hau, web zerbitzariaren cgi-bin direktorioan sortuko dugu. Debian banaketan, direktorio hau /usr/lib/cgi-bin da. Scriptaren izena kudeatu izango da. Script hau, txosten honen lehenengo orrian duzue eskuragarri. Errekurtsoak atalean.


#! /bin/bash
# fitxategien definizioak
KONF_FILE="/etc/squid/squid.conf"
LOGFILE="/var/log/iak/iak.log"
PROG="/bin/sed"

# data string-a sortzeko agintea
DATA=`date`;

# QUERY_STRING ingurune aldagaiaren zatiak (gela eta ekintza) hartzeko
GELA=${QUERY_STRING:5:7}
EKINTZA=${QUERY_STRING:21}


# logeatu egiten ditu gauza guzti horiek (dena lerro batean / todo en una linea)
echo "$DATA - $REMOTE_ADDR - $REMOTE_HOST - $REMOTE_USER - $REQUEST_METHOD - $QUERY_STRING - $GELA - $EKINTZA - $HTTP_USER_AGENT" >> "$LOGFILE"


# komando lerrotik egikaritu bada, aldagaiak hartzen ditu
if [ ! -z "$1" ] ; then
    GELA=$1
fi

if [ ! -z "$2" ] ; then
    EKINTZA=$2
fi

if [ "$GELA" = "defektuz" ] ; then
    EKINTZA="defektuz"
fi

# erroreen kudeaketa
if [ -z $GELA ] ; then
    echo "Content-type: text/html"
    echo ""
    echo "Ez da zehaztu gelarik"
    exit 1
fi

if [ -z $EKINTZA ] ; then
    echo "Content-type: text/html"
    echo ""
    echo "Ez da zehaztu ekintzarik"
    exit 1
fi

# gela existitzen bada.....
case "$GELA" in
    gela-01 | gela-02 | gela-03 | gela-04 | gela-05 | gela-06 | gela-07 | gela-08 )
        case "$EKINTZA" in
            ireki)
                sudo $PROG -i s/http_access\ deny\ $GELA/http_access\ allow\ $GELA/ $KONF_FILE;
            ;;
            itxi)
                sudo $PROG -i s/http_access\ allow\ $GELA/http_access\ deny\ $GELA/ $KONF_FILE;
            ;;
        esac

        sudo /etc/init.d/squid reload 1> /dev/null

        echo "Content-type: text/html"
        echo ""
        echo "<center><h1>Agintea ongi burutu da</h1>"
        echo "Akzesu kontroleko orrira itzultzeko pultsa
            <a href=\"http://suebakia.nire-eskola.net/iak/iak.php\">hemen</a></center>"

        exit
    ;;

    defektuz) # itxi egingo ditugu gela guztiak
        sudo $PROG -i s/http_access\ allow\ gela-01/http_access\ deny\ gela-01/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-02/http_access\ deny\ gela-02/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-03/http_access\ deny\ gela-03/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-04/http_access\ deny\ gela-04/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-05/http_access\ deny\ gela-05/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-06/http_access\ deny\ gela-06/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-07/http_access\ deny\ gela-07/ $KONF_FILE;
        sudo $PROG -i s/http_access\ allow\ gela-08/http_access\ deny\ gela-08/ $KONF_FILE;

        sudo /etc/init.d/squid reload 1> /dev/null
        exit
    ;;

    *)
        echo "Content-type: text/html"
        echo ""
        echo "Gela hau ez da existitzen";
        exit 1;
    ;;
esac

exit

Exekutagarri egin dezagun.


    chmod +x /usr/lib/cgi-bin/kudeatu

Goazen probatzera. Aginte hauek egikarituko ditugu eta ea funzionatzen duten.

Kontuz! Probatu ondoren ez ahaztu /var/log/iak/iak.log fitxategia ezabatzeaz. root erabiltzaileak sortu du. Beste inork ez du baimenik fitxategi hortan idazteko. Scriptak idatz dezan, berak sortu behar du fitxategia.


    /usr/lib/cgi-bin/kudeatu gela-02 itxi
    /usr/lib/cgi-bin/kudeatu gela-02 ireki
    /usr/lib/cgi-bin/kudeatu defektuz

Scriparen beste bertsio bat dago. Bertsio hau PHP lengoaian programatu da. Abantailarik nagusiena, interaktiboagoa dela. Ez da beste orri batetik pasatzen bueltan. Arazoa? Motelagoa da. Atzipen kontrolaren /var/www/iak direktorioan kokatuta dago. Hona hemen kodea:


<?php

//
// LHPAIAK 2.0
//

header ("Location: {$_SERVER['HTTP_REFERER']}");

$PROG = "sudo /bin/sed";
$KONF_FILE = "/etc/squid/squid.conf";

$AGINTEA = "sudo /etc/init.d/squid reload";
$LOGFILE = "/var/log/iak/iak.log";


$ADDR = $_SERVER ['REMOTE_ADDR'];

$host = gethostbyaddr($ADDR);
$data = date('Y.m.d-H:i');


if (isset($_POST['gela']) && isset($_POST['ekintza'])) {

    $gela = $_POST['gela'];
    $ekintza = $_POST['ekintza'];

    exec("sudo /bin/echo  $data - $host - $ADDR - $gela - $ekintza >> $LOGFILE");

    if ($ekintza == "itxi") {
        exec("$PROG -i s/http_access\ allow\ $gela/http_access\ deny\ $gela/ $KONF_FILE");
    }
    else {
        exec("$PROG -i s/http_access\ deny\ $gela/http_access\ allow\ $gela/ $KONF_FILE");
    }

    exec("$AGINTEA");
}
else {

    if ($_SERVER['argc'] < 2) { exit; };

    exec("sudo /bin/echo  $data - DEFEKTUZ >> $LOGFILE");

    exec("$PROG -i s/http_access\ allow\ gela-01/http_access\ deny\ gela-01/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-02/http_access\ deny\ gela-02/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-03/http_access\ deny\ gela-03/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-04/http_access\ deny\ gela-04/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-05/http_access\ deny\ gela-05/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-06/http_access\ deny\ gela-06/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-07/http_access\ deny\ gela-07/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-08/http_access\ deny\ gela-08/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-09/http_access\ deny\ gela-09/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-10/http_access\ deny\ gela-10/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-11/http_access\ deny\ gela-11/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-12/http_access\ deny\ gela-12/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-13/http_access\ deny\ gela-13/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-14/http_access\ deny\ gela-14/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-15/http_access\ deny\ gela-15/ $KONF_FILE");
    exec("$PROG -i s/http_access\ allow\ gela-16/http_access\ deny\ gela-16/ $KONF_FILE");

    exec("$AGINTEA");
}
?>

On egin!

Web orria

Orain, web orri bat egingo dugu. Web zerbitzariaren iak direktorioan jarriko dugu. Debian banaketan /var/www/iak/. Sor dezagun direktorio hau.


    
mkdir /var/www/iak

Web orriaren izena iak.php izango da. Hemen duzu adibide bat 8 gelarekin:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>DOMEINUA :: Internet Atzipen Kontrola</title>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body leftmargin="0" topmargin="0">

<?php
$gela = 0;

$squidkonffile = file("/etc/squid/squid.conf");
foreach ($squidkonffile as $lerroa => $testoa){
    $pos1 = strpos($testoa, 'http_access');
    $pos2 = strpos($testoa, 'gela');
    if ($pos1 === 0 and $pos2 > 0){
        $atzipena = split(" ", $testoa);
        if (trim($atzipena[1]) === "allow"){
            $egoera[$gela++] = "1";
        }
        else{
            $egoera[$gela++] = "0";
        }
    }
    else {
    }
}
?>

<div style="text-align: center;"><img alt="" src="goikoikurra-web.png"><br>
</div>
<div style="text-align: center;"><big style="text-decoration: underline; font-weight: bold;"><big><big>
Internet Atzipen Kontrola</big></big></big><br>
</div>
<br>
<form style="margin-top: 22px; height: 222px;" method="get" action="/cgi-bin/kudeatu" name="aukerak">
  <table style="text-align: left; margin-left: auto; margin-right: auto; width: 533px; height: 198px; background-color: rgb(255, 255, 255);" align="center" border="0">
    <tbody>
      <tr>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[0] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-01" type="radio">Gela-01<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[1] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-02" type="radio">Gela-02<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[2] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-03" type="radio">Gela-03<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[3] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-04" type="radio">Gela-04<br>
        </td>
      </tr>
      <tr>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[4] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-05" type="radio">Gela-05<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[5] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-06" type="radio">Gela-06<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[6] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-07" type="radio">Gela-07<br>
        </td>
        <td style="color: rgb(0, 0, 0); background-color: <?php if ($egoera[7] == "1") { echo 'rgb(102, 255, 102)';} else {echo 'rgb(255, 102, 102)';} ?>; text-align: center;">
        <input name="gela" value="gela-08" type="radio">Gela-08<br>
        </td>
      </tr>
      <tr>
        <td style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 102);">
&nbsp;
        </td>
        <td colspan="2" style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 102);" align="center">
        <input name="ekintza" value="ireki" type="radio">Ireki
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input name="ekintza" value="itxi" type="radio">Itxi
        </td>
        <td style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 102);">
        </td>
      </tr>
      <tr>
        <td colspan="4" rowspan="1" style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 102); text-align: center;">
        <input value=" Bidali " type="submit"></td>
      </tr>
    </tbody>
  </table>
</form>
<div style="text-align: center;"><img alt="" src="behekoikurra-web.png"><br>
</div>
</body>
</html>

Web zerbitzaria root bezala

Normalean, web zerbitzaria izango da, eta es root, script-a egikarituko duena. Bestalde, root baimenak behar dira squid prozesua kudeatzeko. Arazoa konpontzeko, root baimenak emango dizkiogu web zerbitzaria egikaritzen duen erabiltzaileari. Kasu hontan www-data. Soilik egikarituko behar ditu bi aginte.  Hortarako sudo agintea erabiliko dugu. sudo agintea /etc/sudoers fitxategian konfiguratzen da. Fitxategi hau editatzeko, visudo agintea erabiltzea da komenigarri. Horrela, bukatzerakoan, fitxategia ongi dagoen egiaztatzen da. Editatzeko, pultsa i. Aginte modura bueltatzeko, ESC pultsatu. Komando modutik, gorde eta irtetzeko, :wq. Hona hemen fitxategi honek izan behar duen itxura:


# Host alias specification
Host_Alias PROXYA = localhost, antibirusa

# User alias specification
User_Alias IAK = www-data

# Cmnd alias specification
Cmnd_Alias AGINTEAK = /etc/init.d/squid reload, /bin/sed

# User privilege specification
root ALL=(ALL) ALL

# Proxia berrabiarazteko eta sed erabiltzeko baimena
IAK PROXYA=(root) NOPASSWD:AGINTEAK

Ikus dezakegunez, ez du pasahitzik eskatuko. Kitto!

INPORTANTEA: Host_Alias parametroan, hostalariaren izena jarri behar dugu eta ez alias bat. hostname fitxategian daukaguna izan daiteke.

Segurtasuna

Web orri hontan soilik sartu ahal izan behar da irakasle, zuzendaritza eta sareko azpisareetati¡k. Honez gain, soilik sartu behar dira irakasleak. Irakasleen autentifikazioa bi eratara egingo dugu. Lehenengoa, fitxategi baten aurka. Bigarrena, MS Active Directory-ren aurka.

Fitxategi baten aurka

Fitxategi baten aurka autentifikatzeko irakasleak, Apache konfiguratu behar dugu. /etc/apache2/conf.d/ direktorioan, iak.conf fitxategian, hurrengo hau jarriko dugu:


ServerAdmin webadmin@nire-eskola.net

<Directory /var/www/iak/>
    Order deny,allow
    Deny from all
    AllowOverride AuthConfig Limit
    Allow from 127.0.0.1 172.16.0 172.16.2 172.16.3
    AuthType Basic
    AuthName "Internet Atzipen Kontrola. Pasahitza behar duzu sartu"
    AuthUserFile "/var/lib/apache2/irakasleak.pass"
    Require valid-user
</Directory>

Orain, erabiltzaileak eta pasahitzak sortu behar ditugu /var/lib/apache2/irakasleak.pass fitxategian. 8 irakasle aukeratuko ditugu, eta baimendu egingo ditugu. Pasahitza eskatuko digu, eta lehenengo erabiltzailearekin -c parametroa jarri behar dugu, fitxategia sor dezan. Hurrengo aginteak egikaritu:


    htpasswd2 -c /var/lib/apache2/irakasleak.pass irakasle1
    htpasswd2 /var/lib/apache2/irakasleak.pass irakasle2
    htpasswd2 /var/lib/apache2/irakasleak.pass irakasle3
    htpasswd2 /var/lib/apache2/irakasleak.pass irakasle4
    htpasswd2 /var/lib/apache2irakasleak.pass irakasle5
    htpasswd2 /var/lib/apache2irakasleak.pass irakasle6
    htpasswd2 /var/lib/apache2/irakasleak.pass irakasle7
    htpasswd2 /var/lib/apache2/irakasleak.pass irakasle8

Erabiltzailea ezabatu nahi badugu ordez, -D parametroa emango diogu.

Orain, apache egikaritzen duen prozesuak irakur ahal dezan, ugazaba aldatuko diogu:


    chown www-data:root /var/lib/apache2/irakasleak.pass

Azkenik, Apacheren konfigurazioa birkargatuko dugu.


    /etc/init.d/apache2 reload

MS-en Active dIrectory-ren aurka

Gauza bera egin dezakegu Active Directory badaukagu. Kontutan izan beharko dugu, nola Active Directory-n, irakasleak gain, ikasleak ere eduki ditzakegu.

Lehenengo, Apache-ren modulu bi gaitu behar ditugu. Hona hemen nola:


    a2enmod ldap
    a2enmod authnz_ldap

Hona hemen /etc/apache2/conf.d/iak fitxategiaren edukia:


<Directory "/var/www/iak/">
    Options -Indexes
    AllowOverride AuthConfig Limit
    Order deny,allow
    Deny from all
    Allow from from 127.0.0.1 172.16.0 172.16.2 172.16.3

    AuthName " INTERNET ATZIPEN KONTROLA "
    AuthType Basic
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off

    AuthLDAPUrl "ldap://SERVER.nire-eskola.net:389/ou=irakasleak,dc=nire-eskola,dc=net?sAMAccountName?sub?(objectClass=*)"

    AuthLDAPBindDN "cn=IAKBind,cn=Users,dc=nire-eskola,dc=net"
    AuthLDAPBindPassword nire-pasahitz-izkutua

    Require valid-user
</Directory>

Hona hemen LDAP-i dagozkion parametroen azalpen txiki bat:

Parametroa Azalpena
AuthBasicProvider Nork ematen duen autentifikazioa
AuthzLDAPAuthoritative Baimentzeko orduan, azkenengo hitza LDAP moduluak duen ala ez
AuthLDAPUrl Nondik bilatzen den irakasleen informazioa
ldap Erabiltzen den protokoloa
SERVER Zerbitzariaren DNS izena
nire-eskola.net Zerbitzariaren DNS domeinua
389 LDAP protokoloaren TCP portua
irakaslek "irakasleak" antolaketa unitatea
nire-eskola.net LDAP zuhaitzaren domeinu zatiak
sAMAccountName AD-n, erabiltzaile izena metatzeko erabiltzen del ezaugarriaren izena
sub Bilaketa sakonera: azpiko maila guztiak
objectClass=* Objetu moten iruzkina: Denak
AuthLDAPBindDN LDAP direktorioan bilaketa egiten duen erabiltzailea (Beharrezkoa AD-n)
cn Izen arrunta (Common Name)
IAKBind Erabiltzailearen izena
Users Defektuz, AD-n erabiltzaile guztiak kontenedore hontan daude
AuthLDAPBindPassword Bilaketa egiten duen erabiltzailearen pasahitza

Arazotxo bat dago Linux-en LDAP eta AD-ren artean. Konpontzeko, hurrengo lerroa jarriko dugu /etc/ldap/ldap.conf fitxategian:

REFERRALS off

Orain, Apacheren  konfigurazioa birkargatuko dugu.

    /etc/init.d/apache2 reload

OHARRA: Ahaztu gabe! Antibirusetik irakasleen erabiltzaile kontuak dituen zerbitzarira eginiko konexioentzat, ireki behar duzue suhesian 389 portua.

Log fitxategia

Lehen aipatu denez, erregistro fitxategia /var/log/iak/iak.log da. Gehiegi has ez dadin, biratu egingo dugu. Hortarako /etc/logrotate.d/iak sortuko dugu hurrengo edukiarekin:


/var/log/iak/iak.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 www-data www-data
    sharedscripts
}

Konfigurazio automatikoa

Goizean eta arratsaldean, klaseak bukatu ondoren, defektuzko konfigurazioa jarriko dugu atzipen kontrolean. Automatikoki egingodugu, cron bidez. Lan hau aginduko diogu egunero 15:30 eta 23:30 etan. Hortarako, kudeatu fitxategtia egikarituko du defektuz parametroarekin. Gure adibidean, klase guztiak itxiko ditu. Hortarako, /etc/cron.d/kudeatu fitxategi bat sortuko dugu eduki honekin:


30 15,23 * * * /usr/lib/cgi-bin/kudeatu defektuz

Azkenik, cron prozesua berrabiaraziko dugu.

    /etc/init.d/cron restart

Proba dezagun ba aplikazioa. Hurrengo helbidea sartu nabigatzailean eta probatu.


http://antibirusa.nire-eskola.net/iak/iak.html

Sorte on!