Hola lector y/o seguidor. En Cuba es muy popular el uso de squid para el montaje de servidores proxy web. Pues resulta que a veces aplicando las reglas para la autenticación de usuarios y la restricción de conexiones por IP para optimizar el uso del “ancho de vianda”, creamos una situación donde se empieza a denegar servicio a los usuarios mostrándole que el proxy está rechazando sus peticiones. Leyendo un poco la documentación y los historiales del servicio, me encuentro con que el error es el número 407 y consiste en denegación de servicio por autenticación fallida.
Manos a la obra me dispongo a comprobar que el sistema de autenticación de usuarios funciona, dado que lo hago por un enlace a un servidor LDAP la cosa es poner en la consola el mismo comando con el cual autentica squid, compruebo que esta todo correcto y que no hay problema con mi usuario y otros 3 más. Entonces noto que a los usuarios que entran a sitios sin necesidad de autenticarse también les sucede lo mismo, no tanto así a otros usuarios que están navegando en sitios de INTERNET, dicho en otras palabras: la cosa no es de los usuarios o del sistema de autenticación, sino en la configuración del propio servicio, o sea “un casco mal metido por parte mía” 😉
Como buen programador que se asegura que siempre que introduzca un cambio en el código hay que hacer una salva, restauro la anterior y el problema se soluciona, por lo cual decanto que ese “casco” fue en algo que he puesto de más. Vuelvo a consultar la documentación y es donde me percato en estas líneas que hacen lo de restringir la cantidad de hilos por usuarios en el servidor proxy está la cosa:
# Solo se permite un usuario autenticado en un IP por vez
acl maxip max_user_ip -s 1# Solo se permiten N conexiones por IP
acl limit_ip_con maxconn 50# Denegamos el uso de varios IP por el mismo usuario
http_access deny maxip# Denegamos que un IP haga mas de n peticiones
http_access deny workstation limit_ip_con
Pues un poco que entendiendo esto se deduce que si alguien tratara de autenticarse con el usuario de otro en su PC estando el otro conectado, el servidor reconoce que hay un segundo que quiere autenticarse y lo deniega. Pero ¿qué pasa cuando existen sitios a los cuales se autoriza a navegar sin autenticarse? Resulta que squid no realiza ninguna conexión sin autenticar al usuario, incluso sin tener reglas de autenticación, ya que para ello declara al usuario anónimo como dueño de esa conexión. Para los que no puedan reconocer este usuario en las trazas les menciono que en la configuración nativa de squid los usuarios se reflejan en el campo 7 con el símbolo menos ” – “. Dado que squid hace esa asignación, pues con las reglas anteriores también le establece dichos límites si fuera un usuario normal, dando lugar a que la primera PC que se conecte y haga ese tipo de petición (sitios sin autenticación) se “adueñe” de ese privilegio y hasta que no se finalice esas conexiones, nadie más podrá acceder.
La configuración anterior es recomendable para cuando quieres hacer que todos los que acceden al proxy lo hagan utilizando un usuario y con un poco de especificación más podrás denegarle el acceso a ese usuario anónimo y ya de paso garantizar que todo contenido que pase por el proxy tenga la firma de quien lo ha pedido.





Su comentario