Вы находитесь на странице: 1из 8

Instalar y Configurar un servidor Proxy + Extras

Anuncios Google

Curso Martillero Pblicowww.learninggroup.cl - Dirigido a Emprendedores Actividad Rentable e Independiente Antes que nada les comento, a modo de advertencia, que esta no es la forma mas indicada, ni la mas segura, ni la mas eficiente para montar un servidor. Solo decid hacerlo aprovechando los materiales que tenia (hardware / software) para probar, aprender y compartir con ustedes. Les comento que hace un tiempo que vivo en un pueblo en el cual la mejor conexin (en cuanto a precio/calidad) es de 256K y adems tengo montada una pequea red para compartir internet con algunos vecinos. Por lo tanto, haba das en los cuales navegar por internet era imposible. Por esta misma razn decid montar un servidor Proxy Cach. Qu hace un Proxy Cach? Bueno, bsicamente lo que hace es almacenar en una cache los/alguno de los contenidos de los sitios web, para que estn disponibles en el servidor de Proxy (en este caso es un servidor local). Con esto se logra que no se necesite descargar desde internet todo el contenido de un sitio web cada vez que un cliente accede al mismo. Sino que esos contenidos (imagenes, videos, etc) se descargan la primera vez al cache del servidor y luego son mostrados desde el servidor local sin tener que descargarlos nuevamente desde internet. Esto acelera mucho la navegacin y reduce muchsimo el consumo de ancho de banda. Como funciona? Simple, todos los clientes de la red local acceden al servidor Proxy en lugar de acceder directamente a internet, el servidor se encarga de procesar las pginas solicitadas por los clientes y de regresarles la informacin que solicitaron de una forma eficiente. Como se hace? Como ya dije antes, esta no es la forma adecuada, pero les puede servir para aprender y hacer pruebas. Primero que nada se necesita alguna compu libre para utilizarla como servidor y acceso total a la red (ser propietario de un router es fundamental) Ingredientes? Para hacerlo he utilizado: -Servidor: Pentium IV / 4GB en disco / 1GB de ram / 1 placa de red on-board. -Router: Marca Pichichu con soporte para wireless. -Distribucion GNU/Linux: Debian Squeeze. -Tiempo. Es necesario que sea en Linux? En realidad se puede hacer en cualquier SO y sin tantas complicaciones. Ya que existe software mas amigable y preconfigurado para hacer esto con tan solo apretar dos botones. En mi caso, decid hacerlo con un sistema Debian Squeeze porque es lo que uso desde hace casi diez aos. Adems podemos instalar un sistema base en Debian lo suficientemente liviano para no ocupar tanto espacio en disco y para no consumir recursos en cosas que no necesitamos. Sin contar que configurando las cosas a mano siempre se llega a un resultado final mucho mas pulido y preciso (y aprendiendo un montn de cosas).

Bueno, para empezar he decidido realizarlo de esta manera: Nuestro router que hace de Punto de Acceso a internet solo va a permitir acceso a la WAN a nuestro servidor. El servidor va a compartir su conexin a internet a los dems clientes conectados a la LAN. Para esto montaremos un pequeo firewall en el servidor. El servidor adems va a redirigir todas las peticiones de acceso web al proxy para reducir el consumo de ancho de banda, va a denegar el acceso a otros servicios como P2P, Clientes Torrents, Msn. Por otro lado se crearan dos subredes, una contar con acceso total a la red y la otra con un acceso limitado. La subred con acceso total ser utilizada por el servidor y por los clientes que nosotros decidamos. Nuestra red puede ser 192.168.1.0/24 en la cual vamos a tener dos subredes: Red con acceso total: 192.168.1.0/26 Mascara de subred: 255.255.255.192. Rango de IP's: 192.168.1.0 192.168.1.63 Red con acceso limitado: 192.168.1.128/25 Mascara de subred: 255.255.255.128 Rango de IP's: 192.168.1.128 192.168.1.255 En la cual tendremos 2 IP's reservadas: 192.168.1.1 para el Servidor 192.168.1.2 para el Router Para asignar las IP's podemos utilizar el servidor DHCP de nuestro router, pero para hacerlo mas divertido utilizaremos un servidor DHCP que instalaremos y configuraremos en nuestro servidor. Tambin instalaremos un servidor DNS en el servidor y un servidor SSH para acceder al servidor de forma remota.

Instalacin del SO: Desde el menu de instalacin de Debian elegimos la opcin Expert Install con esto podemos saltear o agregar distintas fases de instalacin para obtener un sistema mas comodo. Lo recomendado es solo tener un sistema base (Sin servidor X y sin entorno de escritorio) y despues agregar lo que necesitemos. Una instalacin mnima de Debian solo debera ocupar unos 400-500mb en disco. Configuracin del Router: Esto vara de router en router. Pero no creo que tengan problemas en hacer lo siguiente. Primero configuramos el router para que su IP sea 192.168.1.2 Podra ser en: Network LAN IP Address 192.168.1.2 Segundo seteamos el firewall del router para que solo permita acceder a la WAN a nuestro servidor. Podemos establecer una regla por MAC y por IP. Para saber la MAC del servidor solo ponemos el comando ifconfig eth0 | grep Hwaddr (cambiando eth0 por nuestra interfaz de red). Por lo tanto el router solo debera permitir el acceso a internet al host con IP 192.168.1.1y con la MAC de nuestro servidor. Por ltimo desactivamos el servidor DHCP del router, ya que vamos a montar uno en el servidor. Puede estar en : Advanced Settings DHCP Disable Configurando la Red del servidor: Luego de instalar configuraremos los parmetros de red del servidor. Para eso nos vamos a modificar el archivo de configuracin de la red: nano /etc/network/interfaces Nos deberia quedar as: auto lo eth0

iface lo inet loopback iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.2 Donde address es la ip statica de nuestro servidor y el gateway es nuestro router. Lo guardamos con Ctrl+x y reiniciamos el demonio de red: ifconfig eth0 down /etc/init.d/networking restart Instalacin del servidor DHCP Para que los clientes que se conecten a la red local no necesiten configurar manualmente los datos de conexin es necesario que exista un servidor DHCP que asignar de forma automtica una IP, un Gateway, Servidor DNS y la Mascara de Red. Como deshabilitamos el servidor DHCP del router, vamos a instalar uno en el servidor. Hay varias alternativas yo utilic udhcp. Para instalarlo solo ejecutamos lo siguiente: apt-get install udhcpd Luego configuramos el servidor dhcp editando el archivo /etc/udhcp.conf consiguiendo que los clientes que se conecten sean asignados a la red limitada y estableciendo los clientes que formarn parte de la red con acceso libre. Nos debera quedar as: start 192.168.1.128 # inicio del rango de IP's dinamicas end 192.168.1.254 # fin del rango de IP's dinamicas opt dns 192.168.1.1 192.168.1.1 # Servidores de nombre de dominio opt router 192.168.1.1 # Gateway apuntando a nuestro servidor Tambien podemos hacer que se asigne una ip estatica a nuestra computadora (que por conveniencia va a formar parte de la red libre). Por ejemplo:. static_lease xx:xx:xx:xx:xx:xx 192.168.1.60 # solo cambiamos las x por la MAC de nuestra PC Guardamos los cambios y abrimos el archivo /etc/default/udhcp y comentamos la linea que dice: DHCPD_ENABLED="no" Guardamos y reiniciamos el demonio: /etc/init.d/udhcp restart Instalacin del DNS Este paso es prcticamente intil, pero necesario. En realidad podramos haber seteado los DNS en la configuracin del servidor DHCP. Pero ya que estamos vamos a instalar un DNS que redirija las peticiones al DNS utilizado por el router (nicamente para jorobar). Para esto vamos a utilizar Bind9 apt-get install bind9 Luego lo configuramos para que consulte al dns brindado por nuestro proveedor de internet. Esta informacion la podemos obtener desde el router. Ej: Setup Network WAN Anotamos las IP's de los DNS que aparecen ah y las ponemos en el archivo /etc/bind9/named.conf.options Debera quedar as (reemplazando DNS1 y DNS2 por las IP's correspondientes): options { directory "/var/cache/bind"; forwarders { DNS1; DNS2; }; auth-nxdomain no; listen-on-v6 { any; };

}; Guardamos y reiniciamos el servidor. /etc/init.d/bind9 restart Nota: Si quieren pueden poner como dns al router. En ese caso sera 192.168.1.2 Instalacin del servidor Proxy Primero que nada debemos instalar un servidor proxy. Para eso utilizaremos Squid: apt-get install squid Ahora debemos configurarlo. Podemos encontrar el archivo de configuracion de Squid en /etc/squid/squid.conf. Si lo abrimos, veremos todas las opciones de configuracion de squid con cada una de sus descripciones en los comentarios. El archivo en si es largo y pesado para trabajar sobre el, asi que vamos a crear uno desde cero. Primero renombramos el archivo de configuracion (es preferible tenerlo a mano ya que contiene informacion muy util): mv /etc/squid/squid.conf /etc/squid/squid.old Creamos uno nuevo en el cual aadiremos nuestra configuracion nano /etc/squid/squid.conf Empecemos: Necesitamos que squid trabaje de forma "transparente", es decir que no va a requerir a los clientes ningn tipo de configuracin en sus navegadores. Por lo que cuando los clientes accedan a un determinado sitio, el servidor va a redirigir esa informacion al puerto del Squid de forma automatica. En este caso utilizaremos el puerto 3128 para nuestro proxy transparente. Para eso aadimos lo siguiente al archivo de configuracin: http_port 192.168.1.1:3128 transparent Aadimos el tamao de cache en ram: cache_mem 64 MB cache_swap_low 90 cache_swap_high 95 Seteamos el tamao de la cache en disco. En este caso utilizaremos 512mb y solo guardaremos archivos con un maximo de 4194240KB cache_dir aufs /var/spool/squid 512 16 256 maximum_object_size 4194240 KB Definimos la ruta de los archivos donde se almacenarn los logs: cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log Definimos la taza de refresco de los archivos en cach (el tiempo que estarn disponibles en el servidor antes de volverse a descargar): # Paquetes Debian y RedHat 1 dia refresh_pattern -i .deb$ 1440 100% 1440 refresh_pattern -i .rpm$ 1440 100% 1440 # Actualizaciones de windows 10 a 20 dias refresh_pattern -i .cab$ 14400 80% 28800 # Ejecutables 10 a 30 dias refresh_pattern -i .exe$ 14400 80% 43200 # Imagenes minimo 1 dia maximo 3 antes de descargar refresh_pattern -i .gif$ 1440 80% 4320 refresh_pattern -i .tiff?$ 1440 80% 4320

refresh_pattern -i .bmp$ 1440 80% 4320 refresh_pattern -i .jpe?g$ 1440 80% 4320 refresh_pattern -i .xbm$ 1440 80% 4320 refresh_pattern -i .png$ 1440 80% 4320 refresh_pattern -i .wrl$ 1440 80% 4320 refresh_pattern -i .ico$ 1440 80% 4320 refresh_pattern -i .pnm$ 1440 80% 4320 refresh_pattern -i .pbm$ 1440 80% 4320 refresh_pattern -i .pgm$ 1440 80% 4320 refresh_pattern -i .ppm$ 1440 80% 4320 refresh_pattern -i .rgb$ 1440 80% 4320 refresh_pattern -i .ppm$ 1440 80% 4320 refresh_pattern -i .rgb$ 1440 80% 4320 refresh_pattern -i .xpm$ 1440 80% 4320 refresh_pattern -i .xwd$ 1440 80% 4320 refresh_pattern -i .pict?$ 1440 80% 4320 # Video minimo 10 dias, maximo 30 refresh_pattern -i .mov$ 14400 80% 43200 refresh_pattern -i .mpe?g?$ 14400 80% 43200 refresh_pattern -i .avi$ 14400 80% 43200 refresh_pattern -i .qtm?$ 14400 80% 43200 refresh_pattern -i .viv$ 14400 80% 43200 refresh_pattern -i .swf$ 14400 80% 43200 refresh_pattern -i .flv$ 14400 80% 43200 # Sonido idem que video refresh_pattern -i .wav$ 14400 80% 43200 refresh_pattern -i .aiff?$ 14400 80% 43200 refresh_pattern -i .au$ 14400 80% 43200 refresh_pattern -i .ram?$ 14400 80% 43200 refresh_pattern -i .snd$ 14400 80% 43200 refresh_pattern -i .mid$ 14400 80% 43200 refresh_pattern -i .mp2$ 14400 80% 43200 refresh_pattern -i .mp3$ 14400 80% 43200 refresh_pattern -i .ogg$ 14400 80% 43200 #Default refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 Establecemos las reglas de acceso: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet1 src 192.168.1.128/25 # Red con pools de retardo acl localnet2 src 192.168.1.0/26 # Red sin pools de retardo acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT

http_access allow manager localhost cachemgr_passwd entraralcgi all http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localnet2 http_access allow localhost http_access deny all Y por ltimo vamos a controlar el ancho de banda para las distintas redes. En mi caso puse una subred sin limite de descarga y otra con un limite de 10 KiB por segundo (si, es poco pero mi conexion no es la mejor). Para esto vamos a utilizar 2 Delay Pools de squid: delay_pools 2 Definimos el primer delay para la red ilimitada. Si se fijan arriba se darn cuenta que definimos en "localnet1" y "localnet2" nuestras subredes, entonces quedara algo as: delay_class 1 2 # Primer pool de retardo de clase 2 delay_parameters 1 -1/-1 -1/-1 # El -1/-1 nos dice que no limita el ancho de banda delay_access 1 allow localnet2 # Asignamos la red 2 al pool de retardo Para la otra subred ponemos lo siguiente: delay_class 2 2 # Segundo pool de retardo de clase 2 delay_parameters 2 10000/10000 10000/10000 # Se le asigna 10000 Bytes por segundo por cada 10000 Bytes descargados delay_access 2 allow localnet1 # Asignamos la red 1 al pool Guardamos el archivo /etc/squid/squid.conf e iniciamos el servidor squid: /etc/init.d/squid restart. Compartiendo la conexion a internet Hasta ahora solo el servidor puede aceder a internet, asi que vamos a compartir nuestra conexion con los clientes de la LAN. Tambien vamos a redireccionar el trafico dirigido al puerto 80 (HTTP) al 3128 (el puerto de nuestro Proxy). Y ya que estamos vamos a cerrar los dems puertos para que los clientes de la red limitada no puedan utilizar programas P2P o clientes Torrent. Para esto vamos a setear unas cuantas reglas en iptables en un script que crearemos nosotros. Por ejemplo: "/etc/firewall" nano /etc/firewall Agregamos lo siguiente para limpiar las reglas existentes: iptables -F iptables -X iptables -Z iptables -t nat -F Permitimos el acceso a "todo" por defecto (luego iremos puliendo esto): iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT Aceptamos conexiones locales en la interfaz lo y las conexiones de la red local (siempre cambien eth0 por su interfaz de red):

iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT Ahora redirigimos las peticiones http a nuestro proxy: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Aceptamos las solicitudes al puerto 443 (ssl) para permitir conexiones cifradas (https, msn, etc..) iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 443 -j ACCEPT Podemos habilitar el puerto utilizado por el msn para la red limitada. iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 1836 -j ACCEPT Permitimos SSH iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p udp --dport 22 -j ACCEPT Aceptamos las consultas de DNS de la red local iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p udp --dport 53 -j ACCEPT Puertos para Samba y Netbios iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 139 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 445 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 1836 -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 1000 -j ACCEPT Denegamos el resto de los servicios para la red limitada iptables -A FORWARD -s 192.168.1.128/25 -i eth0 -j REJECT Enmascaramos iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Guardamos el archivo y le damos permisos de ejecucin: chmod +x /etc/firewall Ahora agregamos la siguiente linea al archivo /etc/rc.local para que nuestro script se ejecute al inicio de forma automtica. Nos deberia quedar as: sh /etc/firewall exit 0 Nota: Tambien pueden establecer reglas con filtrado de IPs y MAC para incrementar la seguridad. Hay muchisima informacion sobre iptables dando vueltas en el mundo (google.com), solo es cuestin de buscar y ponerle ganas. Instalacin del servidor SSH Para no tener que estar frente al servidor podemos instalar un servidor ssh para administrarlo de forma remota y de paso podremos recuperar el monitor del servidor. Para esto instalamos OpenSSh-server: apt-get install openssh-server Luego lo configuramos para que escuche en el puerto 22, para eso editamos el archivo /etc/ssh/sshd_config.

Guardamos y reiniciamos el servidor ssh: /etc/init.d/ssh restart Ahora podemos acceder al servidor desde nuestra PC ejecutando el comando: ssh 192.168.1.1 -l root -X Y bueno, eso sera todo. Como ya les dije, esta no es la forma adecuada de hacerlo. Muchos pasos son innecesarios ya que un buen router puede hacerlos sin problemas. Pero les puede servir para aprender algo, incluso pueden ocuparlo para montar un servidor que se ajuste a sus necesidades. Acepto comentarios y sugerencias. Los comentarios que no esten relacionados con el post van a ser borrados.

Вам также может понравиться