Languages

User login


Configuració bàsica de Squid per obtenir un proxy 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:

  • fitxers de configuració -> /etc/apache2
  • fitxers a servir -> /var/www
  • es crea el grup de sistema (/etc/group) www-data

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...

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:

Comentaris

Opcions de visualització de comentaris

Selecciona la vostra manera preferida de visualitzar els comentaris i feu clic en "Desa la configuració" per activar els canvis.

Estic preparant un Debian

Estic preparant un Debian Etch per a fer de proxy. Gracies per la guia, estalvia feina.

Observacions:

En l'instal·lacio del webmin, abans de fer el dpkg, haurien d'instalar els paquets que falten, perque no es trenquin les dependencies i no dongui errors amb el dpkg, ja no caldra el "apt-get install -f":

aptitude install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl

Ara mateix la versio que tenen empaquetada per debian es la 3.70. S'hauria de posar que copiin l'adreça del .deb "all" de la versió actual al wget. I que la posin entre cometes:

wget "http://downloads.sourceforge.net/webadmin/webmin_1.370_all.deb?modtime=1190449287&big_mirror=1"

aplicat

aptitude install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl

Incorporat al doc.

_____
actualització de paquets
Ho he actualitzat a la 1.370, i hi he afegit l'ellaç de la plana de download.

... i com està l'assumpte d'editar directament les ACLs?

Joan,

això: com ho tens això d'anar directament als fitxers de configuració sense fer servir el webmin? ho has escrit algun lloc o en pots fer cinc cèntims? thx

Varis

Ho estic fent a estones, perdoneu per l'entrega per capítols ;-) - Pots borrar la part del "# apt-get install -f". Al instalar els paquets que faltaven, ja no cal fer-ho. - En l'apartat "3. Squid", just despres del " sudo apt-get install squid" s'ha de fer un "sudo mkdir /usr/etc". En cas contrari, com que no existeix aquest subdirectori, i si vols afegir usuaris al proxy des del webmin et dona error. Sobre com editar els ACL sense webmin, ho acabo de mirar ara. Tenia que fer-ho amb el webmin per veure que canviava en el squid.conf. Es tant xorra que no se si cal fer un doc. Es tracta d'editar el /etc/squid/squid.conf. Buscar la linea:
#  TAG: auth_param
Hi ha tot un bloc d'informació comentada amb un "#" al davant, just quan acaben els comentaris s'ha d'afegir:
auth_param basic credentialsttl 2 hour
auth_param basic children 5
auth_param basic program /usr/lib/squid/ncsa_auth /usr/etc/passwd
Despres cal anar a buscar:
#  TAG: http_access
Al final del bloc d'informació comentada hi haura:
# And finally deny all other access to this proxy
http_access deny all
Just abans d'aquestes dues linees cal afegir:
acl usuaris_autenticats proxy_auth REQUIRED
http_access allow usuaris_autenticats
Ja esta. Nomes fer un "/etc/init.d/squid restart" i llestos

resposta

1r-. "esborrar..." fet
2n-. "mkdir..." ja hi era al punt 4, però el passo al tres pq sinó, efectivament, el doc no és coherent
3r-. Sobre la generació de doc les ACLs: jo sí que ho documentaria.

Pregunta

Funcionaria també en una Ubuntu? ;) com que són cosines germanes.

Si no et fa res posaré una copia del teu tutorial al meu treball de recerca.

sí, i, sí

Ubuntu: jo no ho he provat, però no crec pas que hi hagi d'haver cap problema

"Còpia": doc lliure i tal, no?

Perdona el retard de les respostes.

Detalles en la configuración Ubuntu 9.04 con squid-2.7 y webmin

He probado (con Quique Galdú)  el montaje con Ubuntu y Debian y funciona igual.

Comento dos detalles del fichero /etc/squid/squid.conf:

1- Las líneas que empiezan por auth_param deben estar antes que las acl.

2- Tenía creados squid y proxy tanto como usuario como grupo, pero en los dos sistemas el directorio en /var/log/squid pertenecía a usuario y grupo proxy y no a squid. En el fichero squid.conf se asignaban a squid, y entonces squid no arranca pero no daba error. En las líneas donde pone:

cache_effective_user squid

cache_effective_group squid

Hemos cambiado squid por proxy.

 

imatge de ignasiferrer

conexio segura ssl

Amb fedora, e instalat el openssl correctament.

alhora de generar el certificat, em dona errro 966.

no serveix per fedora el manual de ssl?

 

 

En principi hauria d'anar igual, no?

no veig pq no ha de funcionar, Potser podries fer un C&P tant de la comanda com de la sortid a veure què...

imatge de ignasiferrer

ssl amb fedora

El meu directori del apache es:

/etc/httpd/

a llavors creo el ssl al directori que toca eplenant tote el que em demana

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

 

fent tot aixo, encara no respon https://localhost
 

i aquest pas et dóna un error? post fer-ne C&P?

i si no et dóna error, però encara no et va assegura't de tenir el mòdul de l'apache ssl carregat i d'haver reinicat l'apache

imatge de pablog

Webmin per debian (enllaç més

Webmin per debian (enllaç més actualitzat): http://prdownloads.sourceforge.net/webadmin/webmin_1.530_all.deb
I una altra dependència: apt-show-versions