Servidor Naylamp, un firewall/proxy implementado por un novato en Linux (1).


Aquí va una serie de no sé cuantas partes que resumen lo que me tomó implementar un firewall proxy.

El primer paso lógicamente fue elegir la maquina que iba a convertirse en este servidor. Ya tenía en la mira el IBM que cumplía a medias esta función (firewall/proxy) ya que el SQUID se colgaba cada dos días, seguramente mal configurado. No me miren, así me lo dejaron unos expertos, que seguramente por el apuro no consideraron todos los detalles.

Ahora a elegir la distribución, y recordé que hacia meses, casi un año que me habían enviado un CD de Ubuntu 6.0.6, relegado entre los cachivaches de mi casa, solamente probado unos días como LiveCD y pues le había llegado la hora de ser utilizado para el bien. Eso sonó cursi :D.

Y se procedió a la instalación, esto es sencillo en Ubuntu. Excepto que la lectora del servidor había pasado a mejor vida. Tuve que sacar la grabadora de mí maquina y colocarla en el servidor para la instalación que tomo poco tiempo, no lo medí. En este enlace están los pasos para la instalación limpia, es de una versión anterior pero sirve, Los pasos para instalar el Ubuntu junto con Windows lo pueden ver en arturogoga.com. Es un artículo para pasarse completamente desde Windows a Ubuntu, según quien sea le conviene, personalmente no, porque desarrollo en Windows y no hay como hacer funcionar el SQL Server en Linux. O al menos no sé.

Yo solo instalé Ubuntu en ese servidor, y lo particioné de la siguiente manera: 15Gb para la raíz, 17Gb para home y 3Gb para intercambio. Ah y por consejo de un sitio web, que no recuerdo, colocar la partición de intercambio de manera no contigua a la raíz mejora la performance. Bueno así lo hice. Si una vez instalado quieren ver las particiones se ven con el siguiente comando:

fdisk -l


Es una ele (L) por si acaso.

Bueno terminada la instalación, donde bauticé como Naylamp a mi servidor. Empecé la dura tarea de configurar el proxy. Buscando en Google encontré este sitio: Deambulando por la red, que fue mi primera guía para configurar el proxy. En ese artículo relata como configurar un proxy transparente para evitar que otros usen emule. Comentarios aparte uso el nano para editar archivos de texto, me parece mas fácil.

Ah, otra cosa cualquier comando que afecte al sistema operativo debe ser ejecutado colocando antes sudo para tomar poderes de root (el super usuario, el que puede todo) ya que Ubuntu siempre va a iniciar como usuario normal, y esto debería ser una regla, así evitas el “oh borré el kernel”.

Los pasos los seguí religiosamente y casi funcionaron a la perfección. Digo casi porque tenía un problema para instalar algunos servicios que ahí indica el autor. Resumiendo:

1. Añadi a la listas de descargas la página http://www.ubuntu-es.org/node/9043 (en /etc/apt/sources.list) y actualicé el sistema con el siguiente comando:

aptitude update

2. Luego viene configurar las interfaces de red. Algo así como ir a Conexiones de Red en Windows XP y ponerle las IP a tus tarjetas de red. Debes editar el archivo ubicado en /etc/network/interfaces.

sudo nano /etc/network/interfaces

3. Debe quedar asi:


LAN

INTERNET


eth0

eth1

address

192.168.8.200

192.168.9.200

netmask

255.255.255.0

255.255.255.0

Gateway

192.168.9.200

192.168.1.1 (dirección del router de salida a internet)

Estas son IPs imaginarias :D.

4. Hay que fijarse que este activo el loopback en ese mismo archivo.

auto lo

iface lo inet loopback

5. Luego hay que configurar los DNS de resolución, es decir los DNS de tu salida a internet. En mi caso los archiconocidos de telefónica.

sudo nano /etc/resolv.conf

6. Y dentro del archivo:

nameserver 200.48.225.130

nameserver 200.48.225.146

7. Ya luego configurado, se procede a reiniciar la red (imagina que es un desactivar y activar una conexión de red en Windows, solo que es mas efectiva)

/etc/init.d/networking restart

8. Luego se va a instalar el xinetd que sirve para manejar lo que es redes dentro de Linux.

aptitude install xinetd

9. Instalamos el ssh, squid e iptables.

aptitude install ssh squid iptables

10. La configuración del squid viene aquí.

nano /etc/squid/squid.conf

12. La ruta del cache

cache_dir ufs /var/spool/squid 100 16 256

13. Permitir acceso a la red local

acl redlocal src 192.168.8.0/255.255.255.0


14. Lista de las IPs que tienen acceso libre, excepto webs peligrosas.

acl iplibres src “/etc/squid/iplibres”

Páginas permitidas a las demás IPs.

acl per_iprest url_regex “/etc/squid/permitidos”

16. Páginas prohibidas a todos

acl prohibidos url_regex “/etc/squid/sitiosprohibidos”

17. Lista de IPs que tienen acceso a todo.

acl superip src “/etc/squid/superip”

18. Ahora los permisos

http_access allow per_iprest

http_access allow superip

http_access allow iplibres !prohibidos

19. Bloquear mensajeria instantanea

acl ICQ url_regex –i .icq.com

acl MSN req_mime_type ^application/x-msn-messenger$

acl YAHOO url_regex .msg.yahoo.com

acl CHAT url_regex –i webmessenger .webmessenger .messenger.* messenger.yahoo

acl WEBMSN url_regex –i .webmessenger.msn.com

acl EMESS url_regex –i .e-messenger.net .webmessenger.msn.com/* iloveim.com

acl TALK url_regex –i .google.com/talk talk.google.com .google.com/talk*

20. Reglas para mensajería

http_access deny MSN

http_access deny ICQ

http_access deny YAHOO

http_access deny CHAT

http_access deny WEBMSN

http_access deny EMESS

http_access deny TALK

21. Le digo que si hay algun problema me envie un correo

cache_mgr micorreo@midominio.com

22. Le doy un nombre

visible_hostname naylamp

23. Le indico que cada siete días se rotarán los logs.

logifle_rotate 7

24. Que me muestre los errores en español.

error_directory /usr/share/squid/errors/Spanish

Y ya luego guardamos el archivo y iniciamos el squid. Bueno es la primera parte, luego en el siguiente post, continuare con lo del proxy.

1 comentarios:

rafael campoverde dijo...

loko, buena idea d eponer un tutorial de proxy, pero habla enos y ensenia mas. no explicas como es eso de las listas de ips permitidas, por la manera ke la pones imagino ke haces referencia a un archivo en el mizmo directorio que el squid.conf, pero podrias ser un poco mas tecnico?? gracias.