ACL i http access
ACL (Access control list) #
- Defineix les condicions a comprovar per cada petició. Es fan servir després a les regles de control com http_access. L’ordre en que les definim no te importància.
acl [nom de la llista] [tipus] [components de la llista]
- Ex: acl localnet src 172.16.100.0/28
acl hosts_permesos src -i "/etc/squid/llistes/permesos"
acl sites_prohibits url_regex facebook.com twitter.com
- El paràmetre -i permet ignorar majúscules i minúscules.
- Es pot fer servir un fitxer per a posar els paràmetres (un per a cada línia). Caldrà posar el nom de fitxer amb la ruta entre cometes.
acl hosts_permesos src -i "/etc/squid/llistes/permesos"
(al fitxer permesos hi hauria una llista de ip’s, una per cada línia, amb els hosts permesos)
Tipus de llistes de control d'accés (ACL) #
Tipus a les ACL: IP’s origen i destí #
- Per mirar adreces IP d’origen o destí (src, dst).
acl aclname src ip-address/netmask ... # adreça IP del client (src=source=origen)
acl aclname src addr1-addr2/netmask ... # Igual però amb un rang d'adreces
acl aclname dst ip-address/netmask ... # Adreça IP obtinguda de la URL de destí (dst=destí)
- dstdomain: Filtra pel domini de destinació.
Tipus a les ACL: Horaris #
Per comprovar un horari:
acl aclname time [day-abbrevs] [h1:m1-h2:m2] # Dies i hora a comprovar
- Abreviatures:
- S - Sunday, M - Monday, T - Tuesday, W - Wednesday, H - Thursday, F - Friday, A - Saturday
- h1:m1 ha de ser menor que h2:m2
Expressions regulars a la URL i el PATH #
- Per buscar una expressió dintre la URL:
acl aclname url_regex [-i] ^http:// ... # Expressió regular que es busca dintre la URL completa
acl aclname urlpath_regex [-i] \.gif$ ... # Expressió regular que es busca només dintre el camí de la URL
- Per a més informació de les expressions regulars (RegEx) i prova: https://regexr.com/
Altres tipus d’ACL #
acl aclname port 80 70 21 0-1024... # Port de destí de la petició
acl aclname proto HTTP FTP ... # Protocol de la petició
acl aclname method GET POST ... # Métode de la petició HTTP (GET, POST, HEADER...)
acl aclname browser [-i] regexp ... # Comprova el nom del navegador client
Regles de control d’accés (http_access) #
- Totes les acl que apareguin s’han de complir (AND). Només que falli una, no s’executa la regla. Si la regla s’executa, no es mira cap regla més (com a iptables).
- Es pot negar una acl amb el símbol !
- Si es vol fer OR (o una acl o l’altra) s’ha de duplicar la regla (en l’exemple, dues acl de tipus src):
http_access allow xarxa_profes
http_access allow xarxa_alumnes
http_access allow xarxa_alumnes xarxa _profe <--AIXí NO>
Depurar regles i acl #
- Per saber quina regla es compleix, podeu activar:
debug_options ALL,1 28,2
(Activar secció 28=ACL’s, nivell de detall 2)
- Es veurà quina regla es compleix. Cal desactivar aquestes opcions de LOGS un cop posem el proxy en producció real, ja que consumeix molts recursos.
- Les seccions que podem activar són: https://wiki.squid-cache.org/KnowledgeBase/DebugSections
Exemples #
1 #
- Permetre accedir si "ets el jefe" O (OR) "vas a webs permeses"
- Si vas a una web fora de les permeses i no ets jefe, et denega (última regla).
-Només que es compleixi una ja es fa un allow:
http_access allow ip_jefe
http_access allow web_permesa
http_access deny all
2 #
-
Permetre accedir si "ets el jefe" Y (AND) "vas a una web permesa"
-
Has de ser jefe i anar a web permesa per navegar.
-
S'han de complir les dues condicions!
http_access allow ip_jefe web_permesa
http_access deny all
3 #
- Es vol que el jefe pugui accedir sense restriccions (cap ni una) a internet. Hi ha uns quants llocs web permesos per a qualsevol persona i a qualsevol hora. No es permet l'accés als empleats a webs prohibides durant l'horari de treball, però si en horari de pausa.
acl pc_jefe src 192.168.0.10
acl paraules_prohibides url_regex sex porn culo weapon chat
# Paraules excepcions escrites al fitxer amb la ruta que hem indicat
acl paraules_excepcions url_regex "/etc/squid3/acl/paraules_excepcions.acl"
acl xarxa_local src 192.168.0.10/255.255.255.0 # Identificador de xarxa local
acl pcs_empleats src 192.168.0.15-192.168.0.20 # rang de Ips ordinadors dels empleats
acl horari_pausa time MTWHF 14:00 15:00 # Horari de la pausa
http_access allow pc_jefe # Permet la petició origen ip del pc del jefe
# Permet la petició si la URL conté una paraula excepció i
#a més la petició prové de la xarxa local
http_access allow paraules_excepcions xarxa_local
# Denega la petició si la URL conté una paraula prohibida i a més la petició
# prové del pc d'un empleat i NO és horari de pausa
http_access deny paraules_prohibides pcs_empleats !horari_pausa
http_access allow xarxa_local # Permet la petició vé d'una ip de xarxa local
http_access deny all # Sempre està i denega qualsevol petició si s'arriba aquí
acl horari time MTWHF 09:00-17:00
acl allowed_domains dstdomain .vallbona.cat
acl blocked_sites dstdomain .blocked.com
acl localnet src 192.168.1.0/24
http_access allow localnet horari allowed_domains
http_access deny blocked_sites
http_access deny !horari
http_access deny all