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

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)

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í

exemple.png

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