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:
- muntar apache2 amb ssl
- muntar webmin
- muntar squid i configurar-lo mitjançant webmin
- federar el proxy
- muntar webalizer
- 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
):
# 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:


