Servidor Proxy/ca

De Guifi.net - Wiki Català

S'ha proposat fusionar aquest article amb «Squid». (Vegeu la discussió)

S'ha proposat fusionar aquest article amb «Sortida a Internet». (Vegeu la discussió)

nota: Aquest manual, basat en Debian, inclou instal·lar servidor web, webmin, sarg i webalizer

Proxy Manual Curt

Que és Guifi-proxy3?

Guifi-proxy3 és l'ampliació del paquet guifi-proxy, creat per en Carles Guadall, més un conjunt de configuracions per tal d'aconseguir un proxy federat-cache en el moment de finalitzar el assistent de configuració.


Com instal·la?

# echo deb http://repo.vic.guifi.net/debian guifi/ >> /etc/apt/sources.list
# sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 2E484DAB
# aptitude update && aptitude install guifi-proxy3


Configuració del guifi-proxy3

Durant el procés d'instal·lació us demanarà els següents paràmetres:

  • nº del node del servidor proxy
  • nom del servidor proxy ( display que els surt als clients que utilitzin el vostre proxy en començar a navegar )
  • e-mail de contacte. És l'email que apareix a les pàgines d'error que mostra el squid
  • idioma de les pàgines d'error del squid. Doncs això, depenent de l'idioma que definiu les pàgines d'error del squid surtiràn en un idioma o en un altre.
  • espai del disc per emmagatzamar cache. (/var/spool/squid3)
  • quantiat de memoria RAM dedicada a la cache.

En acabar aquest assistent ( hi ha valors per defecte, per si hi ha dubtes) ja tindreu un servidor proxy-cache federat a punt per ser utilitzat, si no es vol no s'ha d'afegir cap altre configuració [veure més avall].


Com queda organitzada la configuració del squid?

En finalitzar l'assistent tindrem els següents fitxers:

  • /etc/squid3/squid.conf [NO TOCAR/EDITAR] --> configuració estàndard
  • /etc/squid3/guifi.conf [NO TOCAR/EDITAR] --> configuració generada durant el procés d'instalació del guifi-proxy3
  • /etc/squid3/custom.conf --> fitxer reservat per les configuracions dels administradors dels server proxy. ( per exemple les acl que tallen megaupload i demés)


Proxy Manual Llarg

->Tots els paquets estan disponibles a Debian, menys el webmin. L'instal·larem des del seu repositori. Afegim la direcció del seu repositori:

echo "deb http://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list

->Instal·lem la clau GPG del repositori:

cd /root
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

->Actual·lizem:

apt-get update


Instal·lem els paquets:

apt-get install squid sarg webmin apache2 webalizer


Apache:

->Generem un certificat:

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

...resultat:

   Generating a 1024 bit RSA private key
   .......................++++++
   ..++++++
   writing new private key to '/etc/apache2/apache.pem'

   You are about to be asked to enter information that will be incorporated
   into your certificate request.
   What you are about to enter is what is called a Distinguished Name or a DN.
   There are quite a few fields but you can leave some blank
   For some fields there will be a default value,
   If you enter '.', the field will be left blank.

   Country Name (2 letter code) [AU]:SP
   State or Province Name (full name) [Some-State]:Regió
   Locality Name (eg, city) []:Ciutat
   Organization Name (eg, company) [Internet Widgits Pty Ltd]:guifi.net
   Organizational Unit Name (eg, section) []:
   Common Name (eg, YOUR name) []:admin
   Email Address []:blabla(arroba)mail(punt)com
   Srv:~#

->Cargarem el mòdul SSL de l'Apache:

a2enmod ssl

->El reiniciarem perquè ens carregui el mòdul:

/etc/init.d/apache2 force-reload


Webmin:

->un cop tinguem instal·lat el paquet, podem accedir a la seva configuració des del navegador:

 https://ip-del-servidor:10000/

->Accedirem amb l'usuari que tinguem al servidor. En el menú de l'esquerra anem a "Webmin - Change Language and Theme" per posar-lo a català.


Squid:

->Primer crearem un directori que ens caldrà més endavant:

mkdir /usr/etc/
touch /usr/etc/passwd


Programes d'autentificació:

->A continuació accedirem a "Servidors - Squid - Servidor Proxy - Programes de autentificació". Allà afagirem a "Programa d'autenticació bàsica", /usr/lib/squid/ncsa_auth /usr/etc/passwd i els següents valors marcats a la imatge[[1]]

 Programa d'autentificació bàsica: -> /usr/lib/squid/ncsa_auth /usr/etc/passwd
 Nº de programes d'autentificació: -> 5
 Temps de cache d'autentificació:  -> 2  hores
 Pòcima d'autentificació:  ->  Squid proxy-caching web server

->Cliquem a "Aplicar els canvis", adalt a la dreta, per guardar.


Control d'accés:

->A "Servidors - Squid - Servidor Proxy - Control d'accés", cliquem al botó de "Crear nova ACL", amb el menú desplegable marcat amb "Autentificació Externa" i li donem el nom usuaris_autentificats.

->Ara a "Servidors - Squid - Servidor Proxy - Control d'accés", anem a la pestanya "Restriccions del proxy" i afagim una nova que permetrà els usuaris autentificats.

->Sel·leccionar "Permetre" i sel·leccionar "Usuaris Autentificats"

->És important l'ordre en què aparèixin llistades les restriccions, pel que haurem de pujar-la, amb la fletxa, per sobre de la que ho denega tot.

->Per últim, cliquem a "Aplicar canvis", a dalt a la dreta.

Llistar els Guifaires loguejats al proxy federat

->Obrir un cron amb la ordre següent:

crontab -e 
3,8,13,17,28,24,28,33,39,44,49,53,57 * * * * tail -1000 /var/log/squid/access.log | awk '{print$8,"\t"}' | grep -v "-" | sort | uniq > /var/www/guifaires.txt

..ara podem llistar l'arxiu escollit: /var/www/guifaires.txt


Sarg:

->Des del webmin, podrem accedir a "Servidors - Generador d'Informes d'Anàlisis de Squid" i generar un informe per visualizar les estadístiques.


Federació del proxy:

->Per que altres usuaris de proxys federats puguin conectar-se al nostre, necessitem tenir una llista actualizada dels mateixos amb les seves contrasenyes. Per això crearem un script que ho descargui periòdicament de guifi.net mitjançant el cron. El còdig de l'script és el següent:

#!/bin/sh
wget http://www.guifi.net/node/00000/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

->Hem de sustituir el "00000" pel número de nodo corresponent al nostre proxy. Ho guardem com proxypasswd.sh, li donem permisos d'execució i el copiem a una ruta dins del PATH.

chmod 755 proxypasswd.sh
mv proxypasswd.sh /usr/bin/proxypasswd.sh

->Ens queda automatizar el procés de recuperació d'usuaris, usant el cron.

crontab -e

->Ens obre un arxiu de texto on es troben les entrades dels processos periòdics del sistema. Afagim la següent línea:

54 * * * * sh /usr/bin/proxypasswd.sh

->Reiniciem el cron per que tingui en compte els canvis:

/etc/init.d/cron restart

Permetre connexions serveis de missatgeria

# Allow AIM protocols
acl AIM_ports port 5190 9898 6667
acl AIM_domains dstdomain .oscar.aol.com .blue.aol.com .freenode.net
acl AIM_domains dstdomain .messaging.aol.com .aim.com
acl AIM_hosts dstdomain login.oscar.aol.com login.glogin.messaging.aol.com toc.oscar.aol.com irc.freenode.net
acl AIM_nets dst 64.12.0.0/255.255.0.0
acl AIM_methods method CONNECT
http_access allow AIM_methods AIM_ports AIM_nets
http_access allow AIM_methods AIM_ports AIM_hosts
http_access allow AIM_methods AIM_ports AIM_domains

# Allow Yahoo Messenger
acl YIM_ports port 5050
acl YIM_domains dstdomain .yahoo.com .yahoo.co.jp
acl YIM_hosts dstdomain scs.msg.yahoo.com cs.yahoo.co.jp
acl YIM_methods method CONNECT
http_access allow YIM_methods YIM_ports YIM_hosts
http_access allow YIM_methods YIM_ports YIM_domains

# Allow GTalk
acl GTALK_ports port 5222 5050
acl GTALK_domains dstdomain .google.com
acl GTALK_hosts dstdomain talk.google.com
acl GTALK_methods method CONNECT
http_access allow GTALK_methods GTALK_ports GTALK_hosts
http_access allow GTALK_methods GTALK_ports GTALK_domains

# Allow jabber.org
acl jabber_ports port 5222 5050
acl jabber_domains dstdomain .jabber.org .marsupi.org .guifi.net
acl jabber_hosts dstdomain hermes.jabber.org
acl jabber_methods method CONNECT
http_access allow jabber_methods jabber_ports jabber_hosts
http_access allow jabber_methods jabber_ports jabber_domains

# Allow MSN
acl MSN_ports port 1863 443 1503
acl MSN_domains dstdomain .microsoft.com .hotmail.com .live.com .msft.net .msn.com .passport.com
acl MSN_hosts dstdomain messenger.hotmail.com
acl MSN_nets dst 207.46.111.0/255.255.255.0
acl MSN_methods method CONNECT
http_access allow MSN_methods MSN_ports MSN_hosts
http_access allow MSN_methods MSN_ports MSN_domains
http_access allow MSN_methods MSN_ports MSN_nets

# Permit IRC
acl IRC_ports port 6667
acl IRC_domains dstdomain .freenode.net .guifi.net
acl IRC_hosts dstdomain  irc.freenode.net
acl IRC_methods method CONNECT
http_access allow IRC_methods IRC_ports IRC_hosts
http_access allow IRC_methods IRC_ports IRC_domains

Webalizer:

->Crearem els directoris necessaris:

mkdir /var/www/webalizer/apache
mkdir /var/www/webalizer/squid

->Configurem mitjançant webmin:

https://ip-del-servidor:10000/

->A "Servidors - Webalizer - Anàlisis d'Històrics (Logs)" hem d'editar dos logs clicant sobre ells:

* /var/log/apache2/access.log
    Escriure informe en el directori:    /var/www/webalizer/apache
    Generació d'informe planificada:   Habilitat, a les hores escollides a sota ..
* /var/log/squid/access.log
    Escriure informe en el directori:    /var/www/webalizer/squid
    Generació d'informe planificada:   Habilitat, a les hores escollides a sota ..

Pool Relay, dosificar les connexions al squid (opcional)

enllaç al blog d'en Josep Mercader, a la web de guifi.net

referències

...partint d'altres experiencies i manuals com:

Eines de l'usuari