Configuració bàsica de Squid per obtenir un porxy federat a partir d'una Debian Etch mínima

Aquest document recull els passos que s'han fet a Perafita per obtenir un proxy federat a partir d'una Debian Etch pelada. La intenció és documentar una forma sistemàtica de fer aquest tipus d'instal·lacions. Els seus continguts essencials han estat obtinguts dels documents de referència següents (us en recomanem la lectura):

http://guifi.net/ca/proxy (muntar un proxy amb Squid)
http://guifi.net/ca/node/4427 (federar un proxy)


Partint d'una Debian Etch pelada, els passos a seguir són els següents:
  1. muntar apache2 amb ssl
  2. muntar webmin
  3. muntar squid i configurar-lo mitjançant webmin
  4. federar el proxy
  5. muntar webalizer
  6. Annex: configuracions de dispositius (escenari poc usual i gens desitjable)


nota 1: Les línies de comandes que comencen amb el caràcter "#" s'han d'executar amb permisos de superusuari; les que comencen amb "$" poden ser executades per usuaris sense permisos especials. En qualsevol cas, però, a l'hora d'entrar qualsevol línia de comandes s'ha de fer sense teclejar cap d'aquests caràcters.

nota 2: El sistema de gestió de paquets ja manega correctament tot el sistema de dependències. Quan instal·lem paquets, si aquests tenen dependències d'altres paquets que no tenim instal·lats, el sistema de gestió ens preguntarà si també volem instal·lar aquests altres paquets: contestem afirmativament i endavant.


1. apache2 amb ssl

Instal·lem apache2:
# aptitude install apache2 





Apache2 a Debian:

Instal·lem l'openssl i ens generem un certificat:
# aptitude install openssl ssl-cert

# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem








Carreguem el mòdul ssl de l'apache:
# a2enmod ssl






Reengeguem l'apache perquè s'executi amb el mòdul d'ssl:
# /etc/init.d/apache2 force-reload









2. webmin

No està integrat a Debian => l'haurem d'anar a buscar al seu site (http://www.webmin.com/download.html). Afortunadament els de webmin ja el serveixen en format .deb (versió 1.350 en el moment d'escriure el doc)

Baixem el paquet:
# wget http://prdownloads.sourceforge.net/webadmin/webmin_1.370_all.deb








Instal·lem els paquets que ens faran falta per a les dependències del webmin (*):
# aptitude install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl







Instal·lem el paquet:
# dpkg -i webmin_1.370_all.deb






Ara mitjançant un navegador ja hem de poder entrar entrar a l'URL https:localhost:10000. Per exemple amb el lynx:
$ lynx https://127.0.0.1:10000/






=> habilitar l'accés des de totes les addreces (ja està habilitat per defecte)
-> per entrar per lynx cal admetre cookies (A)
-> left
-> Webmin Configuration
-> IP Access Control
   (*) Allow from all addresses

=> per posar-lo en català
-> Change Language and Theme
-> Webmin UI language
   Personal choice: Catalan (CA)



3. squid

L'instal·lem:
# aptitude install squid






Creem un directori que necessitarem després en el punt 4 (tot i que no compleixi l'FHS :p ):
# mkdir /usr/etc/
# touch /usr/etc/passwd




Per configurar-lo seguirem el document http://guifi.net/ca/proxy. Resumint:

https://127.0.0.1:10000/

-> Servidor
-> Servidor Proxy Squid

--> Programes d'Autenticació
    Programa d'autenticació bàsica        (·) /usr/lib/squid/ncsa_auth /usr/etc/passwd
    Nombre de programes d'autenticació    5
    Temps cau de l'autenticació        (·) 2    hores
    Reialme d'autenticació            Perafita Squid proxy-caching web server

--> Control d'Accés
    Llistes de control d'accés
        final de tot; pastilla "Crea una nova ACL"; opció menú desplegable "Autenticació externa"
            ---> Control d'Accés
                Nom d'ACL    usuaris_autenticats
    Restriccions de proxy
        de color blau "Afegeix restricció de proxy."
            Acció            (·) Permet
            Fes coincidir les ACLs    usuaris_autenticats
    Restriccions de proxy
        A la llista s'ha de fer baixar "Denega all" a l'última posició
    Control d'Accés
        A dalt de tot a la dreta "Aplica els Canvis"

Utilitzarem sarg per a generar informes sobre l'ús del proxy. L'instal·lem:
# aptitude install sarg







I el configurarem amb el webmin:
https://127.0.0.1:10000/

-> Servidor
-> Generador d'Informes de l'Anàlisi de Squid
        final de tot;
            pastilla "Generar Ara l'Informe"
            pastilla "Visualitzar Informe Generat"



4. federació del proxy

https://llistes.projectes.lafarga.org/pipermail/guifi-rdes/2007-November/003850.html

4.1 federació del proxy (desfasat)

Ens basarem en el document http://guifi.net/ca/node/4427.

Hem de saber el número identificador de node del nostre proxy (el qual haurem donat d'alta com a proxy federat a la web de guifi.net, frame de l'esquerra, aportar continguts/serveis de guifi) perquè l'haurem d'introdir manualment a l'script que hem obtingut del document anterior. Per saber aquest número podem anar a la pastilla de "continguts" de la web de guifi (http://guifi.net/ca/node/2413/view/services) i busquem el nostre proxy i hi cliquem. Un cop hem accedit a la plana de descripció del nostre proxy el trobarem a la secció "servei"; per al proxy de perafita (http://guifi.net/node/7652) , per exemple: servei   7652-PerafitaProxy => el número que busquem és el 7652.

Anem a generar l'script: HEU DE SUBSTITUÏR EL 4282 ( del proxy de Roda de Ter-Esquerda) pel vostre
#!/bin/sh
wget http://www.guifi.net/ca/node/4282/view/federated -qO /tmp/passwd
touch /usr/etc/passwd
NEW=`diff /usr/etc/passwd /tmp/passwd|wc -l`
OK=`grep Federated /tmp/passwd|wc -l`
if [ $OK != "0" ]; then
if [ $NEW != "0" ]; then
cp /tmp/passwd /usr/etc/
/etc/init.d/squid reload
echo "Nou /usr/etc/passwd copiat"
fi;
fi














El guardem (assegurant-nos que tot fent el copy&paste no hi hàgim introduït caràcters estranys; ull amb les negretes) amb el nom de proxypasswd.sh, com a root li donem permisos d'execució, el copiem a un lloc accessible del $PATH (/usr/bin en aquest exemple):
# chmod 755 proxypasswd.sh
# mv proxypasswd.sh /usr/bin/proxypasswd.sh






Ara mitjançant la comanda nova proxypasswd.sh qualsevol usuari ha de poder iniciar, manualment, el procés automàtic d'actualització els usuaris i els seus passwords (els usuaris i passwords es donen d'alta a través de la web de guifi.net):

El pas següent és fer que aquest procés s'inicialitzi de forma periòdica automàticament. per això teclejarem la comanda següent, la qual ens obrirà un fitxer de text a on hi ha les entrades dels processos periòdics del sistema):
# crontab -e






Al final d'aquest fitxer hi afegirem la línia següent, la qual estableix que el sistema cron invocarà proxypasswd.sh cada hora, al minut 54:
54 * * * * /usr/bin/proxypasswd.sh






Reiniciem cron perquè tingui en compte els canvis (d'acord amb el man de crontab no és necessari):
# /etc/init.d/cron restart








5. webalizer (FIXME -> seguretat: accés per validació)

Instal·lem el programa i creem els directoris necessaris:
# aptitude install webalizer
# mkdir /var/www/webalizer/apache
# mkdir /var/www/webalizer/squid






Ho configurem mitjançant webmin
https://127.0.0.1:10000/

-> Servidor
-> Anàlisi de Registres Webalizer

    --> Fitxer de registre
        /var/log/apache2/access.log
            Grava l'informe al directori        /var/www/webalizer/apache
            Generació planificada d'informe        (·) Activada a les hores triades a sota...
        /var/log/squid/access.log
            Grava l'informe al directori        /var/www/webalizer/squid
            Generació planificada d'informe        (·) Activada a les hores triades a sota...





Annex: configuracions de dispositius

A Perafita les circumstàncies no ens han deixat posar l'adsl a la banda pública (10.158.x.x), bona pràctica, i per tant tenim una configuració un pèl particular:

1 servidor amb 2 targes de xarxa:
# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 10.138.57.2
netmask 255.255.255.224
network 10.138.57.0
broadcast 10.138.57.31

up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.138.57.1
down route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.138.57.1



auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

up route add default gw 192.168.1.1
down route del default gw 192.168.1.1






























1 router Zyxel Prestige 650HW-31 al qual hem fet NAT per poder accedir des de Internet al servidor:
                          Menu 15.2 - NAT Server Setup


               Rule   Start Port No.   End Port No.   IP Address
              ---------------------------------------------------
                 1.    Default          Default        0.0.0.0
                 2.      22               22           192.168.1.2
                 3.      80               80           192.168.1.2
                 4.      443              443          192.168.1.2
                 5.      111              111          192.168.1.2
                 6.      0                0            0.0.0.0
                 7.      0                0            0.0.0.0
                 8.      0                0            0.0.0.0
                 9.      0                0            0.0.0.0
                10.      0                0            0.0.0.0
                11.      0                0            0.0.0.0
                12.      0                0            0.0.0.0

                    Press ENTER to Confirm or ESC to Cancel: