Probleme mit pfSense und squid(guard)



  • Guten Tag Zusammen,

    ich habe ja jz im Forum schön öfters Probleme mit PfSense + Squid + SquidGuard gelesen bzw. auch Lösungen gefunden, jedoch trifft beides
    nicht auf meine Problematik zu.

    Überblick meiner Konstilation:
    pfSense 2.0.1 release in einer VM (VMWare) mit 2 Netzwerkkarten.
    Die eine Netzwerkkarte hängt im Produktiven Lan Netzwerk (ist für die pfSense also das WAN Interface) und die 2te karte ist nur für das "Gast-Lan" zuständig (LAN interface für pfSense)
    Der Apache Server dient als php server für die sgerror php.

    Meine Schematische Darstellung:

    Zum Problem:
    Ich habe pfSense mit Captive Portal, squid und squidguard eingerichtet. Squid läuft transparent auf dem LAN interface, Blacklist ist von shallalist.de.

    Ich melde mich mit eine "GastPC" im Lan oder Wlan an und werde auf das CaptiveProtal umgeleitet wo ich erst nach eingabe des Voucher Codes Surfen kann.
    –> Funktioniert.

    Der Client darf (mit hilfe von squidguard und shallalist) laut Blacklist "porn" keine dieser Seiten aufrufen. Auch SafeSearch ist aktiv.
    Als Redirect mode ist eingestellt "int error page"
    ---> Ruft der Client eine "porn" Seite auf oder Verucht den Begriff porn zu Suchen wird dieses vom Proxy abgelehnt bzw. ist SafeSearch im zb. Google aktiv.
    Jedoch erhallte ich eine meldung das "https://IPMEINERPFSENSE:ADMINPORT/sgerror.php&url= " kann nicht zugegriffen werden...
    Ist ja Klar, ersten darf der Client das nicht aufgrund meiner Firewallregel und zweitens Steht es ja in der Config das dies nicht möglich ist. Also kommt hier mein Apache Server ins Spiel:
    Server installiert, testaufrufe ok, sgerror.php auf den apache server übernommen, testaufruf --> Zugrif OK.

    Also die ACL umgestellt auf

    Redirect mode	ext url redirect (enter URL)
    
    Redirect info	http://192.168.254.250/sgerror.php?url=401 Unauthorized access to URL [u] for client [n]
    
    Abgespeichert und SquidGuard neugestartet und siehe da: Es greifen die Filter Regeln nicht mehr und auf das SafeSearch ist deaktiviert!?!?
    
    Ich binn Jetzt schon ein weinig am Verzweifeln weil das Ganze mit einer sauberen "Fehlermeldung" nicht funktionieren will.
    Kann mir eines Sagen wo das Problem ist?
    
    Hier noch die squid.conf
    [code]# Do not edit manually !
    http_port 192.168.254.254:8080
    http_port 127.0.0.1:8080 transparent
    icp_port 0
    
    pid_filename /var/run/squid.pid
    cache_effective_user proxy
    cache_effective_group proxy
    error_directory /usr/local/etc/squid/errors/German
    icon_directory /usr/local/etc/squid/icons
    visible_hostname 192.168.254.254
    cache_mgr ADMINEMAIL
    access_log /var/squid/logs/access.log
    cache_log /var/squid/logs/cache.log
    cache_store_log none
    logfile_rotate 0
    shutdown_lifetime 3 seconds
    # Allow local network(s) on interface(s)
    acl localnet src  192.168.254.0/255.255.255.0
    uri_whitespace strip
    
    cache_mem 8 MB
    maximum_object_size_in_memory 32 KB
    memory_replacement_policy heap GDSF
    cache_replacement_policy heap LFUDA
    cache_dir ufs /var/squid/cache 100 16 256
    minimum_object_size 0 KB
    maximum_object_size 10 KB
    offline_mode off
    
    # No redirector configured
    
    # Setup some default acls
    acl all src 0.0.0.0/0.0.0.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901 54443 3128 1025-65535 
    acl sslports port 443 563 54443 
    acl manager proto cache_object
    acl purge method PURGE
    acl connect method CONNECT
    acl dynamic urlpath_regex cgi-bin ?
    acl allowed_subnets src 192.168.254.0/24 
    cache deny dynamic
    http_access allow manager localhost
    
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !safeports
    http_access deny CONNECT !sslports
    
    # Always allow localhost connections
    http_access allow localhost
    
    request_body_max_size 0 KB
    reply_body_max_size 0 deny all
    delay_pools 1
    delay_class 1 2
    delay_parameters 1 -1/-1 -1/-1
    delay_initial_bucket_level 100
    delay_access 1 allow all
    
    # Custom options
    redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf
    redirector_bypass on
    redirect_children 3
    # Setup allowed acls
    # Allow local network(s) on interface(s)
    http_access allow allowed_subnets
    http_access allow localnet
    # Default block all to be sure
    http_access deny all[/code]
    
    Dann noch die squidguard.conf (Hab zum Verkürzen hier nur meine aktiven Blacklist gepostet!:
    [code]# ============================================================
    # SquidGuard configuration file
    # This file generated automaticly with SquidGuard configurator
    # (C)2006 Serg Dvoriancev
    # email: dv_serg@mail.ru
    # ============================================================
    
    logdir /var/squidGuard/log
    dbhome /var/db/squidGuard
    
    # Ever
    time AllDay {
    	weekly * 00:00-23:59
    }
    
    # 
    dest blk_BL_porn {
    	domainlist blk_BL_porn/domains
    	urllist blk_BL_porn/urls
    	log block.log
    }
    
    # facebookblock
    dest facebook {
    	domainlist facebook/domains
    	redirect http://192.168.254.250/sgerror.php?url=403%20not%20allowed&a=%a&n=%n&i=%i&s=%s&t=%t&u=%u&a=%a&n=%n&i=%i&s=%s&t=%t&u=%u
    	log block.log
    }
    
    # Captive Portal
    dest Captive_Portal {
    	domainlist Captive_Portal/domains
    	log block.log
    }
    
    # 
    rew default_1 {
    	s@192.168.0.254@www.google.com@r
    }
    
    # 
    rew safesearch {
    	s@(google..*/search?.*q=.*)@&safe=active@i
    	s@(google..*/images.*q=.*)@&safe=active@i
    	s@(google..*/groups.*q=.*)@&safe=active@i
    	s@(google..*/news.*q=.*)@&safe=active@i
    	s@(yandex..*/yandsearch?.*text=.*)@&fyandex=1@i
    	s@(search.yahoo..*/search.*p=.*)@&vm=r&v=1@i
    	s@(search.live..*/.*q=.*)@&adlt=strict@i
    	s@(search.msn..*/.*q=.*)@&adlt=strict@i
    	s@(.bing..*/.*q=.*)@&adlt=strict@i
    	log block.log
    }
    
    # 
    acl  {
    	# 
    	default  {
    		pass !in-addr !facebook !blk_BL_porn Captive_Portal all
    		redirect http://192.168.254.250/sgerror.php?url=401 Unauthorized access to URL [u] for client [n]
    		rewrite safesearch
    		log block.log
    	}
    }
    
    Und noch 2 Screenshots der pfSense einstellungen:
    
    ACL:
    [img]http://i45.tinypic.com/2qns51g.jpg[/img]
    
    Firewall rules:
    [img]http://i50.tinypic.com/vfxr0g.jpg[/img]
    
    Ich hoffe das Ihr mir hier weiterhelfen könnt!
    
    lg
    Karli
    [/u][/code][/u]
    


  • Da ich nach wie vor mit dem Problem kämpfe möchte ich meine Frage noch einmal pushen!

    Bitte um Hilfe!

    mfg
    Karli



  • Nabend,

    was mir so aufgefallen ist, das du die Errorpage mit IP definierst obwohl du konfiguriert hast das IP in URL berboten ist.
    Aber noch zur Verständnisfrage, was verbirgt sich hinter 192.168.0.254, ist das ein WLAN Client?
    Was ist hinter der Source LANnet in der Firewall konfigiriert.

    mfg.
    Livinlight



  • OK… danke für den Hinweis! Da hat sich ein Fehler eingeschlichen! Es gibt keine 192.168.0.254! Das soll heißen 192.168.254.254!
    Ist in meiner laufenden Config bereits geändert!!

    Zu Punkt IP in URL... Dass muss ich mal ausprobieren! Danke für den Ansatz!

    mfg



  • Ähm,…bist du dir sicher das dein Regelwerk auch richtig funktioniert? Du hast Port 80 auf das Gateway, also Pfsense, freigegeben. Solltest du nicht eher den Port 3128 für deinen transparenten Proxy freigeben und Port 80 sperren?

    "Jedoch erhalte ich eine meldung das "https://IPMEINERPFSENSE:ADMINPORT/sgerror.php&url= " kann nicht zugegriffen werden...
    Ist ja Klar, ersten darf der Client das nicht aufgrund meiner Firewallregel und zweitens Steht es ja in der Config das dies nicht möglich ist."

    Bekommst du wirklich eine Meldung mit https:// am Anfang? Welcher Port ist dein Adminport? Ist dein Webzugriff (administrativ) zur Pfsense auf https:// eingestellt?

    "Als Redirect mode ist eingestellt "int error page""
    if you use 'transparent proxy', then 'int' redirect mode will not accessible.
    Aber dein Screenshot zeigt das ja eigentlich richtig.

    mfg.
    Livinlight



  • So…

    Nachdem ich ein wenig mit meiner ACL im SquidGuard herumgespielt hab ist mir irgendwie das ganze Image "geplatzt".
    Und da ich leider meine Konfig nicht gesichert hatte musste ich von Grund auf meine pfSense neu Installieren.

    Habe in diesem Zuge eine paralell Installation mit deinen Ideen auch gleich eingerichtet, Livinlight.

    Aber beide Installationen wiesen den oben genannten Fehler auf.

    Nun bin ich daraufgestossen, das mein Eintrag in der "Redirect Info" (unter Menüpunkte "Services - Proxy Filter - Common ACL") falsch war!
    Dieser darf nur```
    http://192.168.254.250/sgerror.php?url=401

    
    Lautet er so wie im Bsp. Beschrieben```
    http://192.168.254.250/sgerror.php?url=401 Unauthorized access to URL [u] for client [n] sprich werden dem Link noch andere Informationen übergeben dan reagiert der squidGuard nicht mehr!
    
    Jetzt muss ich nur noch meine sgerror.php verschönern und das ganze Passt!
    
    Danke Livinlight für deine Ideen und Lösungsansätze! BTW. Das "Hackerl" bei "Not to Allow IP addresses in URL" greift nur dann Wenn der User eine Seite Direkt im Browser aufrufen will, jedoch nicht wenn die pfSense auf die Fehlerseite umleitet!
    
    Von mir aus kann der Thread geclosed werden!
    
    mfg
    Karli[/u]
    


  • Sehr schön das du eine Lösung gefunden hast.
    Ich würde jetzt nur nochmal wissen wollen, ob du noch die gleichen Firewallregeln benutzt?
    Meiner Ansicht nach kommunizieren deine Clients nämlich nicht über Regel 4 sondern über die letzte Regel mit Webservern.

    mfg.
    Livinlight



  • hi,
    die regel nummer 4 habe ich laut deinem vorschlag abgeändert!
    Sprich i habe den port für meinen transparenten proxy freigegeben, und port 80 auf meine pfsense gesperrt!

    mfg


Log in to reply