Está en la página 1de 5

Contenido

Servidor Proxy.............................................................................................................................2
Squid............................................................................................................................................3
Instalar un servidor proxy.............................................................................................................3
Servidor Proxy
Un proxy, o servidor proxy, en una red informática, es un servidor, programa o dispositivo, que
hace de intermediario en las peticiones de recursos que realiza un cliente (A) a otro servidor
(C). Por ejemplo, si una hipotética máquina A solicita un recurso a C, lo hará mediante una
petición a B, que a su vez trasladará la petición a C; de esta forma C no sabrá que la petición
procedió originalmente de A. Esta situación estratégica de punto intermedio le permite ofrecer
diversas funcionalidades: control de acceso, registro del tráfico, restricción a determinados
tipos de tráfico, mejora de rendimiento, anonimato de la comunicación, caché web, etc.
Dependiendo del contexto, la intermediación que realiza el proxy puede ser considerada por
los usuarios, administradores o proveedores como legítima o delictiva y su uso es
frecuentemente discutido.

Squid
Squid es un servidor proxy para web con caché. Es una de las aplicaciones más populares y de
referencia para esta función, es un desarrollo en software libre publicado bajo licencia GPL.
Entre sus utilidades está la de mejorar el rendimiento de las conexiones de empresas y
particulares a Internet guardando en caché peticiones recurrentes a servidores web y DNS,
acelerar el acceso a un servidor web determinado o añadir seguridad realizando filtrados de
tráfico.

Instalar un servidor proxy


En Fedora, el paquete squid provee Squid Caching Proxy. Ejecute rpm -q squid para ver si el
paquete squid está instalado. Si no está instalado, ejecute el siguiente comando como usuario
root para instarlo:

# yum install squid

Cuando SELinux esta habilitado, squid se ejecuta confinado por defecto. Los procesos
confinados se ejecutan en su propio dominio, y están separados de otros procesos confinados.
Si un proceso confinado es comprometido por un atacante, dependiendo de la configuración
de políticas de SELinux, los accesos a recursos del atacante y los posibles daños que pueda
causar son limitados. El siguiente ejemplo demuestra el procesos squid ejecutándose en su
propio dominio. Este ejemplo asume que el paquete squid esta instalado:

Ejecute getenforce para confirmar que SELinux esta corriente en modo obediente:

$ getenforce
Enforcing
El comando getenforce retorna Enforcing cuando SELinux está corriendo en modo obediente.
Ejecute service squid start como usuario root para iniciar squid:

# service squid start


Iniciando squid:
[ OK ]
Ejecute ps -eZ | grep squid para ver el proceso squid:
$ ps -eZ | grep squid
unconfined_u:system_r:squid_t:s0 2522 ? 00:00:00 squid
unconfined_u:system_r:squid_t:s0 2524 ? 00:00:00 squid
unconfined_u:system_r:squid_t:s0 2526 ? 00:00:00
ncsa_auth
unconfined_u:system_r:squid_t:s0 2527 ? 00:00:00
ncsa_auth
unconfined_u:system_r:squid_t:s0 2528 ? 00:00:00
ncsa_auth
unconfined_u:system_r:squid_t:s0 2529 ? 00:00:00
ncsa_auth
unconfined_u:system_r:squid_t:s0 2530 ? 00:00:00
ncsa_auth
unconfined_u:system_r:squid_t:s0 2531 ? 00:00:00 unlinkd

El contexto SELinux asociado con el proceso squid es unconfined_u:system_r:squid_t:s0. La


segunda parte del contexto, squid_t, es el tipo. El tipo define el dominio para el proceso y tipos
de archivos. En este caso, el proceso squid está corriendo en el dominio squid_t.
La política SELinux define que procesos se ejecutan en dominios confinados, como por ejemplo
squid_t, interactua con archivos, otros procesos y el sistema en general. Los archivos deben ser
etiquetados correctamente para permitir a squid el acceso a ellos.

Cuando /etc/squid/squid.conf ha sido configurado de modo que squid escuche sobre un


puerto diferente que los TCP predeterminados (3128, 3401 o 4827), el comando semanage
port debe ser utilizado para agregar el número de puerto requerido a la política de
configuración de SELinux. El ejemplo siguiente enseña cómo configurar a squid para que
escuche sobre un puerto que no ha sido definido inicialmente en la configuración de políticas
de SELinux para squid, y como consecuencia de esto, squid no puede iniciarse. Además,
nuestro ejemplo demuestra como configurar luego el sistema SELinux para permitir
que squid pueda escuchar exitosamente sobre un puerto no estándar que aún no haya sido
definido en la política. Nuestro ejemplo presupone que el paquete squid se encuentra
instalado. Ejecute cada comando como usuario root:

Ejecute service squid status para confirmar que squid no se esta ejecutando:


# service squid status
squid está parado
Si la salida es diferente, ejecute service squid stop para detener el proceso:
# service squid stop
Parando squid: [ OK
]

Ejecute semanage port -l | grep -w squid_port_t para ver los puertos que SELinux permite
a squid escuchar:
semanage port -l | grep -w -i squid_port_t
squid_port_t tcp 3128, 3401, 4827
squid_port_t udp 3401, 4827
Edite el archivo /etc/squid/squid.conf como usuario root. Configure la opción http_port para
que liste un puerto que no esté configurado en la política de SELinux para la configuración
de squid. En este ejemplo , squid es configurado para escuchar en el puerto 10000:

# Squid normally listens to port 3128


http_port 10000
Ejecute service squid start para iniciar squid:
# service squid start
Inciando squid: ....................
[FALLÓ]
También, la siguiente negación SELinux es registrada en /var/log/messages:
localhost setroubleshoot: SELinux is preventing the squid
(squid_t) from binding to port 1000. For complete SELinux
messages. run sealert -l 97136444-4497-4fff-a7a7-c4d8442db982
Para que SELinux permita a squid escuchar el puerto 10000, que es usado en este ejemplo, es
requerido el siguiente comando:
# semanage port -a -t squid_port_t -p tcp 10000
Ejecute service squid start nuevamente para iniciar squid y tener a este escuchando en el nuevo
puerto:
# service squid start
Iniciando squid:
[ OK ]
Ahora que SELinux ha sido configurado para permitir que squid escuche sobre un puerto TCP
no estándar (TCP 1000 en nuestro ejemplo), squid se inicia exitosamente en tal puerto.

También podría gustarte