acl url_regex na squid3 nie działa przy użyciu testowanego wyrażenia regularnego online

0

Poproszono mnie o zablokowanie dostępu do Facebooka od 8:00 do 15:00 dla prawie wszystkich użytkowników, ale oni korzystają alternatywne adresy URL Facebooka i tak uzyskać dostęp do sieci społecznościowej. To pochłania dużo naszej niskiej przepustowości i nie możemy nawet pracować. Zdecydowałem się zaprojektować wyrażenie regularne (regex) do analizowania tych adresów URL i blokowania ich . Nie chcę blokować wszystkich adresów URL na Facebooku, ale tylko alternatywy. Alternatywne adresy URL Facebooka zawierają głównie słowa szturchać lub iPhone . Kolejne to alternatywne adresy URL Facebooka zarejestrowane przez nasz serwer proxy:

m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com

Zaprojektowane wyrażenie regularne: /((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)/

Przetestowałem ten regex na https://regex101.com/ i https://www.regextester.com . Wyrażenie regularne to pasujący dla:

m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com

I jest nie pasuje dla:

www.facebook.com
m.facebook.com
mqtt.facebook.com (for purple-facebook)
graph.facebook.com
connect.facebook.com
3-edge-chat.facebook.com

Do tej pory chciałem, aby alternatywne adresy URL były blokowane, a zwykłe adresy URL na Facebooku były dozwolone. Mój regex wygląda dobrze do użycia w kałamarnicy .

Następnym krokiem jest zmodyfikowanie pliku /etc/squid3/squid.conf przez dodanie nowego acl wskazującego plik zawierający wyrażenie regularne:

acl facebook dstdom_regex "/etc/squid3/acl/facebook" //The file contains the regex
http_access deny pass facebook

Kiedy uciekam squid3 -k parse w celu sprawdzenia pliku konfiguracyjnego otrzymuję błędy:

2017/09/22 11:12:26| Processing: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| squid.conf line 78: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| aclParseRegexList: Invalid regular expression '((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)': Invalid preceding regular expression
2017/09/22 12:39:33| Warning: empty ACL: acl facebook dstdom_regex "/etc/squid3/acl/facebook"

Oczywiście parser squid3 taguje mój acl jako źle , ale już testowałem online i dobrze było z niego korzystać. Również mówi, że acl jest pusty. Co to znaczy? Acl został zadeklarowany z nazwą Facebook . Jestem bardzo zdezorientowany tym.

Ophion
źródło

Odpowiedzi:

0

Problem jest w wyrażeniu regularnym. Zmieniłem wyrażenie regularne za pomocą tego: \b(iphone|prod)\b.*\.facebook\.com a teraz squid zatrzymuje adresy URL. Po bieganiu squid3 -k parse squid mówi, że nie ma problemu, a jeśli użytkownik próbuje uzyskać dostęp do alternatywnego łącza na Facebooku, takiego jak (na przykład): test.prod.facebook.com, proxy odrzuca połączenie.

Ophion
źródło