Categories
Linux sysadmin

Configurar servidor proxy en Ubuntu Linux

Instalaremos squid para permitir que servidores dentro de una red interna tengan comunicación a internet.

En esta ocasión instalaremos squid para permitir que servidores dentro de una red interna tengan comunicación a internet. Squid permite una gran cantidad de opciones y configuraciones según las politicas y necesidad de nuestra organización. En este tutorial lo configuraremos en su modo mas sencillo

Instalar squid

Squid se encuentra disponible en la lista de paquetes de Ubuntu, por lo que se puede instalar con apt

sudo apt-get update && sudo apt-get install -y squid

Configuración básica

Una vez instalado squid editaremos su archivo de configuración para permitir que los equipos en la red interna puedan utilizarlo.

Primero crearemos una copia de seguridad de este archivo para restablecer la configuración inicial por si cometemos algún error con nuestra configuración

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
sudo chmod a-w /etc/squid/squid.conf.original

Dirección IP y puerto de proxy

Por defecto squid funciona en el puerto 3128, si deseamos utilizar un puerto diferente tenemos que buscar en el archivo de configuración la entrada http_port y modificar el valor original por el puerto deseado. En el siguiente ejemplo utilizaremos el puerto 9998

http_port 9998

Si el servidor que funcionará como proxy cuenta con diferentes direcciones IP y se desea que el proxy funcione solo en una en lugar de todas, tenemos que agregar la dirección a la configuración del puerto como se muestra de la siguiente manera donde la dirección 192.168.1.120 escuchará las peticiones de los equipos internos:

http_port IP:PUERTO
http_port 192.168.1.120:9998

Control de acceso

Por defecto squid esta configurado para que solo localhost pueda utilizar el proxy, por lo que tenemos que indicarle el rango de direcciones IP que tienen autorización para utilizar este servicio

En el archivo de configuración agregaremos este rango al final de la configuración inicial.

El archivo luce similar a como se muestra a continuación:

acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)

Al final de estos valores debemos indicar las direcciones de los equipos que utilizaran squid, a continuación se muestra como agregar a los equipos en el segmento 192.168.1.0/24 los cuales agruparemos con el nombre de red_interna

acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN)
acl red_interna src 192.168.1.0/24

Ahora configuraremos que los equipos definidos en red_interna puedan utilizar el proxy agregando en la parte superior del control de acceso lo siguiente:

http_access allow red_interna

Después de esto el archivo de configuración debe lucir de la siguiente manera:

http_access allow red_interna
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

Con esto procederemos a guardar los cambios en el archivo de configuración y a reiniciar el servicio squid para ver los cambios reflejados

sudo systemctl restart squid.service

Validación

Para validar que squid esta funcionando de forma correcto podemos utilizar curl para lanzar una petición consumiendo un servicio externo de la siguiente forma

curl -v -x http://IP_PROXY:PUERTO_PROXY URL_A_CONSUMIR

En el siguiente ejemplo consultaremos la pagina principal del blog (https://nestortechtips.com) utilizando el proxy recién configurado

curl -v -x http://192.168.1.120:9998 https://nestortechtips.com

*   Trying 192.168.1.120:9998...
* TCP_NODELAY set
* Connected to 192.168.1.120 (192.168.1.120) port 9998 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to nestortechtips.com:443
> CONNECT nestortechtips.online:443 HTTP/1.1
> Host: nestortechtips.online:443
> User-Agent: curl/7.68.0
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 Connection established

Leave a Reply

Your email address will not be published. Required fields are marked *